在Tomcat中部署seam工程
??? 众所周知,Tomcat、Resin是servlet的容器,反应迅速,启动时间快,配置简单(Resin反应应该更迅速一些),但如果用到EJB工程的的话,它们就不能胜任了,比如seam工程就不能完整的在Tomcat中运行,这个时候就必须借助于一个鼎鼎大名的JBoss(当然Websphere、Weblogic也可以),但用了一段时间的JBoss,真的想说爱你不容易,启动一下竟然要1分多钟,给开发与调试带来极大的不便,而且配置文件一大堆,真是个重量级的Web应用服务器,但目前用的这个seam工程又不能在Tomcat中运行,程序员还是真的伤不起。
??? 接老大的指令,专门花1天的时间来研究下如何将seam工程移入tomcat,翻阅相关在资料,完全无头绪,老大亲自上阵又花了1天时间,发现还是有法可循,国内关于seam的资料还真远远不及hibernate、spring。
??? 1.首先需在soouceforce上下载一个JBoss-embedded的库,包含JBoss的核心类库。下载地址为
?
http://sourceforge.net/projects/jboss/files/Embedded%20JBoss/Embedded%20JBoss%20Beta%203/
?
??? 2.将嵌入式JBoss的 bootstrap 和lib目录下的所有文件和目录,除jndi.properties 文件之外,都拷贝到Tomcat的lib目录下。从Tomcat lib目录删除annotations-api.jar 文件。
??? 3.增加嵌入式JBoss侦听器EmbeddedJBossBootstrapListener到Tomcat的conf/server.xml,它必须出现在该文件中所有其他侦听器的后面。
?
<Listener className="org.jboss.embedded.tomcat.EmbeddedJBossBootstrapListener" />
?
??? 4.增加WebinfScanner 侦听器到conf/context.xml
?
<Listener className="org.jboss.embedded.tomcat.WebinfScanner" />
?
??? 5.更改Tomcat的bin/catalina.bat,在文件顶部注释行下增加一个新行
?
set JAVA_OPTS=%JAVA_OPTS% -Dsun.lang.ClassLoader.allowArraySyntax=true
?
然后即OK了。据本人测试,将此tomcat在eclipse下运行seam工程的话还是会有问题,解决办法:在eclipse面板中打开该tomcat选项,在启动参数加上-Dsun.lang.ClassLoader.allowArraySyntax=true。
?
还会出现servlet不可用的问题,解决办法:seam工程的src/hot目录的classpath默认会在WEB-INF/dev下,这样servlet经常会提示找不到类,将src/hot目录的classpath设置为WEB-INF/classes即OK
?
?
1 楼 poppk 2011-05-17 对应用服务器 做 倾入式 配置绝对是一种噩梦。