Axis2 WebService(配置、發佈、調用)

LifeBa文章如未註明轉載均爲原創.
轉載請註明: 轉載自Life吧 本文永久鏈接地址:http://www.lifeba.org/arch/java_axis2_webservice.html

本文最後更新2012-11-26

準備工作

1、下載:axis2-1.5.4-bin.zip,axis2-1.5.4-war.zip 下載地址:http://axis.apache.org/axis2/java/core/
2、環境變量設置
AXIS2_HOME E:\research\axis2-1.5.4-bin\axis2-1.5.4
JAVA_HOME C:\Program Files\Java\jdk1.6.0_21
3、axis2-1.5.4-war.zip解壓,將壓縮包內的axis2.war部署到%TOMCAT-HOME%/webapps下,啓動tomcat,訪問http://localhost:8085/axis2/看是否正常。

點擊Service會進入Service列表頁面,當前只有一個Version服務。http://localhost:8085/axis2/services/Version?wsdl
4、下載 axis2-eclipse-codegen-plugin-1.5.4.zip,axis2-eclipse-service-plugin-1.5.4.zip 解壓後將plugins 複製到 %ECLIPSE_HOME%\plugins。
http://www.apache.org/dyn/mirrors/mirrors.cgi/axis/axis2/java/core/1.5.4/axis2-eclipse-codegen-plugin-1.5.4.zip
http://www.apache.org/dyn/mirrors/mirrors.cgi/axis/axis2/java/core/1.5.4/axis2-eclipse-service-plugin-1.5.4.zip

安裝完插件後,IDE中選擇new->other會看到下面界面

如果安裝Axis2插件之後,在eclipse中沒有出現界面,就換一個eclipse版本
在版本比較新的eclipse中,安裝Axis插件,是把jar複製到%ECLIPSE_HOME%\dropins目錄下,而不是plugins目錄

AXIS2發佈Web Services
一、工程文件

1、新建 Axis2Service1 java工程。
2、新建 \Axis2Service1\src\ws\TestWs.java

package ws;
public class TestWs {
public String showName(String name) {return name; }
public String getName() {return "Axis2Service Sample"; }
}

二、arr部署方式
1、手動打包
新建\Axis2Service1\deploy文件夾 ,將\Axis2Service1\bin下的class文件複製過來。
新建\Axis2Service1\deploy\META-INF\services.xml文件

<service name="AxisService">
< description>AxisService</description>
< parameter name="ServiceClass">ws.TestWs</parameter>
< operation name="showName">
< messageReceiver
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
< /operation>
< operation name="getName">
< messageReceiver
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
< /operation>
< /service>

生成aar包 \Axis2Service1\deploy>jar cvf AxisService.aar . (注意帶.號)

2、插件打包
IDE中選擇New->other->Axis2 Service Archiver,點擊Next;
Class File Location:選擇Axis2Service1\bin目錄,點擊Next;
勾選Skip WSDL,點擊Next;
Service Archiver 選擇jar位置,如果沒有jar包就直接點擊Next;
勾選Generate the service xml automatically 自動生成XML file文件,點擊Next
service name,輸入:AxisService,然後在class name 中填寫要發佈的類(全路徑),點擊load。勾選 Search declared methods only。點擊next

output File location,輸入:D:\ ; output File Name,輸入artiver文件的名稱 AxisService。點擊finish。
提示 Service Archvie generated successfully! 註冊表明,生成成功。
3、發佈AxisService
AxisService.aar複製到%TOMCAT-HOME%/webapps/axis2/WEB-INF/services下。(不打aar包,\Axis2Service1\deploy下面複製過去也是可以)

打開http://localhost:8085/axis2/services/listServices 看到

三、獨立部署

1、新建java web project工程。
2、文件複製
%TOMCAT-HOME%\webapps\axis2\WEB-INF\lib 複製到 \Axis2Service2\WebRoot\WEB-INF\lib 下,並加入工程引用。
%TOMCAT-HOME%\webapps\axis2\WEB-INF\conf 複製到 \Axis2Service2\WebRoot\WEB-INF\conf
%TOMCAT-HOME%\webapps\axis2\WEB-INF\modules 複製到 \Axis2Service2\WebRoot\WEB-INF\modules
3、web.xml 代碼如下

<?xml version="1.0" encoding="UTF-8"?>
< web-app id="wmf" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
< servlet>
< 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>/services/*</url-pattern>
< /servlet-mapping>
< /web-app>

2、新建 \Axis2Service2\src\ws\TestWs.java

package ws;
public class TestWs {
public String showName(String name) {return name; }
public String getName() {return "Axis2Service Sample"; }
}

3、新建\Axis2Service2\WebRoot\WEB-INF\services目錄。
4、新建一個AxisService服務
AxisService\META-INF\services.xml

<service name="AxisService">
< description>AxisService</description>
< parameter name="ServiceClass">ws.TestWs</parameter>
< operation name="showName">
< messageReceiver
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
< /operation>
< operation name="getName">
< messageReceiver
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
< /operation>
< /service>

啓動tomcat後,訪問http://localhost:8085/Axis2Service2/services/AxisService?wsdl看是否正常。

AXIS2調用Web Services

一、客戶端stub文件生成
1、腳本生成方式
去AXIS2的解壓目錄下bin(%AXIS2_HOME%\bin\)下執行下面語句
wsdl2java -uri http://localhost:8085/Axis2Service2/services/AxisService?wsdl -p ws -s -o stub
-p參數指定了生成的Java類的包名
-o參數指定了生成的一系列文件保存的根目錄
在stub\src\ws自動生成AxisServiceStub.java

2、插件生成方式
IDE中選擇New->other->Axis2 Code Generator,點擊Next;
勾選Generate Java source code from a WSDL file,點擊Next;
WSDL file location,輸入:http://localhost:8085/Axis2Service2/services/AxisService?wsdl,點擊Next;
如果路徑不對會提示:Specified WSDL is invalid!, Please select a validated *.wsdl/*.xml file on previous page.
正確的話界面如下,點擊next;

指定輸入路徑,點擊Next

提示:All operations completed successfully! 生成成功。在D:\src\ws 自動生成了stub一系列文件,其中ws是包名。

上面2種方式生成的stub類有點不一樣,腳本生成方式是單一文件,插件生成方式生成的一系列文件。

二、客戶端調用
腳本生成方式爲例子,插件生成的類似。

1、新建 java工程 Axis2Client
新建\Axis2Client\lib文件夾
將%AXIS2_HOME%\lib\ 下的jar包複製到\Axis2Client\lib,並加入工程引用中
將通過腳本生成的單一AxisServiceStub.java文件 加入到src\ws下
2、新建test.TestWs.java 主要代碼如下

//初始化Sub類
AxisServiceStub stub = new AxisServiceStub();
//傳遞AxisServiceStub.ShowName對象,相關參數在這邊賦值。
AxisServiceStub.ShowName command = new AxisServiceStub.ShowName();
command.setName("Hello!");
//取得返回值
String name = stub.showName(command).get_return();
System.out.println(name);

調用成功後控制檯輸出:Hello!

上面代碼展示瞭如何從webservice中 調用方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章