最近试着将POJO web service打包成war部署到JBoss上(同样的war部署在Glassfish上运行良好)。下面是小结:
一,部署jax-ws 2.0/2.1 POJO Web Service到JBoss4.2.2.GA
1:必须为你的POJO Web Service定义一个Servlet,并定义service的endpoint。
这意味着必须修改/增加两个文件:WEB-INF/web.xml;WEB-INF/sun-jaxws.xml (附文后)
2:最好将所需的jax-ws jars放到WEN-INF/lib里,免得将这些jar拷贝来拷贝去。
本人曾试了半天,拷来拷去,反正是搞不定。最后还是一古脑儿索性全放到WEB-INF/lib里,倒是爽快:
WEB-INF/lib/jaxws-rt.jar WEB-INF/lib/jaxws-tools.jar WEB-INF/lib/log4j-1.2.8.jar WEB-INF/lib/saaj-api.jar WEB-INF/lib/saaj-impl.jar WEB-INF/lib/sjsxp.jar WEB-INF/lib/stax-ex.jar WEB-INF/lib/streambuffer.jar WEB-INF/lib/sxalan.jar |
别问我到底哪个是哪个,都是干什么的。
二,部署jax-ws 2.0/2.1 POJO Web Service到JBoss5.0.0.GA
好像是去年,JBoss5面世了,根据其Release Note,它是“the final release of the JBoss 5.0 series for the Java EE™5 codebase that fully complies with the Java EE 5 conformance testing certification requirements.”但本人的试验结果却是大失所望:如果将我们的web service打包成war部署到JBoss 5.0上,根本就不工作,问题多去了。为什么同样的war部署在Glassfish上就运行良好呢?果真是“fully complies with the Java EE 5 ”?看起来并不那么“fully”。
JBoss5.0.0.GA的server classloader搜寻路径发生了一点变化。根据其Release Note的“指示”:“When running under Java 6 you need to manually copy the following libraries from the JBOSS_HOME/client directory to the JBOSS_HOME/lib/endorsed directory, so that the JAX-WS 2.0 apis supported by JBossWS are used:
jbossws-native-saaj.jar jbossws-native-jaxrpc.jar jbossws-native-jaxws.jar jbossws-native-jaxws-ext.jar ” |
这个也无济于事。