【BAE3.0使用系列】Java博客——Dlog4j的移植

在BAE3.0中JavaRuntime不在有任何的白名单和沙盒的限制,在本地运行良好的web应用将可以直接运行在BAE3.0的JavaRuntime中,唯一需要做的就是修改数据库的配置。本篇博客将已Java博客Dlog4j为例,介绍如何将本地的web应用移植到BAE3.0中


1.   下载Dlog4j

http://git.oschina.net/ld/dlog4j_e32/repository/archive?ref=master

解压到Dlog4j目录中

2.   在本地调试

2.1     新建工程

在eclipse中新建Dynamic Web Project工程baev3Dlog4j

2.2     拷贝代码

将Dlog4j—>src目录下的内容拷贝到工程baev3Dlog4j—>src目录下

将Dlog4jàwebapp目录下的内容拷贝到工程baev3Dlog4jàWebContent目录下

将Dlog4jàres目录下的内容拷贝到工程baev3Dlog4j—>src目录下

如下图所示

2.3     新建数据库并导入数据

在mysql新建database: baev3dlog4j

将Dlog4j–>doc–>Update_sql–>mysql_script.sql导入到baev3dlog4j中

 

2.4     修改配置

打开工程baev3dlog4j–>src–>hibernate.cfg.xml 文件

修改配置:

<property name=”dscp.url”>jdbc:mysql://localhost:3306/baev3dlog4j</property>

<property name=”dscp.username”>root</property>

<property name=”dscp.password”>root</property>

注释掉所有memcache的配置

3.   移植到bae 

3.1     创建数据库并导入数据

修改表名dlog_fck_upload_file为dlog_fck_upload_baefile因为bae的mysql对upload_file关键字敏感

3.2     修改配置

  • 修改baev3dlog4j–>src–>hibernate.cfg.xml文件中的url、username和password

<property name=”dscp.url”>jdbc:mysql://sqld.duapp.com:4050/yourdbname</property>

<property name=”dscp.username”>API Key</property>

<property name=”dscp.password”>Secret Key</property>

  • 修改baev3dlog4j–>com.liusoft.dlog4j.hbm–>core.hbm.xml

dlog_fck_upload_file改为dlog_fck_upload_baefile

  • 增加自动重连配置

由于bae的mysql不支持长连接,所以需要增加自动重连配置

  • 在baev3dlog4j–>src–>hibernate.cfg.xml 加入如下配置

<property name= “testWhileIdle” >true</property>

        <property name= “testOnBorrow” >false</property>

        <property name= “testOnReturn” >false</property>

        <property name= “validationQuery” >select 1</property>

        <property name= “validationQueryTimeout” >1</property>

        <property name= “timeBetweenEvictionRunsMillis” >30000</property>

<property name= “numTestsPerEvictionRun” >16</property>

  • 修改配置解决中文乱码问题

修改baev3dlog4j–>src–>hibernate.cfg.xml

<property name=“dscp.url”>jdbc:mysql://sqld.duapp.com:4050/yourdbname?useUnicode=true&amp;characterEncoding=utf8&amp;transformedBitIsBoolean=yes</property>

增加配置

<property name=“connection.useUnicode”>true</property>

<property name=“connection.characterEncoding”>UTF-8</property>

在baev3dlog4j—>WebContentàWEB-INFàweb.xml中加入配置

<filter>

    <filter-name>Set Web Application Character Encoding</filter-name>

    <filter-class>com.util.SetEncodeFilter</filter-class>

    <init-param>

        <param-name>defaultencoding</param-name>

        <param-value>UTF-8</param-value>

    </init-param>

  </filter>

  <filter-mapping>

     <filter-name>Set Web Application Character Encoding</filter-name>

     <url-pattern>/*</url-pattern>

 </filter-mapping>

添加类com.util.SetEncodeFilter

package com.util;


import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

public class SetEncodeFilter implements Filter {

    protected FilterConfig filterConfig = null;

    protected String defaultEncoding = null;

    /**@see javax.servlet.Filter#init(javax.servlet.FilterConfig)**/

    public void init(FilterConfig arg0) throws ServletException {

        // TODO Auto-generated method stub

        this.filterConfig = arg0;

        this.defaultEncoding = filterConfig.getInitParameter(“defaultencoding”);

    }

/**@see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)**/

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

            throws IOException, ServletException {

        // TODO Auto-generated method stub

        request.setCharacterEncoding(selectEncoding(request));

        chain.doFilter(request, response);

    }

    protected String selectEncoding(ServletRequest request) {

        return this.defaultEncoding;

    }

    public void destroy() {

        this.defaultEncoding = null;

        this.filterConfig = null;

    }

}

4.   部署到bae

导出war包并更名为root.war, 然后通过svn上传到bae

此条目发表在 未分类 分类目录。将固定链接加入收藏夹。

【BAE3.0使用系列】Java博客——Dlog4j的移植》有 1 条评论

发表评论