读书人

Jboss上jaxws的开发

发布时间: 2012-12-25 16:18:28 作者: rapoo

Jboss下jaxws的开发
之前用jaxws做web service开发,无论是axis2还是cxf的实现,在tomcat上均成功部署。偏偏项目用的是jboss,之前的方案都无法在jboss下成功部署。折腾了好长时间以后,总算找到有以下一套方法是可行的。

环境基于JDK1.6.0_35(64位),jboss6.0.0Final

1.首先蛋疼的jboss居然自带一个cxf,还不兼容其他的jaxws实现!(折腾了半天无果,请了解的朋友赐教)所以pom.xml里关于axis2或者cxf的jar包引用统统去掉。

以下是axis2或者cxf的配置,均要去掉(若是tomcat则需要二选一)

<dependency><groupId>org.apache.axis2</groupId><artifactId>axis2-kernel</artifactId><version>${axis2.version}</version></dependency><dependency><groupId>org.apache.axis2</groupId><artifactId>axis2-jaxws</artifactId><version>${axis2.version}</version></dependency><dependency><groupId>org.apache.axis2</groupId><artifactId>axis2-adb</artifactId><version>${axis2.version}</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http</artifactId></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-ws-security</artifactId></dependency>


2.改web.xml,奇特的jboss居然直接把每个web service都当一个servlet来配
<servlet><servlet-name>MyService</servlet-name><servlet-class>com.xpen.webservice.MyServiceImpl</servlet-class></servlet><servlet-mapping><servlet-name>MyService</servlet-name><url-pattern>/MyService</url-pattern></servlet-mapping>


而原来在tomcat下跑的axis2或者cxf则分别如下配置
<servlet>    <servlet-name>AxisServlet</servlet-name>    <display-name>Apache-Axis Servlet</display-name>    <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>    <load-on-startup>1</load-on-startup></servlet><servlet-mapping>    <servlet-name>AxisServlet</servlet-name>    <url-pattern>/services/*</url-pattern></servlet-mapping>


<servlet><servlet-name>CXFServlet</servlet-name><servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class></servlet><servlet-mapping><servlet-name>CXFServlet</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping>


如此两点配好就ok了,jboss6.0.0上能运行了,但在eclipse里通过插件启动jboss仍然会报一个警告,WARNING [com.sun.xml.bind.v2.runtime.reflect.opt.Injector] duplicate class definition bug occured? Please report this : java.lang.ClassFormatError: Illegal class name
,但不影响正常运行。

但是jboss-6.1.0.Final死活不行,报错
java.lang.IllegalStateException: Endpoint already registered

读书人网 >操作系统

热点推荐