Eclipse使用Axis2,Spring开发jax-ws(webservice)的配置讲解:
jax-ws是java web service的标准规范,jdk本身就自带了API。但是如果要部署到服务器上的话,还需要一款实现。目前实现有metro(jax-ws ri), axis2, cxf。因为最近用到axis2,所以研究了一下axis2开发jax-ws的方法。编码我就不说了,遵循jax-ws规范就ok了。本文主要介绍一下axis2的配置。
其实没啥好说的,官网文档已经说明了http://axis.Apache.org/axis2/java/core/docs/servlet-transport.html
这里简单翻译一下。
1.web.xml的配置
首先配置AxisServlet来接受所有的以services/开头的路径请求。
- <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>
要注意的是url-pattern设置的路径前缀必须和axis2.xml文件中的servicePath参数一致。默认值为services,所以配成如上路径就不用改axis2.xml了。
2.axis2.xml当然要拷贝到WEB-INF目录下,服务器启动时会读取此文件。
3.就这么简单,然后就ok了。启动服务器比如Tomcat,访问http://localhost:8080/xx/services/XxService?wsdl就能看到wsdl,后面的开发方式和规范的jax-ws并无二异。
4.如果要支持https,需要改axis2.xml,配置上端口(比如tomcat里配置的8080给http,8443给https)
- <transportReceiver name="http" class="org.apache.axis2.transport.http.AxisServletListener">
- <parameter name="port">8080</parameter>
- </transportReceiver>
- <transportReceiver name="https" class="org.apache.axis2.transport.http.AxisServletListener">
- <parameter name="port">8443</parameter>
- </transportReceiver>
5.如果要集成spring,你的web service必须继承SpringBeanAutowiringSupport,这一点很重要,不继承的话会发现其他bean怎么也注入不了,急的双脚跳。
- public class MyServiceImpl Extends SpringBeanAutowiringSupport implements MyService {
- @Autowired
- private MyBusiness myBusiness;
- }
如此其他bean(这里是MyBusiness)就能自动装配进我们的web service了。
具体可以参考spring3.1文档的20.5小节,Web services