信步漫谈之Axis2—基础介绍
主要介绍如何使用 axis2 开发 webservice 接口。
以下以实例讲解如何编写一个 axis2 的服务端和客户端。
axis2版本:axis2-1.5.4-bin.zip
目录结构:
关键代码:
主要介绍如何使用 axis2 开发 webservice 接口。
以下以实例讲解如何编写一个 axis2 的服务端和客户端。
axis2版本:axis2-1.5.4-bin.zip
目录结构:
关键代码:
在浏览器地址栏输入地址:http://127.0.0.1:8080/aw/services/mySoapService?wsdl(使用tomcat服务器,项目名为aw),可以看到显示出 webservice 的 wsdl 信息,说明部署成功。
在 ServiceClient 中,调用 sayHello,打印信息:
需要注意的一点就是 services.xml 文件的存放位置是固定的:WEB-INF/services/ 任意名字的文件夹 /META-INF/services.xml
Axis2 访问验证
axis2 接口可以通过向信息头部(Header)中添加验证信息,对接口调用者的身份进行验证。具体配置步骤是:
1、服务端在想要进行访问验证的接口方法中(sayHello),添加验证模块(AccessCheck.checkUserPwd());
2、验证模块通过获取 webservice 访问信息头部,提取验证信息,对客户端传递的验证信息进行进行检查判断;
3、客户端调用接口时,加入访问验证信息;
// 向Soap Header中添加校验信息 serviceClient.addHeader(createHeaderOMElement());
Axis2 的 https 访问
axis2 如果需要进行 https 访问,需要加入全局配置文件 axis2.xml (Axis2 下提供了三种配置文件,第一种是整个系统的全局配置 axis2.xml,第二种是服务配置 services.xml,第三种是模块配置 module.xml),默认该文件是存储在 /WEB-INF/conf/axis2.xml。axis2.xml 文件可以在 axis2 的开发包下获取。
在 axis2.xml 中加入一段:
<transportReceiver name="https" class="org.apache.axis2.transport.http.AxisServletListener"> <parameter name="port">443</parameter> </transportReceiver>
配置完成后访问 https://127.0.0.1/aw/services/mySoapService?wsdl 显示出 webservice 的 wsdl 信息,说明配置成功。
客户端如果想要访问 https 的服务端,需将服务端证书加入系统属性中
//指定服务端证书 System.setProperty("javax.net.ssl.keyStore",ProjConf.SERVER_KEYSTORE); System.setProperty("javax.net.ssl.keyStorePassword",ProjConf.SERVER_KEYSTORE_PASSWORD); System.setProperty("javax.net.ssl.trustStore",ProjConf.SERVER_TRUSTSTORE); System.setProperty("javax.net.ssl.trustStorePassword",ProjConf.SERVER_TRUSTSTORE_PASSWORD);
如果想要手动指定 axis2.xml 文件路径(例如改为 config 文件夹下),可以在 web.xml 中配置(见上方 web.xml)
<init-param> <param-name>axis2.xml.path</param-name> <param-value>/WEB-INF/config/axis2.xml</param-value> </init-param>
常见错误
1、javax.servlet.ServletException: org.apache.axis2.AxisFault: The system is attempting to engage a module that is not available: addressing
解决方法:到 axis2.xml 中查找
<!-- Comment this to disable Addressing --> <module ref="addressing"/>
将 addressing 的引用注释掉。
2、https is forbidden
解决方法:核实 axis2.xml 文件位置是否正确,默认是在 WEB-INF/conf/axis2.xml,以及 axis2.xml 中是否配置了 https。
3、unable to find valid certification path to requested target
解决方法:核实客户端访问 https 是否将证书加入系统属性。
最后,项目的结构如下: