Maven:
1<!-- WebService --> 2 <dependency> 3 <groupId>org.apache.cxf</groupId> 4 <artifactId>cxf-rt-frontend-jaxws</artifactId> 5 <version>3.0.4</version> 6 </dependency> 7 <dependency> 8 <groupId>org.apache.cxf</groupId> 9 <artifactId>cxf-rt-transports-http</artifactId> 10 <version>3.0.4</version> 11 </dependency> 12 <dependency> 13 <groupId>org.apache.neethi</groupId> 14 <artifactId>neethi</artifactId> 15 <version>3.0.3</version> 16 </dependency>
这里的org.apache.neethi的版本最好是3.0.3 不然你使用了别人的webservice可能会报错 我试过用3.0.2报错
: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: java.lang.RuntimeException: Cannot create a secure XMLInputFactory
具体原因不清楚
还有记得别加这个
不然还是报错
Caused by: org.apache.cxf.BusException: No DestinationFactory was found for the namespace http://schemas.xmlsoap.org/soap/http.
webxml:
1<servlet> 2 <servlet-name>CXFService</servlet-name> 3 <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 4 <load-on-startup>1</load-on-startup> 5 </servlet> 6 <servlet-mapping> 7 <servlet-name>CXFService</servlet-name> 8 <url-pattern>/ws/*</url-pattern> 9 </servlet-mapping>
url-pattern自定义,就是你访问webservice的地址
Springxml:
1<!-- 接口的实现类声明 --> 2 <bean id="自定义" class="写你webservice接口的实现类" /> 3 4 <!-- 默认自带日志输出 --> 5 <bean id="inMessageInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor" /> 6 <bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor" /> 7 8 <!-- 发布WebService --> 9 <jaxws:server id="自定义" serviceClass="这里写你接口不是实现类" 10 address="/自定义访问webservice的地址"> 11 <jaxws:serviceBean> 12 <ref bean="自定义接口的实现类" /> 13 </jaxws:serviceBean> 14 <jaxws:inInterceptors> 15 <ref bean="inMessageInterceptor" /> 16 </jaxws:inInterceptors> 17 <jaxws:outInterceptors> 18 <ref bean="outLoggingInterceptor" /> 19 </jaxws:outInterceptors> 20 </jaxws:server>
webservice接口:
1package ws.spring.server; 2 3import javax.jws.WebMethod; 4import javax.jws.WebService; 5 6@WebService 7public interface UserWS { 8 @WebMethod 9 public UserBean getUserById(int id); 10}
webservice实现类 :
1package ws.spring.server; 2 3import javax.jws.WebService; 4 5@WebService 6public class UserWSImpl implements UserWS { 7 public UserWSImpl(){ 8 System.out.println("初始化 UserWSImpl"); 9 } 10 @Override 11 public UserBean getUserById(int id) { 12 System.out.println("server getUserById:"+id); 13 return new UserBean(1, "张三"); 14 15 } 16 17}
运行输入地址: /ws/自定义的webservice 地址