`
yangjayup
  • 浏览: 251900 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

博客(Blog)-Roller Weblogger ,MeEclipse下搭建

阅读更多

都说roller在国外是二次开发博客系统的首选,但是下载源代码之后发现是它是基于netbeans项目结构开发的。平时用习惯了Eclipse,所以想搬到MyEclipse上面,但没有想到居然那么不容易,折腾了整整一天,才最终跑起来。网上的参考信息太少,大概都是那二三篇的转贴,全部结合起来就差不多可以解决,借此总结一下,希望用到的朋友有参考作用!

1. 准备环境

MyEclipse  6.0

JDK       1.6.0_05

Tomcat     5.5.27 (建议用5.5以上版本)

Roller      4.0.1

2. 下载Roller

Roller的主页http://roller.apache.org/ 下载最新的roller版本,目前是4.0.1,同时下载源代码包和官笔发布程序包的zip,分别为apache-roller-src-4.0.1.zipapache-roller-4.0.1.zip

下载发布程序的原因是源源代码包里有一些内容和发布包不一致,导致源代码在Eclipse中编译后在运行时会报错,因为对源代码不熟悉,所以还无法定位到错误的原因所在。另外一些配置文件只有在它官方的发布包中才有,一会要用到它。

3. 搭建项目环境

MyEclipse中新建一个Web项目,命名为rollerJ2EE环境选择1.4

解压缩roller的二个包,为了说明的方便,我们把apache-roller-src-4.0.1.zip的解压缩后目录叫做roller-src,把apache-roller-4.0.1.zip的解压缩后目录叫做roller-bin

roller-src/apps/weblogger/src/java目录下的org整个目录的源文件复制到项目中的src里面;

lib中添加jar文件。二种方法,可以从roller-src中的tools目录中逐个目录地把所有的jar文件拷贝出来,为了简单起见,还是从它的发布程序中直接拿更方便,从roller-bin中的WEB-INF/lib下面的所有jar都复制出来,放到我们的项目中的lib中去;

roller默认是使用MySQL数据库,但是lib里面缺少MySQLJDBC驱动,所以还要自己从网上下载驱动的jar,添加到WEB-INF/lib中,如果你是使用的其它数据库,同样需要手动下载它对应的驱动程序;

roller-bin中复制除了WEB-INF目录以外的所有文件,粘贴到我们项目中的WebRoot下面,这些是页面文件和一些资源文件;

复制roller-bin中的WEB-INF目录下除了classes外的所有文件到我们项目中的WEB-INF目录下,覆盖掉默认的web.xml,你还可以发现它的一些jsp文件是放在WEB-INF下面的,起到很好的保护作用,roller是基于struts2开发的;

roller-bin中的WEB-INF/classes目录中,复制除了org目录外的所有文件,到我们项目中的src里面,这些是系统的配置文件,包括了国际化资源、struts配置、log配置、数据库脚本等等。

roller还用到了邮件功能,需要把activation.jarmail.jar二个j2eejar复制到tomcatcommon/lib目录下,如果没有这一步,可能启动初始化会失败!导致应用无法正常运行。

到这里,所有的文件就已经全部搬到MyEclipse上面了,接下来要修改一些内容使用我们的项目能正常部署。

4. 修改部分内容

在我们项目的src中新建一个名称为roller-custom.properties的文件,roller采用这个扩展配置现覆盖系统的默认配置。网上有些说要把这个文件放到tomcatcommon/classes中,其实不用的,只要放在classpath中能找到就行了,所以我们把它放在我们的src目录下面,方便修改,在该文件中添加如下内容:

installation.type=auto
database.configurationType=jdbc
database.jdbc.driverClass=com.mysql.jdbc.Driver
database.jdbc.connectionURL=jdbc:mysql://localhost:3306/rollerdb?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8
database.jdbc.username=scott
database.jdbc.password=tiger
mail.configurationType=properties
mail.hostname=smtp-server.example.com
mail.username=scott
mail.password=tiger

注意database.jdbc.connectionURL这个配置后面需要带上上面编码的参数,不然安装的过程可能会出现一些乱码。修改urlusernamepassword这些,如果你有能正常使用的邮箱服务器,也填上。

创建MySQL数据库,名称为rollerdb,并指定编码为UTF-8。如果你使用的是root用户,则不用授权,如果不是,则需要为用户授权,下面是一个示例:

    

启动roller的时候它会查询数据库是否已经初始完成,如果没有,它会自动进入安装页面,引导用户进行安装,做得非常人性化。

修改部分源代码。org.apache.roller.weblogger包里面的pojos包是有问题的!刚开始的时候老是无法启动,报错提示的是JPA的一个异常,根本不知道如何解决,后来在CSDN上找到一篇文章,说是pojos这个包的源码有问题,可能跟发布包中的版本不一致,所以需要用变态一点的处理办法。

    

在我们的项目WEB-INF/lib中,找到roller-business.jarroller-web.jar(如上图所示),这二个jar其实就是我们src中的所有java文件的编译打包,为了不重复,先把roller-web.jar删除掉,然后用winrar打开roller-business.jar,删除pojos以外的其它四个包和那个WebloggerException.class。这样,其它代码可以正常编译!

下面是最终的基本结构截图(仅参考)

WeRoot目录截图
    

Src目录截图:

    

5. 其它补充说明

按照上面的步骤,项目结构就基本上正常搭建了,真是费心费力!NetBeans下面没有试过,兴许会比这个简单许多!反正都习惯Eclipse了,就都移过,后面再花些时间研读一下它的源代码,网上说是非常好的学习例子。

        Roller的系统全局配置文件是放在org.apache.roller.weblogger. org.apache.roller.weblogger.config包中的roller.properties中的。在这里能找到各项系统的配置,我们自己手动创建的roller-custom.properties是用来覆盖一些常用属性的。

        src下面的dbscripts是所有数据库的SQL脚本,apache-roller-src-4.0.1.zip中提供的脚本是不完整的!所以需要使用正式发布包的脚本,它带了数据库的初始脚本,由系统自动引导创建,还有许多版本升级的补充脚本。

        默认的log配置是用文件形式,保存在tomcat的的logs目录中,名称为roller.log的,如果你启动的过程遇到问题,请到这里去查看启动日志,分析一下异常的原因。

        roller-custom.properties中配置的邮箱主机和用户名密码等,如果无法正常连接,它初始化时会报错,但是不会影响正常启动,前提是你必须把activation.jarmail.jar这二个文件放到tomcat里面。

        在调试的过程中发现org.apache.roller.weblogger.business.WebloggerImpl类的创建方法中有加载roller-verion.properties,但是在我们的src中没有找到这个文件,原来是在roller-business.jar中包含了。好像另一个类也包含这一句启动的初始代码,如果找不到这个类,会抛出空指针Exception,同样导致整个应用启动失败。所以刚开始的时候生硬地在WebloggerImpl类中115行加载了一段异常处理代码如下:
    

        当然,如果你已经包含了roller-version.properties文件,这个异常是不会存在的!

        Roller的文档非常齐全,图文并茂,多多阅读,就可以了解它的使用方法。IBM 开发者论坛就是基于它进行开发的,的确非常强大,想了解struts2JPASpringAcegiVelocity等主流技术的都可以从这里找到示例,不过要多花些时间,从其它方面,比如结构划分、代码规范、theme切换等,都可以学习到很多东西。

        Roller Architecture(摘自网络)

Roller WebWeb and UI Layer

     Editor UI via Struts and JSPblog and feed rendering via Velocity

     Feed parsing via ROME, Blogger API via Apache XML-RPC

Roller BeansBusiness and Persistence Layer

     Hibernate/JPA for DBMSLucene for search



多多学习,愿和大家共同分享!^_^
 这里打包一个PDF文件提供下载

分享到:
评论
5 楼 lsf171028 2014-07-04  
Javakeith 写道
相当厉害!我按照LZ的配置方法,不过我的tomcat是6.X版本的!

在启动的时候出现
<0.9.7-incubating fatal user error> org.apache.openjpa.persistence.ArgumentException: The type "class org.apache.roller.weblogger.pojos.TaskLock" has not been enhanced.

LZ知道是什么原因吗?

zl能解释下吗
4 楼 cheer1226 2011-10-09  
现在时5.0版本了,我下载下来就说被损坏了,如果你的源代码还在的话,能不能把源代码发给我?谢谢了 我443257655@qq.com
3 楼 Javakeith 2010-10-19  
已解决了,删除SRC下的pojos就可以了!
2 楼 Javakeith 2010-10-19  
相当厉害!我按照LZ的配置方法,不过我的tomcat是6.X版本的!

在启动的时候出现
<0.9.7-incubating fatal user error> org.apache.openjpa.persistence.ArgumentException: The type "class org.apache.roller.weblogger.pojos.TaskLock" has not been enhanced.

LZ知道是什么原因吗?
1 楼 yangjayup 2010-08-16  

相关推荐

    roller-weblogger-5.0.0-source.zip

    在部署Roller Weblogger时,需要一个支持Java EE的服务器(如Tomcat),将项目解压至服务器的webapps目录下,配置好数据库连接参数,即可启动服务。 通过对"roller-weblogger-5.0.0-source.zip"的深入分析,我们...

    roller-weblogger.rar

    weblogging 设计比较精巧,是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑,TrackBack,提供页面模板,RSS syndication,blogroll管理和提供一个XML-RPC 接口。 最主要是其开源

    apache-roller-src

    apache-roller-src apache-roller-src apache-roller-src apache-roller-src apache-roller-src apache-roller-src apache-roller-src apache-roller-src apache-roller-src apache-roller-src

    file-roller-nautilus-3.28.1-2.el7.x86_64.rpm

    离线安装包,亲测可用

    Roller Weblogger介绍

    私有消息 管理员可以发送公共信息给所有成员 支持Sticky/Annoucement/GlobalAnnoucement 线程类型 在Java 文件中消息本地化 在用户管理中,高级成员可以使用Lucene查寻 支持RSS 2.0 + Atom(包括排序选择) ...

    apache-roller-4.0.1

    Apache Roller是著名的开源博客系统,主要用于创建、管理和发布Web日志。这个压缩包"apache-roller-4.0.1"包含了Apache Roller的第4.0.1版本,这是一个基于Java技术构建的Web应用程序。接下来,我们将深入探讨Apache...

    apache-roller-src-4.0.1.part2.rar

    apache-roller-src-4.0.1.part2.rar

    file-roller-3.28.1-4.el8.aarch64.rpm

    离线安装包,亲测可用

    apache-roller-src-4.0.1 源代码

    Apache Roller 是一个功能丰富的Web日志管理平台,它支持多用户、多博客的环境,并且完全基于Java技术实现。源代码包"apache-roller-src-4.0.1"是Roller项目的4.0.1版本的源码,对开发者来说,这是一个深入了解...

    granite-fate-roller:命运骰子辊网组件

    通常,您只想导入granite-fate-roller.js (环绕spectre.css )或granite-fate-roller-min.js (环绕spectre.min.css )。 假设您要导入granite-fate-roller.js : import {spectreStyles} from '@granite-...

    Laravel开发-roller

    在Laravel框架中,开发一个名为"roller"的项目,涉及到的是角色(Roles)和资源(Resources)的管理。这通常是指构建一个具有权限控制和数据管理功能的应用。在这样的系统中,用户可以被分配不同的角色,每个角色有...

    roller-part01

    apache-roller-srapaapache-roller-srcche-roller-srccapache-rolaapache-roller-srcpache-roller-srcler-srcapapache-roller-srcache-roller-srcapache-roller-src

    roller-part2

    apache-rollapachapache-roller-srce-roller-srcer-srcapache-rolleapacapache-roller-srche-roller-srcr-srcapache-roapache-roller-srcller-srcapache-roller-src

Global site tag (gtag.js) - Google Analytics