JetSpeed2.1.3教程学习总结

JetSpeed2.1.3教程学习总结

我的练习环境:
JDK1.5.0_06
Tomat5.5.23
Ant1.7.1
Maven2.0.7
Eclipse3.4

JetSpeed2有两个教程:
1)教程1:Ant+Eclipse
http://portals.apache.org/tutorials/jetspeed-2-ant/01/first-steps.html
2)教程2:Maven2+Eclipse
http://portals.apache.org/tutorials/jetspeed-2/01/first-steps.html
3)
教程资源(4个压缩包):http://people.apache.org/~taylor/tutorial/
资源说明:http://portals.apache.org/tutorials/jetspeed-2-ant/references/tutorial_distribution.html
4)别人的经验,可供参考。里面也有我的一些评论。
JetExpress Tutorial Portal 笔记1-4:http://blog.fourthspace.net/category/tech/java/jetspeed/

一、两个教程的区别与联系
这两个教程第1部分(01. Custom Portal Generation)不同;第2-5部分相同(这几部分应该归教程2);第6部分(06. Next Steps)仅教程1有,但没有具体内容,只是标题。

教程1利用Ant工具,将在Eclipse中建立好的门户(jetexpress)及Porlet应用(express-demo),与jetspeed安装包打包到一起,生成自定义门户的安装包。该安装包可将自定义门户安装到目标机器,安装方法与jetspeed安装包完全一样。阅读jetexpress/build.xml可帮助理解。

教程2包括利用Maven2下载JetSpeed包及其用到的第3方包,生成门户模版,编译并发布门户,生成Porlet应用模版,编译Portlet应用,生成Eclipse工程文件并配置Eclipse环境,门户外观修饰,porlet开发。本教程需提前准备一个Tomcat。

教程1可用于自定义门户的发布打包,推荐只学第1部分,关注第6部分。
教程2可帮助理解门户、Portlet应用的组织方式和开发部署。推荐学习第1-5部分。
两教程可结合学习。

二、问题及解决
教程1比较简单,没有疑难问题。教程2的问题比较多,下面针对教程2说明。

1、开始时,由于Maven2需要下载大量的软件包,很耗时间,且可能出现下载失败,而必须重新尝试下载。
症状一:mvn时,出现如下提示。
[ERROR] BUILD ERROR
[INFO]
------------------------------------------------------------------------
[INFO] Error executing ant tasks
Embedded error: The following error occurred while executing this line:
/home/cappelc/jetspeedSCAND/jetspeed-2.1.2/src/etc/build.xml:301: The
following error occurred while executing this line:
/home/cappelc/jetspeedSCAND/jetspeed-2.1.2/src/etc/build.xml:306: The
following error occurred while executing this line:
/home/cappelc/jetspeedSCAND/jetspeed-2.1.2/src/etc/build.xml:500:
java.lang.ClassCastException: org.apache.maven.usability.MojoFailureExceptionDiagnoser
[INFO]
症状二:在下载某个包(如:standard-1.1.2.tar)时,长时间没反应,但没有死机。
症状三:提示包无法下载,如:mail-1.3.2.tar

解决方法一:
预先下载repository.zip,将其放到Maven2的repository目录。
repository.zip地址:http://www.bluesunrise.com/maven2/repository.zip
解决方法二:
单独下载某个包,并更新到maven2的repository,注意版本。
解决方法三:
重新执行mvn命令,让其尝试重新下载。

2、创建目录结构
Jetspeed Tutorial根目录定义为c:/JetspeedTraining,以下简写为/JetspeedTraining
创建/JetspeedTraining目录。
创建/JetspeedTraining/tomcat-express目录,放tomcat5.5。
创建/JetspeedTraining/maven/repository目录,放repository.zip。
创建/JetspeedTraining/resources目录,放resources.zip。
创建/JetspeedTraining/database目录,/JetspeedTraining/database/jetexpress目录不能预先创建,否则会出现数据库无法创建的错误。
创建/JetspeedTraining/workspace目录,作为工作目录

3、拷贝tomcat5.5到目录/JetspeedTraining/tomcat-express。
预先创建目录<Tomcat_home>/shared/lib,并放入mysql-connector-java-5.0.4.jar,因为maven -P tomcat,min不会拷贝这个驱动文件。

4、推荐用MySQL数据库,并做如下配置。

在MySQL建立数据库jetexpress2。

对settings.xml做如下修改 :(将derby数据库部分注释掉)
<!-- MySQL embedded database properties -->
<org.apache.jetspeed.production.jdbc.drivers.path>C:/JetSpeed_software/mysql-connector-java-5.0.4.jar</org.apache.jetspeed.production.jdbc.drivers.path>
<org.apache.jetspeed.production.database.default.name>mysql</org.apache.jetspeed.production.database.default.name>
<org.apache.jetspeed.production.database.url>jdbc:mysql://192.168.0.1:3306/jetexpress2</org.apache.jetspeed.production.database.url>
<org.apache.jetspeed.production.database.driver>com.mysql.jdbc.Driver</org.apache.jetspeed.production.database.driver>
<org.apache.jetspeed.production.database.user>root</org.apache.jetspeed.production.database.user>
<org.apache.jetspeed.production.database.password>password</org.apache.jetspeed.production.database.password>

5、注意将版本从2.1 改为2.1.3,如下
mvn archetype:create -DarchetypeGroupId=org.apache.portals.jetspeed-2 -DarchetypeArtifactId=portal-archetype -DarchetypeVersion=2.1.3 -DgroupId=org.apache.portals.tutorials -DartifactId=jetexpress -Dversion=1.0

因为http://repo1.maven.org/maven2/org/apache/portals/jetspeed-2/里只有2.1.3版本

6、用mvn生成applications/express-demo时,在java源文件多了个empty.properties.java文件,导致无法编译。
删除tutorial目录及内部文件,问题解决。
具体路径:/JetspeedTraining/workspace/jetexpress/applications/express-demo/src/java/com/bluesunrise/portal/portlets/tutorial/

7、portlet显示时遇到如下问题:
Error: The requested resource (/container) is not available
原因:生成的war为:express-demo-1.0.war。
将之改为express-demo.war即可。

因为在*.psml中引用portlet的方式为express-demo::……。这个前缀要和portlet应用名字一致。

8、记得设置Eclipse里面的环境变量M2_REPO指向maven2的repository。

9、几个关键命令
   mvn archetype:create …… 生成门户和portlet应用模版
   mvn -P tomcat,min       编译并发布门户
   mvn                     编译portlet应用,生成war
   mvn clean              
   mvn eclipse:eclipse     生成eclipse工程配置文件

10、jetspeed源码获取,需装subclipse插件,但目前1.4版尚不支持Eclipse3.4。
SVN地址:http://svn.apache.org/repos/asf/portals/jetspeed-2/portal/trunk/

11、为了避免Tomcat启动初始化Velocity时找不到VM_global_library.vm,在express-demo/WEB-INF/建立空文本文件VM_global_library.vm即可。

12、利用Ant扩展任务打包项目express-demo,而不用原来的mvn(这个需要能上网才能使用,不喜欢)。
step1:编写一个Ant任务扩展类。
新建Java工程,引入包dom4j和jaxen,编写类(参见:http://www.javaeye.com/topic/140405)并编译得到CreateJS2War.class

step2:将CreateJS2War.class拷到express-demo项目根目录,并在此编写build.xml(如下),使用该类。
注意taskdef与createJS2War两部分。

createJS2War 三个参数的含义:
classpath ---- 被分析的.classpath文件
libdir ---- 包要复制的目的目录
repository----Maven2的repository目录


<?xml version="1.0" encoding="UTF-8"?>
<project name="buildwar" default="deploywar" basedir=".">
 <taskdef name="createJS2War" classname="CreateJS2War" classpath="."/>
 <target name="buildwar">
  <mkdir dir="./ant_target" />
  <mkdir dir="./ant_target/express-demo" />
  <copy todir="./ant_target/express-demo/" overwrite="true">
   <fileset dir="./src/webapp/" />
  </copy>
  <mkdir dir="./ant_target/express-demo/WEB-INF/classes" />
  <copy todir="./ant_target/express-demo/WEB-INF/classes/" overwrite="true">
   <fileset dir="./target/classes/" />
  </copy>
  <mkdir dir="./ant_target/express-demo/WEB-INF/lib" />
  <createJS2War classpath="./.classpath" libdir="./ant_target/express-demo/WEB-INF/lib" repository="C:/JetspeedTraining/maven/repository" />
  <war destfile="./ant_target/express-demo.war" basedir="./ant_target/express-demo">
  </war>
 </target>
 <target name=&apos;copywar&apos;>
        <delete dir="c:/JetspeedTraining/tomcat-express/webapps/express-demo/"/>
       <copy file="./ant_target/express-demo.war" tofile="c:/JetspeedTraining/tomcat-express/webapps/express-demo.war" overwrite="true">       
       </copy>  
 </target>
    <target name="deploywar">
     <antcall target=&apos;buildwar&apos;/>  
     <antcall target=&apos;copywar&apos;/>  
 </target>
</project>

step3:启动Eclipse,配置Ant运行时,加入dom4j和jaxen包。
方法:windows-->Preferences-->Ant-->Runtime-->Classpath-->Add External JARs。

step4: 调整项目express-demo的build path。
在打包时,如下6个包一定不要打包到war,因为<tomcat_home>/shared/lib下已有这些包,如果war才有,会冲突,导致无法加载express-demo。为了打包时忽略这6个包,请在项目的“java build path”中首先删除这6个包(也可以直接修改项目的.classpath文件),然后建立一个包含这6个包的用户库。这样项目的.classpath文件中将不再包含这6个包,再利用上面Ant扩展任务复制包时将不再包含这6个包。
6个包如下:
jetspeed-api-2.1.3.jar
jetspeed-commons-2.1.3.jar
pluto-1.0.1.jar
portals-bridges-common-1.0.4.jar
portlet-api-1.0.jar
servlet-api-2.3.jar(这个tomcat自带,在<tomcat_home>/common/lib)
注:mvn打包是不包含这6个包的。

step5:运行deploywar任务,即可将express-demo打包并发布到tomcat。
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值