国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Axis2項目開發和部署發布

2019-11-08 02:45:29
字體:
來源:轉載
供稿:網友

本文將介紹Axis2項目開發及部署詳細內容,在講解之前先介紹一下axis2以及優缺點(都是自己在開發javaweb接口API的時候自己總結的,另外在其他兩篇文章會介紹一下用axis1和xfire發布webservice,以及三種發布的優缺點)


Axis2是Apache下的一個重量級WebService框架,準確說它是一個Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者。Axis2 具有模塊化體系結構,由核心模塊和非核心模塊組成。據說,Axis2核心是純SOAP處理引擎,并沒有包含 Java? API forxml-based RPC (JAX-RPC) 概念作為其核心的一部分。同時,Axis2體系結構的設計充分考慮了以下原則:

1.邏輯和狀態分離,以提供無狀態處理機制,因為 Web 服務是無狀態的。 2.所有信息位于一個信息模型中,允許對系統進行掛起和恢復。 3. 能夠在不更改核心體系結構的情況下擴展功能,能以最小或沒有核心更改的情況下直接支持新 Web 服務規范。

Axis2 核心體系結構包括以下核心和非核心組件:核心組件 ? XML對象模型 (AXIOM),SOAP處理模型:處理程序框架,信息處理模型:上下文和描述,其他組件,部署模型,傳輸,客戶機API,核心生成模型。 Axis2 優點:它能不但能制作和發布WebService,而且可以生成Java和其他語言版WebService客戶端和服務端代碼 內存占用低 熱部署 異步web 服務 靈活性 - Axis 體系結構使開發者可以自由的向引擎中插入擴展 穩定性 - Axis 定義了一組公共的接口。 面向組件的部署 - 可以簡單地定義可復用的處理機網絡,來實現應用程序的通用處理方式 或分發給合作者。 支持WSDL - Axis 支持WSDL1.1 ,可以簡單的構建訪問遠程服務的樁(stub ), 還可以自動將部署的服務從Axis 導出為機器可識別的描述。 插件 組成和可擴展性 缺點: Axis2重量級框架和支持多語言的特性不可避免的導致了Axis2的復雜性,開發所依賴的包數量和大小都是很驚人的,打包部署發布都比較麻煩,不能很好的與現有應用整合為一體。 Axis2的開發者太急于推出1.0版本,所以1.0還不是一個穩定的版本。

開發工具:Myeclipse2014,JDK_1.7,tomcat_1.6,下圖是開發完成之后的工程目錄: 工程目錄

開發步驟: 第一步:創建一個普通的java web工程,下載axis2_.1.6.2的jar包,下載解壓,將所有jar包復制到lib目錄,將modules和conf文件夾及文件夾下所有文件拷貝到WEB_INF目錄下

第二部:編寫測試類TestService,包名:com.wingsoft.webservice,提供兩個測試接口方法,如下圖:

測試類方法

第三步:編輯web.xml文件,添加以下配置信息:<servlet> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class> <load-on-startup>2</load-on-startup></servlet><servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern></servlet-mapping>第四步:在WEB_INF目錄下新建services文件夾(文件夾名稱不允許修改),在services目錄下建立TestService(名稱最好和測試類名字保持一致)文件夾,在該TestService目錄下建立META_INF文件夾,最后在META_INF文件夾下建立名字為services的XML文件(名稱不允許修改),在services.xml文件中添加以下配置信息:<?xml version="1.0" encoding="UTF-8"?><service name="TestService" > <description> TestService </description> <!--ServiceClass的值為測試類包名+類名--> <parameter name="ServiceClass">com.wingsoft.webservice.TestService</parameter> <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></service>

二.Axis2項目部署和發布

將開發好的項目,通過Myeclipse部署到tomcat中,啟動tomcat,啟動成功之后在瀏覽器中輸入http://主機名:8080/項目名稱/services/TestService?Wsdl,如果瀏覽器返回WSDL信息,表示webservice項目已經發布成功

wsdl信息

三.Axis2項目接口調用示例(java語言) 示例1

public class Test { //設置調用地址,不能帶?WSDL PRivate static EndpointReference targetEPR = new EndpointReference( "http://localhost:8080/項目名稱/services/TestService/"); public static void main(String[] args) { try { // 對請求的接口方法設置參數,返回OMElement對象 // 創建OMFactory對象 OMFactory fac = OMAbstractFactory.getOMFactory(); // 命名空間,根據測試類包名反過來寫即可,或者在service.xml配置文件中自定義 // 命名空間,后面的參數為調用的方法名 OMNamespace omNs = fac.createOMNamespace( "http://webservice.wingsoft.com", "sayHello"); // 接口方法和參數設置 OMElement method = fac.createOMElement("sayHello", omNs); // 此處設置參數名稱一定要和方法中定義的變量名name保持一致,否則調用會報錯 OMElement param = fac.createOMElement("name", omNs); // 此處設置參數值 param.addChild(fac.createOMText(param, "Axis2")); method.addChild(param); Options options = new Options(); options.setTo(targetEPR); ServiceClient sender = new ServiceClient(); sender.setOptions(options); OMElement result=sender.sendReceive(method); System.out.println(result); } catch (AxisFault e) { e.printStackTrace(); } }}

調用成功之后會返回xml格式結果,

<ns:sayHelloRespons xmlns:ns="http://webservice.wingsoft.com"><ns:return>hello, Axis2</ns:return></ns:sayHelloResponse>

示例2(RPC方式調用)

public class Test { // 設置調用地址,不能帶?WSDL private static EndpointReference targetEPR = new EndpointReference( "http://主機IP:8080/項目名稱/services/TestService/"); public static void main(String[] args) { try { // 使用RPC方式調用WebService RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOptions(); // 確定目標服務地址 options.setTo(targetEPR); // 指定調用方法 options.setAction("urn:sayHello"); // 指定要調用的方法GetStioDetailByTxt及WSDL文件的命名空間 QName qname = new QName("http://webservice.wingsoft.com", "sayHello"); // 指定方法的參數值 Object[] parameters = new Object[] { "world!" }; // 指定方法返回值的數據類型的Class對象 Class[] returnTypes = new Class[] { String.class }; // 傳遞參數,調用服務,獲取服務返回結果集 Object[] result = serviceClient.invokeBlocking(qname, parameters,returnTypes); // 因為調用的方法只有一個返回值,所以取object數組第一個元素值 System.out.println((String)result[0]); } catch (AxisFault e) { e.printStackTrace(); } }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定安县| 黎城县| 福州市| 郸城县| 柏乡县| 德保县| 连云港市| 南岸区| 镇赉县| 贵德县| 四子王旗| 高安市| 长海县| 顺义区| 若羌县| 海兴县| 汕尾市| 盘山县| 习水县| 方正县| 田阳县| 华坪县| 从江县| 赞皇县| 花莲县| 滕州市| 砚山县| 广东省| 牙克石市| 姜堰市| 安康市| 云阳县| 平山县| 南澳县| 台北县| 铁力市| 朔州市| 台北县| 都兰县| 新营市| 延长县|