webservice发布服务:AXIS2及客户端调用

时间:2023-03-10 07:07:36
webservice发布服务:AXIS2及客户端调用
1.Axis2:

到官网下载axis2的压缩包。

解压后:

1.将lib文件下的jar包复制到项目中

2.在web-inf下创建services->META-INF->services.xml,并将压缩包中的services.list、version-1.7.4.aar复制到services文件夹下

3.编写services.xml文件,配置发布的接口,格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<service name="testService" targetName="http://cn.itcast.test">
<parameter name="ServiceClass">cn.itcast.test.Test</parameter>
<operation name="add">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<operation name="aaa">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<!-- <operation name="saySorry">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<operation name="getWorld">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</operation> -->
</service> 4.将编写好的services.xml文件替换version-1.7.4.arr中的services.xml文件(可以将version-1.7.4.arr修改后缀为zip然后打开找到services.xml文件并替换) 5.web.xml文件中配置axis2的servlet过滤器,格式如下: <?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Apache-Axis2</display-name>
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-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>/servlet/AxisServlet</url-pattern>
</servlet-mapping> <servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
-->
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping> <!-- <servlet-mapping>
<servlet-name>AxisAdminServlet</servlet-name>
<url-pattern>/axis2-admin/*</url-pattern>
</servlet-mapping> <mime-mapping>
<extension>inc</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
-->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>/axis2-web/index.jsp</welcome-file>
</welcome-file-list> <error-page>
<error-code>404</error-code>
<location>/axis2-web/Error/error404.jsp</location>
</error-page> <error-page>
<error-code>500</error-code>
<location>/axis2-web/Error/error500.jsp</location>
</error-page>
</web-app> 启动服务器,访问接口的wsdl文档:http://localhost:8080/axis2Server/services/testService?wsdl,如果能访问到网页版xml格式文档,说明接口发布成功。 客户端生成代码及调用: 去官网下载axis2-1.7.4-bin里面有bin文件,bin文件下有各种以.bat为后缀的命令文件,新建一个自定义.bat文件,一般起名为generateCode.bat(中文:生成代码),文件中的内容如下: wsdl2java -uri http://localhost:8080/axis2Server/services/testService?wsdl -p axis2.service.server -o e:\cn; 上面语句的意思是:axis2.service.server是目录结构;e:\cn是生成在e盘的cn文件夹下。 然而上面的wsdl2java命令需要配置环境变量才能执行,配置环境变量如下: 系统变量下新建变量名:AXIS2_HOME值:E:\axis2-1.7.4-bin\axis2-1.7.4; 将AXIS2_HOME配置在Path中:%AXIS2_HOME%\bin; 这样AXIS2的环境变量就配置好了,运行自定义的generateCode.bat文件即可生成代码。 Axis2客户端调用代码: package cn.itcast.client; import java.rmi.RemoteException; import axis2.service.server.TestServiceStub; public class Client {
public static void main(String[] args) throws Exception { System.out.println(new Client().aa());
System.out.println(new Client().bb()); } public String aa() throws Exception {
//stub类
TestServiceStub testServiceStub = new TestServiceStub();
//Add方法名:作为一个类new出来
TestServiceStub.Add add = new TestServiceStub.Add();
//将new出来的方法名类作为参数放在要调用的方法里
testServiceStub.add(add);//此处的代码可省略,因为下面已经连写了testServiceStub.add(add).get_return(); return testServiceStub.add(add).get_return();
} public String bb() throws RemoteException{ TestServiceStub testServiceStub = new TestServiceStub();
TestServiceStub.Aaa aaa = new TestServiceStub.Aaa();
aaa.setA("你好周杰伦"); return testServiceStub.aaa(aaa).get_return();
}
}