Axis2教程 命令列釋出,java2wsdl,wsdl2java
阿新 • • 發佈:2019-01-26
Axis2 WebService
實現webservice的開源框架有很多,axis是比較常用的一種,它能讓你在tomcat上方便的釋出webservice,它能幫助你把程式碼轉化成wsdl檔案,或者把wsdl檔案轉化成java程式碼,下面對axis2作詳細說明,我會側重講cmd命令列釋出和轉化,因為最新版axis2的外掛和多數eclipse版本不相容。
一.下載axis2
當前最新版本是1.6.1。
下載到本地:
Axis2-1.6.1-bin.zip裡有axis2的jar包。
Axis2-1.6.1-docs.zip裡有詳細的幫助文件。
Axis2-1.6.1-src.zip裡是原始碼,方便愛學習的同學研究。
Axis2-1.6.1-war.zip裡是axis的管理平臺,直接扔到tomcat中就能用了。
PipeService程式碼如下:
package com.pipe.webservice; import com.pipe.bean.User; public class PipeService { public String sayHello(String name) { return name + " say: hello"; } public User getUser(String userName) { User user = new User(); user.setName(userName); return user; } }
三. 釋出WebService
直接拷貝如下目錄結構到webapps/axis2/WEB-INF/services
Services.xml
<service name="PipeService" > <description> Please Type your service description here </description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </messageReceivers> <parameter name="ServiceClass">com.pipe.webservice.PipeService</parameter> </service>
重啟tomcat,成功。
2. 打包aar檔案,通過頁面upload釋出
考慮到給客戶釋出的話不太方便,故下面把它打成aar包。
在C盤下建資料夾AxisSession,按上文提到的目錄結構把class和server.xml放好。
通過cmd進入目錄,
打命令:jarcvf pipeservice.aar .(注意最後的句點)
使用者名稱密碼admin axis2
同樣成功。
在最外層輸全帶包名的類名。
java2wsdl -cn com.pipe.webservice.PipeService
成功生成。
wsdl2java -uri PipeService.wsdl
生成2個檔案。
public void downFile(StringfilePath) {
System.out.println(filePath);
StringtargetUrl = "http://localhost:8090/axis2/services/PipeService";
try {
PipeServiceStubps = new PipeServiceStub(targetUrl);
PipeServiceStub.SayHellosayHello = new PipeServiceStub.SayHello();
PipeServiceStub.GetUsergetUser = new PipeServiceStub.GetUser();
sayHello.setName("sam");
SayHelloResponse shr = ps.sayHello(sayHello);
getUser.setUserName("sam");
GetUserResponsegur = ps.getUser(getUser);
Useru = gur.get_return();
System.out.println(shr.get_return());
System.out.println(u.getName());
}catch (AxisFault e) {
e.printStackTrace();
}catch(RemoteException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}