JAXM应用和EJB组件部署在JBoss3.6上的冲突
JAXM应用和EJB组件部署在JBoss3.6上的冲突
问题简述:
需要在JBoss上部署两个包:agent.war和msc.jar。
agent.war是一个jaxm的应用,里面主要是一个继承JAXMServlet,并实现ReqRespListener接口的一个Servlet类:HttpAdapter。
msc.jar是我的后台EJB,有stateless sessionBean和CMP。
(1) 启动JBoss3.6,预先部署了jaxm-provider.war, jaxm-provideradmin.war (来自JAXM1.1.2);
(2) 首先部署agent.war,成功。然后部署msc.jar,也成功。用客户端访问HttpAdapter,也成功。但是。
(3) 重新修改agent内容后,将新生成的agent.war重新向JBoss热部署。部署成功,但是在客户端再次访问HttpAdapter时,服务器出错,报告: java.lang.NoClassDefFoundError: javax/xml/soap/SOAPException。
(4) 此时,重新启动JBoss,故障依旧。
我们已经采取的方法:
(1) undeploy agent.war和msc.jar,重新启动JBoss。改变agent.war和msc.jar的部署顺序(先msc.jar,后agent.war),部署成功。用客户端访问HttpAdapter,错误相同。
(2) 将agent.war和msc.jar合并为msc.ear,undeploy原有包后,重启动jboss,部署成功。但客户端访问HttpAdapter,错误不同,报告:
10:59:38,856 ERROR [Engine] StandardWrapperValve[HttpAdapter]: Allocate exception for servlet HttpAdapter
javax.servlet.ServletException: Error allocating a servlet instance
... ...
10:59:38,863 ERROR [Engine] ----- Root Cause -----
java.lang.NoClassDefFoundError: javax/xml/messaging/JAXMServlet
求助:
我们初步判断应该是部署和配置冲突。不知该如何排除此类故障,请大家指教。谢谢。
附录
(1) 我们的运行环境:
JBoss3.6 & Tomcat4 运行在Solaris8
(2) msc.ear的application.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd">
<application>
<display-name>MscPlatform</display-name>
<module>
<ejb>msc.jar</ejb>
</module>
<module>
<web>
<web-uri>agent.war</web-uri>
<context-root>HttpAdapter</context-root>
</web>
</module>
</application>
(3) 开发环境
JBuilder8, Windows2000和WindowsXP,
JBoss的JBuilder8 Plugin是:JBossOpenTool.jar