【第二版】Roller 3.1二次开发工程配置(添加了常见问题解决及详细步骤)
1.下载roller 3.1的源代码和
required jars(一定要下载,否则没有办法编译和运行)required jars : https://roller.dev.java.net/servlets/ProjectDocumentList?folderID=6962&expandFolder=6962&folderID=6959
2.然后在命令行中源代码的目录下面执行build all命令。
如果你的JDK环境大于1.4了,虽然可以调整兼容等级,但还是建议你使用JDK1.4,为了不改变你的原始JDK环境,可以在build.bat中加入
set JAVA_HOME=D:\j2sdk1.4.2_17\
set PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
set CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
来临时设置新jdk
3.build all过后,首先,他会生成所有的wrapper类等等,将生成的所有的类源文件(src下的)拷贝到roller源代码根目录src目录中,webapp中的内容拷贝到根目录下web中,在compile目录下的business\org\apache\roller\pojos\和business\org\apache\roller\planet\pojos\中有很多hbm.xml需要拷贝到源代码同样的目录中,还有就是将classes下的所有文件拷贝到roller的src根目录下。
其次,如果你需要覆盖一些属性,例如数据库连接配置等等,需要在src下建立一个roller-custom.properties文件,放入一些你要覆盖的配置项,例如我要连接SQL Server数据库,则这样配置
hibernate.dialect=org.hibernate.dialect.SQLServerDialect
jdbc.driverClass=com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc.connectionURL=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=roller31;User=sa;Password=
jdbc.username=sa
jdbc.password=
当然,不要忘了把相关jar包放进去。
其他配置请参考Install Guide
4.下面是建立数据库,如果你使用的SQL Server,建议你将rollerdb脚本中的text类型字段,全部改为ntext,因为SQL Server jdbc的驱动对text的支持存在bug...会有问题的。
如果你使用的tomcat 5.x,请去下载一个兼容包,用来兼容在JDK 1.4上的运行,默认配置下只可以在jdk 1.5上稳定运行。
5.建立一个Web Project,将roller3.1/src中所有文件拷贝到项目的src中,将roller3.1/web中的所有内容拷贝到项目webroot中,去掉WEB-INF目录下面lib目录中的roller-business.jar和roller-web.jar两个文件,将其他文件添加到build path中。
注意:
如果你是直接部署方式,碰到用户正确注册,但每次登陆都提示用户名密码错误(Wrong username and password combination),请修改security.xml,源代码段修改如下部分:
<
bean
id
="jdbcAuthenticationDao"
class
="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl"
>
< property name ="dataSource" >
< bean id ="dataSource" class ="org.springframework.jdbc.datasource.DriverManagerDataSource" >
< property name ="driverClassName" >
< value > net.sourceforge.jtds.jdbc.Driver </ value >
</ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=roller31;User=sa;Password= </ value >
</ property >
< property name ="username" >
< value > sa </ value >
</ property >
< property name ="password" >
< value ></ value >
</ property >
</ bean >
</ property >
< property name ="usersByUsernameQuery" >
< value > SELECT username,passphrase,isenabled FROM rolleruser WHERE username = ? </ value >
</ property >
< property name ="authoritiesByUsernameQuery" >
< value > SELECT username,rolename FROM userrole WHERE username = ? </ value >
</ property >
</ bean >
将数据源添加上去,因为我发现3.1中的设定jdbc.XX只会对roller主程序有效,对acegi无效,但是如果你是通过配置tomcat来加载的就不需要,这种情况只会发生在直接部署上面。
< property name ="dataSource" >
< bean id ="dataSource" class ="org.springframework.jdbc.datasource.DriverManagerDataSource" >
< property name ="driverClassName" >
< value > net.sourceforge.jtds.jdbc.Driver </ value >
</ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=roller31;User=sa;Password= </ value >
</ property >
< property name ="username" >
< value > sa </ value >
</ property >
< property name ="password" >
< value ></ value >
</ property >
</ bean >
</ property >
< property name ="usersByUsernameQuery" >
< value > SELECT username,passphrase,isenabled FROM rolleruser WHERE username = ? </ value >
</ property >
< property name ="authoritiesByUsernameQuery" >
< value > SELECT username,rolename FROM userrole WHERE username = ? </ value >
</ property >
</ bean >
如果你碰到了ResultSet can not re-read row data for column 1问题,请参考:
http://www.blogjava.net/TiGERTiAN/archive/2008/11/16/240794.html
至此,roller 3.1 的二次开发环境就搭好了。
等项目完成的差不多了,我会把3.1和4.0的中文国际化文件发布出来,方便大家使用。
---------------------------------------------------------
专注移动开发
Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian