前两天为解决同事一直没有解决的在JBoss上部署遇到的问题,分享如下:
对应的应用是一个企业web应用,需要部署在JBoss 4.2.3 GA上,该应用采用了Struts2访问EJB业务服务的方式,EJB业务服务部署在另外一台Weblogic 10.3服务器上。
在JBoss上部署一般的SSH问题时,我们遇到两个问题:
1、类冲突问题,应用说使用的hibernate版本更高,与JBoss的冲突。
2、远程调用Weblogic EJB的问题。
第一个问题解决比较简单,只要删除jboss-4.2.3.GA\server\default\lib下的四个文件:hibernate3.jar,hibernate-entitymanager.jar,hibernate-annotations.jar,ejb3-persistence.jar即可。这样以后各个应用自己部署自己说是用版本的hibernate即可。
有的人采用替代的方法,我不建议,这样为以后部署其他应用也带来同样的问题。
第二个问题涉及到Weblogic EJB Client调用说需要的基础包问题。从网上找到一些帖子,说自需要wlclient.jar和EJB stub类即可,但根本不行。
后来采用jarbuilder生成一个Weblogic EJB Client Jar文件wlfullclient.jar,又报servlet冲突错误。
折腾一番,后,打开wlfullclient.jar,将包内的javax.servlet包删除。搞掂!
生成wlfullclient.jar的过程如下:
在C:\bea\wlserver_10.3\server\lib目录中执行:
java -jar ../../../modules/com.bea.core.jarbuilder_1.2.0.0.jar
在执行上面的命令后,将在E:\bea\wlserver_10.3\server\lib目录生成一个wlfullclient.jar文件
如果是其他版本,需要将1.2.0.0替换为对应的版本好。
网上还有另外一种方式生成wlfullclient.jar,没有验证过,有验证通过的兄弟请回个贴:
生成JDK1.6的client:
cd WL_HOME
/server/lib
java -jar wljarbuilder.jar
生成JDK1.5的client:
java -jar wljarbuilder.jar -profile wlfullclient5
如果要将weblogic client集成到MAVEN中,参考:
http://mohanrajk.wordpress.com/2009/03/02/weblogic-103-and-maven-integration/