首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Axis2 系列教程(一):零配置 POJO 發布與多語言客戶端調用

     編輯:Java 相關知識

Axis2 簡介

Axis2 是 Apache 基金會重寫的 Web Service 引擎,支援 SOAP 1.1/1.2、REST、Spring、JSON 等技術。本文示範如何零配置發布 POJO 並以 Java、C# 調用。

安裝部署

  1. 下載 axis2-1.4.1-war.zip,解壓取出 axis2.war 放入 Tomcat webapps 目錄。
  2. 啟動 Tomcat,瀏覽 https://localhost:8080/axis2/ 確認安裝成功。

編寫與發布 POJO

public class SimpleService {
    public String getGreeting(String name) {
        return "你好 " + name;
    }
    public int getPrice() {
        return new java.util.Random().nextInt(1000);
    }
}
  • POJO 不可使用 package 宣告。
  • 編譯後將 SimpleService.class 放入 WEB-INF/pojo 目錄(若無則自建)。
  • Axis2 預設支援熱部署:無需重啟 Tomcat 即可生效。

瀏覽器測試

  • 服務列表:https://localhost:8080/axis2/services/listServices
  • 方法測試:https://localhost:8080/axis2/services/SimpleService/getGreeting?name=bill
  • 參數名需與方法參數名一致。

熱部署/熱更新配置

修改 WEB-INF/conf/axis2.xml:

  • <parameter name="hotdeployment">true</parameter>:熱部署(預設開啟)。
  • <parameter name="hotupdate">false</parameter> 改為 true 可開啟熱更新(開發期建議開啟)。

自訂部署目錄

在 axis2.xml <axisconfig> 下加入:

<deployer extension=".class" directory="my" class="org.apache.axis2.deployment.POJODeployer" />

即可將 WEB-INF/my 作為替代部署目錄。

Java 客戶端:RPC 方式

RPCServiceClient client = new RPCServiceClient();
Options options = client.getOptions();
options.setTo(new EndpointReference("https://localhost:8080/axis2/services/SimpleService"));

// 呼叫 getGreeting
QName op = new QName("https://ws.apache.org/axis2", "getGreeting");
Object[] args = { "超人" };
Class[] ret = { String.class };
System.out.println(client.invokeBlocking(op, args, ret)[0]);

// 呼叫 getPrice
op = new QName("https://ws.apache.org/axis2", "getPrice");
ret = new Class[] { int.class };
System.out.println(client.invokeBlocking(op, new Object[]{}, ret)[0]);

Java 客戶端:wsdl2java 生成 Stub

%AXIS2_HOME%\bin\wsdl2java -uri https://localhost:8080/axis2/services/SimpleService?wsdl -p client -s -o stub

使用生成的 SimpleServiceStub:

SimpleServiceStub stub = new SimpleServiceStub();
SimpleServiceStub.GetGreeting gg = new SimpleServiceStub.GetGreeting();
gg.setName("比爾");
System.out.println(stub.getGreeting(gg).get_return());
System.out.println(stub.getPrice().get_return());

C# 客戶端調用

  1. Visual Studio → 加入 Web 參考,輸入 WSDL URL。
  2. 三行代碼完成調用:
WebService.SimpleService svc = new WebService.SimpleService();
MessageBox.Show(svc.getGreeting("比爾"));
MessageBox.Show(svc.getPrice().ToString());

C# 直接將參數映射為原生類型,極為簡潔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved