锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
浼氳嚜鍔ㄧ敓鎴愪竴浜涗唬鐮併?br />
package聽org.hermit.study.jdk.client;
import聽javax.jws.WebMethod;
import聽javax.jws.WebParam;
import聽javax.jws.WebResult;
import聽javax.jws.WebService;
import聽javax.jws.soap.SOAPBinding;
/**
聽*聽This聽class聽was聽generated聽by聽the聽JAXWS聽SI.
聽*聽JAX-WS聽RI聽2.0_02-b08-fcs
聽*聽Generated聽source聽version:聽2.0
聽*聽
聽*/
@WebService(name聽=聽"Hello",聽targetNamespace聽=聽"http://jdk.study.hermit.org/client")
@SOAPBinding(style聽=聽SOAPBinding.Style.RPC)
public聽interface聽Hello聽{
聽聽聽聽/**
聽聽聽聽聽*聽
聽聽聽聽聽*聽@param聽arg0
聽聽聽聽聽*聽@return
聽聽聽聽聽*聽聽聽聽聽returns聽java.lang.String
聽聽聽聽聽*/
聽聽聽聽@WebMethod
聽聽聽聽@WebResult(partName聽=聽"return")
聽聽聽聽public聽String聽sayHello(
聽聽聽聽聽聽聽聽@WebParam(name聽=聽"arg0",聽partName聽=聽"arg0")
聽聽聽聽聽聽聽聽String聽arg0);
}
package聽org.hermit.study.jdk.client;
import聽java.net.MalformedURLException;
import聽java.net.URL;
import聽javax.xml.namespace.QName;
import聽javax.xml.ws.Service;
import聽javax.xml.ws.WebEndpoint;
import聽javax.xml.ws.WebServiceClient;
/**
聽*聽This聽class聽was聽generated聽by聽the聽JAXWS聽SI.
聽*聽JAX-WS聽RI聽2.0_02-b08-fcs
聽*聽Generated聽source聽version:聽2.0
聽*聽
聽*/
@WebServiceClient(name聽=聽"HelloService",聽targetNamespace聽=聽"http://jdk.study.hermit.org/client",聽wsdlLocation聽=聽"http://localhost:8080/HelloService?wsdl")
public聽class聽HelloService
聽聽聽聽extends聽Service
{
聽聽聽聽private聽final聽static聽URL聽HELLOSERVICE_WSDL_LOCATION;
聽聽聽聽static聽{
聽聽聽聽聽聽聽聽URL聽url聽=聽null;
聽聽聽聽聽聽聽聽try聽{
聽聽聽聽聽聽聽聽聽聽聽聽url聽=聽new聽URL("http://localhost:8080/HelloService?wsdl");
聽聽聽聽聽聽聽聽}聽catch聽(MalformedURLException聽e)聽{
聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽HELLOSERVICE_WSDL_LOCATION聽=聽url;
聽聽聽聽}
聽聽聽聽public聽HelloService(URL聽wsdlLocation,聽QName聽serviceName)聽{
聽聽聽聽聽聽聽聽super(wsdlLocation,聽serviceName);
聽聽聽聽}
聽聽聽聽public聽HelloService()聽{
聽聽聽聽聽聽聽聽super(HELLOSERVICE_WSDL_LOCATION,聽new聽QName("http://jdk.study.hermit.org/client",聽"HelloService"));
聽聽聽聽}
聽聽聽聽/**
聽聽聽聽聽*聽
聽聽聽聽聽*聽@return
聽聽聽聽聽*聽聽聽聽聽returns聽Hello
聽聽聽聽聽*/
聽聽聽聽@WebEndpoint(name聽=聽"HelloPort")
聽聽聽聽public聽Hello聽getHelloPort()聽{
聽聽聽聽聽聽聽聽return聽(Hello)super.getPort(new聽QName("http://jdk.study.hermit.org/client",聽"HelloPort"),聽Hello.class);
聽聽聽聽}
}
涓嬮潰鎴戜滑鍐嶅啓涓祴璇曪紝鐪嬬湅鑳戒笉鑳界敤錛?br />
import聽org.hermit.study.jdk.client.Hello;
import聽org.hermit.study.jdk.client.HelloService;
public聽class聽TestClient聽{
聽聽聽聽public聽static聽void聽main(String[]聽args)聽{
聽聽聽聽聽聽聽聽HelloService聽service聽=聽new聽HelloService();
聽聽聽聽聽聽聽聽Hello聽_hello聽=聽service.getHelloPort();
聽聽聽聽聽聽聽聽System.out.println(_hello.sayHello("hermit"));
聽聽聽聽}
}
hello:hermit
ok錛佹悶瀹氥?br />java6鎼炲畾web service灝辮繖涔堢畝鍗曘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘?br />
xfire鍗遍櫓浜嗐傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘?/div>
]]>
import聽javax.jws.WebMethod;
import聽javax.jws.WebService;
import聽javax.jws.soap.SOAPBinding;
@WebService(targetNamespace聽=聽"http://jdk.study.hermit.org/client")
@SOAPBinding(style聽=聽SOAPBinding.Style.RPC)
public聽class聽Hello聽{
聽聽聽聽@WebMethod
聽聽聽聽public聽String聽sayHello(String聽name)聽{
聽聽聽聽聽聽聽聽return聽"hello:"聽+聽name;
聽聽聽聽}
}
targetNamespace = "http://jdk.study.hermit.org/client"榪欏彞鏄寚瀹氬鎴風鑾峰彇鏈嶅姟绔湇鍔″悗瀛樻斁鐨勭被璺緞銆傛敞鎰忔槸鍙嶇潃鐨勶紝http: //jdk.study.hermit.org/client鍦ㄥ鎴風鐢熸垚鐨勭被浼氭斁鍦╫rg.hermit.study.jdk.client鍖呬笅銆?br />涓嬮潰鏄彂甯冩湇鍔★細package聽org.hermit.study.jdk;
import聽javax.xml.ws.Endpoint;
public聽class聽StartService聽...{
聽聽聽聽public聽static聽void聽main(String[]聽args)聽...{
聽聽聽聽聽聽聽聽Endpoint.publish("http://localhost:8080/HelloService",聽new聽Hello());
聽聽聽聽}
}
榪愯StartService聽...錛屽紑鍙戞祻瑙堝櫒杈撳叆錛歨ttp://localhost:8080/HelloService?wsdl
濡傛灉鑳界湅鍒頒互涓嬪唴瀹癸紝灝卞彲浠?br />
-聽<definitions聽xmlns="http://schemas.xmlsoap.org/wsdl/"聽xmlns:tns="http://jdk.study.hermit.org/client"聽xmlns:xsd="http://www.w3.org/2001/XMLSchema"聽xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"聽targetNamespace="http://jdk.study.hermit.org/client"聽name="HelloService">
聽聽<types聽/>聽
-聽<message聽name="sayHello">
聽聽<part聽name="arg0"聽type="xsd:string"聽/>聽
聽聽</message>
-聽<message聽name="sayHelloResponse">
聽聽<part聽name="return"聽type="xsd:string"聽/>聽
聽聽</message>
-聽<portType聽name="Hello">
-聽<operation聽name="sayHello"聽parameterOrder="arg0">
聽聽<input聽message="tns:sayHello"聽/>聽
聽聽<output聽message="tns:sayHelloResponse"聽/>聽
聽聽</operation>
聽聽</portType>
-聽<binding聽name="HelloPortBinding"聽type="tns:Hello">
聽聽<soap:binding聽style="rpc"聽transport="http://schemas.xmlsoap.org/soap/http"聽/>聽
-聽<operation聽name="sayHello">
聽聽<soap:operation聽soapAction=""聽/>聽
-聽<input>
聽聽<soap:body聽use="literal"聽namespace="http://jdk.study.hermit.org/client"聽/>聽
聽聽</input>
-聽<output>
聽聽<soap:body聽use="literal"聽namespace="http://jdk.study.hermit.org/client"聽/>聽
聽聽</output>
聽聽</operation>
聽聽</binding>
-聽<service聽name="HelloService">
-聽<port聽name="HelloPort"聽binding="tns:HelloPortBinding">
聽聽<soap:address聽location="http://localhost:8080/HelloService"聽/>聽
聽聽</port>
聽聽</service>
聽聽</definitions>
]]>
Axis2 鏄笅涓浠?Apache Axis銆侫xis2 铏界劧鐢?Axis 1.x 澶勭悊紼嬪簭妯″瀷鎻愪緵鏀寔錛屼絾瀹冨叿鏈夋洿寮虹殑鐏墊椿鎬у茍鍙墿灞曞埌鏂扮殑浣撶郴緇撴瀯銆侫xis2 鍩轟簬鏂扮殑浣撶郴緇撴瀯榪涜浜嗗叏鏂扮紪鍐欙紝鑰屼笖娌℃湁閲囩敤 Axis 1.x 鐨勫父鐢ㄤ唬鐮併傛敮鎸佸紑鍙?Axis2 鐨勫姩鍔涙槸鎺㈠妯″潡鍖栨洿寮恒佺伒媧繪ф洿楂樺拰鏇存湁鏁堢殑浣撶郴緇撴瀯錛岃繖縐嶄綋緋葷粨鏋勫彲浠ュ緢瀹規(guī)槗鍦版彃鍏ュ埌鍏朵粬鐩稿叧 Web 鏈嶅姟鏍囧噯鍜屽崗璁紙濡?WS-Security銆乄S-ReliableMessaging 絳夛級鐨勫疄鐜頒腑銆?/p>
Axis2 鐨勭壒鎬у寘鎷細
鏈郴鍒楁枃绔犱互 Axis2 0.92 鐗堟湰涓哄熀紜銆傛?zhèn)ㄥ彲浠ュ?Apache 緗戠珯鑾峰緱 Axis2 鐨勬渶鏂扮増鏈?/p>
![]() ![]() |
![]()
|
Axis2 浣撶郴緇撴瀯灝嗛昏緫涓庣姸鎬佸垎紱伙紱榪欏厑璁稿湪騫惰綰跨▼涓墽琛岄昏緫銆傛湇鍔″拰璋冪敤鐨勯潤鎬佺姸鎬佸拰鍔ㄦ佺姸鎬佸垎鍒瓨鍌ㄥ湪 Description
鍜?Context
綾諱腑銆侫xis2 浣撶郴緇撴瀯鏄嬌鐢?7 涓嫭绔嬫ā鍧楀疄鐜扮殑銆?/p>
![]() ![]() |
![]()
|
閮ㄧ講 Axis2 涓庨儴緗?Axis 1 涓鏍風畝鍗曘傞鍏堝湪 Axis2 浜岃繘鍒朵唬鐮佸垎鍙戝寘鐨?webapps 鐩綍涓嬫煡鎵?Axis2 Web 搴旂敤紼嬪簭 axis2.war銆傚湪 servlet 瀹瑰櫒涓儴緗叉 war 鏂囦歡銆傚湪 Tomcat 涓紝濡傛灉宸插湪鏈嶅姟鍣ㄩ厤緗腑灝?unpackWARs 璁劇疆涓?True錛屽垯鍙渶灝?axis2.war 澶嶅埗鍒?$TOMCAT_HOME/webapps 鐩綍鍗沖彲閮ㄧ講 Axis2銆傝绔嬪嵆鍚姩 Tomcat 騫惰闂?http://localhost:<port>/axis2銆傚皢鏄劇ず Axis2 嬈㈣繋欏碉紝鍗曞嚮姝ら〉涓婄殑 Validate 閾炬帴銆傛?zhèn)ㄥ簲鍒拌?Axis2 Happiness page錛屼笉浼氬嚭鐜頒換浣曢敊璇?/p>
![]() ![]() |
![]()
|
涓嬮潰浠嬬粛濡備綍浣跨敤 In-Only subscribe() 鍜?In-Out getQuote() 榪欎袱涓搷浣滄潵寮鍙?StockQuoteService銆俿ubscribe() 鎿嶄綔灝嗛璁㈡寚瀹氫唬鍙風殑姣忓皬鏃舵姤浠鳳紝鑰?getQuote() 灝嗚幏寰楁寚瀹氫唬鍙風殑褰撳墠鎶ヤ環(huán)銆?/p>
涓嬮潰鐨?a >娓呭崟 1 鏄?StockQuoteService 鐨勫疄鐜扮ず渚嬶細
|
瀵規(guī)柟娉曠鍚嶆劅鍒板緢鐤戞儜錛熸垜浠皢璁ㄨ涓婅堪鏂規(guī)硶涓殑 OMElement銆?/p>
![]() ![]() |
![]()
|
閮ㄧ講鎻忚堪絎?/b>
鍦?Axis2 涓紝鏈嶅姟閮ㄧ講淇℃伅鍖呭惈鍦?services.xml 鏂囦歡錛堝湪 0.92 浠ュ墠鐨勭増鏈腑錛屾鏂囦歡鍚嶄負 service.xml錛変腑銆傚浜庝笂榪?StockQuoteService錛屾湇鍔¢儴緗叉弿榪扮涓庝笅闈㈢殑娓呭崟 2 綾諱技銆?/p>
娓呭崟 2. Services.xml
|
鏈嶅姟鐨?name 灞炴у畾涔夋湇鍔$殑鍚嶇О銆侫xis2 浣跨敤鏈嶅姟鐨勫悕縐板垱寤烘湇鍔$殑绔偣鍦板潃錛屼緥濡?http://localhost:<port>/axis2/services/<nameofservice>銆傚洜姝わ紝瀵逛簬 StockQuoteService錛屾湇鍔$鐐逛負 http://localhost:<port>/axis2/services/StockQuoteService銆?code>ServiceClass 鍙傛暟鎸囧畾鏈嶅姟瀹炵幇綾匯?/p>
姣忎釜 <operation> 鍏冪礌瀹氫箟鏈嶅姟涓竴涓搷浣滅殑閰嶇疆銆?lt;operation> 鐨?name 灞炴у簲璁劇疆涓烘湇鍔″疄鐜扮被涓柟娉曠殑鍚嶇О銆?code>messageReceiver 鍏冪礌瀹氫箟鐢ㄤ簬澶勭悊姝ゆ搷浣滅殑娑堟伅鎺ユ敹鍣ㄣ侫xis2 閽堝 In-Only 鍜?In-Out 鎿嶄綔鎻愪緵浜嗕袱涓棤鏁版嵁緇戝畾鐨勫唴緗?MessageReceivers錛?code>org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver 鐢ㄤ簬 In-Only 鎿嶄綔錛岃?org.apache.axis2.receivers.RawXMLINOutMessageReceiver
鐢ㄤ簬 In-Out 鎿嶄綔銆傚鏋滄病鏈夋寚瀹?messageReceiver錛屽垯 Axis2 灝嗗皾璇曚嬌鐢?org.apache.axis2.receivers.RawXMLINOutMessageReceiver 浣滀負緙虹渷鐨?messageReceiver銆備笂榪?RAWXML 娑堟伅鎺ユ敹鍣ㄥ皢浼犲叆 SOAP 娑堟伅鐨?<Body> 鐨勫唴瀹逛綔涓?OMElement錛圤MElement 鏄?XML 鍏冪礌鐨?AXIOM 緙╁啓錛変紶閫掔粰鏈嶅姟瀹炵幇銆傛鎿嶄綔搴斾綔涓?OMElement 榪斿洖 SOAP 鍝嶅簲鐨?<Body> 鍏冪礌鍖呭惈鐨?XML 鍐呭銆傝繖渚胯В閲婁簡涓轟綍 subscribe() 鍜?getQuote() 鎿嶄綔閲囩敤鍜岃繑鍥?OMElement銆?/p>
services.xml 榪樺彲浠ュ寘鍚垎涓?servicegroup 鐨勫涓湇鍔°?/p>
鎵撳寘
Axis 2 鏈嶅姟鏄綔涓?Axis Archive (.aar) 鎵撳寘鐨勩傝繖鏄竴涓?JAR 鏂囦歡錛堜嬌鐢?jar 鎴?zip 瀹炵敤紼嬪簭鍒涘緩錛夛紝鍦ㄥ瓨妗g殑 META-INF 鐩綍涓墦鍖呬簡 services.xml 鏂囦歡銆係tockQuoteService 鍦ㄦ墦鍖呮垚 StockQuoteService.aar 鏃跺皢鍏鋒湁浠ヤ笅緇撴瀯錛?
|
棰勫厛鎵撳寘鐨?StockQuoteService 瀛樻。鍙互鍦ㄦ湰鏂囩殑涓嬭澆閮ㄥ垎涓壘鍒般?/p>
閮ㄧ講
鍦?Axis2 涓儴緗叉湇鍔$浉褰撶畝鍗曪紝鍙渶灝?.aar 鏂囦歡澶嶅埗鍒?servlet 瀹瑰櫒鐨?axis2 Web 搴旂敤紼嬪簭涓殑 axis2/WEB-INF/services 鐩綍涓嬪嵆鍙傚浜?Tomcat錛屾浣嶇疆涓?$TOMCAT_HOME/webapps/axis2/WEB-INF/services銆?
鍙︿竴縐嶉儴緗叉湇鍔$殑濂芥柟娉曟槸浣跨敤 Axis2 綆$悊鎺у埗鍙頒腑鐨?Upload Service 宸ュ叿銆傝杞埌 http://localhost:<port>/axis2錛岀劧鍚庨夋嫨 Administration 閾炬帴銆傝緭鍏ョ敤鎴峰悕鍜屽瘑鐮?admin/axis2錛岀劧鍚庣櫥褰曘傦紙鎮(zhèn)ㄥ彲浠ュ湪 axis2.xml 涓厤緗敤鎴峰悕/瀵嗙爜銆?鍦ㄥ伐鍏烽儴鍒嗛夋嫨 Upload Service 閾炬帴錛屽啀閫夋嫨 .aar 鏂囦歡錛岀劧鍚庡崟鍑?Upload銆傚氨鏄繖鏍風畝鍗曪紒濡傛灉涓婁紶鎴愬姛錛岀郴緇熷皢鏄劇ず涓鏉$豢鑹叉垚鍔熸秷鎭傛湇鍔″嵆琚儴緗詫紝鑰屼笖鍙殢鏃惰皟鐢ㄣ傚鏋滆鍦ㄨ繙紼?Axis2 鏈嶅姟鍣ㄤ笂閮ㄧ講鏈嶅姟錛屽垯姝ゅ姛鑳介潪甯告柟渚褲?/p>
![]() ![]() |
![]()
|
Web 鏈嶅姟璋冪敤鐨勭壒鎬х敱 MEP銆佷紶杈撳崗璁互鍙婂鎴風 API 鐨勫悓姝ュ拰/鎴栧紓姝ヨ涓哄喅瀹氥侫xis2 褰撳墠鏀寔 WSDL 2.0 瀹氫箟鐨?In-Only 鍜?In-Out MEP銆侫xis2 瀹㈡埛绔?API 鏀寔鏈嶅姟鐨勫悓姝ュ拰寮傛璋冪敤銆傚湪璋冪敤 In-Out 鎿嶄綔鏃訛紝鍦?API 綰у埆鍜屼紶杈撶駭鍒彁渚涘紓姝ヨ涓恒侫PI 綰у埆寮傛鏄氳繃鍥炴粴鑾峰緱鐨勶紝瀹冧嬌鐢ㄤ竴涓紶杈撹繛鎺ユ潵鍚屾椂浼犺緭璇鋒眰鍜屽搷搴旓紙渚嬪錛岄氳繃涓涓?HTTP 榪炴帴浼犺緭璇鋒眰鍜屽搷搴旓級銆傚湪浼犺緭綰у埆寮傛涓紝浣跨敤涓嶅悓鐨勪紶杈撹繛鎺ュ垎鍒彂閫佽姹傚拰鎺ユ敹鍝嶅簲錛屼緥濡備嬌鐢?SMTP 榪涜浼犺緭鏃跺嵆濡傛銆?/p>
涓嬮潰鏄嬌鐢?Axis2 瀹㈡埛绔?API 璋冪敤 In-Only 鍜?In-Out 鎿嶄綔鐨勮緇嗕俊鎭?/p>
org.apache.axis2.clientapi.MessageSender
綾葷敤浜庤皟鐢?In-Only 鎿嶄綔錛堝涓嬮潰鐨?a >娓呭崟 3 鎵紺猴級錛岃?In-Only 鎿嶄綔璋冪敤 StockQuoteService
鐨?subscribe()
鎿嶄綔銆?/p>
娓呭崟 3. 璋冪敤 In-Only 鎿嶄綔
|
MessageSender.send()
鍙戦佽姹傛秷鎭茍灝嗗叾绔嬪嵆榪斿洖銆傝浣跨敤鐨勪紶杈撶敱 MessageSender.setSenderTransport()
鎸囧畾銆傛紺轟緥閫氳繃 HTTP 鍙戦佹秷鎭?/p>
浣跨敤 org.apache.axis2.clientapi.Call
綾誨彲浠ユ柟渚垮湴璋冪敤 In-Out 鎿嶄綔銆傝皟鐢?In-Out 鎿嶄綔鏃訛紝姝?Call
綾繪敮鎸佷笅鍒?4 縐嶆ā寮忥細
闃誨鍗曚紶杈撴ā寮?/b>錛氳繖鏄皟鐢?In-Out Web 鏈嶅姟鎿嶄綔鏈綆鍗曠殑鏂瑰紡銆傚湪鎿嶄綔瀹屾垚鍜屾帴鏀跺埌鍝嶅簲鎴栭敊璇箣鍓嶏紝鏈嶅姟璋冪敤琚樆濉炪傚畠浣跨敤涓涓紶杈撹繛鎺ュ悓鏃跺彂閫佸拰鎺ユ敹鍝嶅簲錛屽涓嬮潰鐨?a >娓呭崟 4 鎵紺恒?/p>
娓呭崟 4. 闃誨鍗曚紶杈撴ā寮?/b>
try {
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/axis2/services/StockQuoteService");
// Create request message
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace(
"http://www.developerworks.com/example", "example");
OMElement payload = fac.createOMElement("getQuote",omNs);
payload.setText("IBM");
// Create the call
Call call = new Call();
call.setTo(targetEPR);
call.setTransportInfo(Constants.TRANSPORT_HTTP,
Constants.TRANSPORT_HTTP, false);
// Invoke blocking
OMElement result = call.invokeBlocking("getQuote", payload);
System.out.println("Quote ="+result.getText());
}catch (AxisFault axisFault) {
axisFault.printStackTrace();
}
浠g爜鐨勭涓閮ㄥ垎浣跨敤 AXIOM 鍒涘緩璇鋒眰娑堟伅銆?code>Call.setTransportInfo() 璁劇疆鐢ㄤ簬鍙戦佽姹傚拰鑾峰緱鍝嶅簲鐨勪紶杈撱?code>Call.setTransportInfo() 鎿嶄綔鐨?Boolean 鍙傛暟鎸囧嚭鏄惁瑕佷嬌鐢ㄤ笉鍚岀殑浼犺緭榪炴帴鏉ュ垎鍒彂閫佽姹傚拰鎺ユ敹鍝嶅簲銆傚湪鏈緥涓紝瑕佹眰鐢ㄤ竴涓?HTTP 榪炴帴鍙戦佽姹傚拰鎺ユ敹鍝嶅簲銆?/p>
闈為樆濉炲崟浼犺緭妯″紡錛氬湪姝よ皟鐢ㄦā寮忎腑錛屽彧浣跨敤涓嬮潰鐨勪竴涓紶杈撹繛鎺ヨ幏寰楅潪闃誨璋冪敤銆傚鏋滃湪涓涓鎴風搴旂敤紼嬪簭涓瀹屾垚澶氫釜 Web 鏈嶅姟璋冪敤錛岃屼笖涓嶅笇鏈涙瘡嬈¤皟鐢ㄩ兘闃誨瀹㈡埛绔紝鍒欓渶瑕佹綾昏涓恒傛鏃訛紝濡傛灉鍝嶅簲鍙敤錛屽垯璋冪敤绔嬪嵆榪斿洖涓斿鎴風寰椾互鍥炴粴錛屽涓嬮潰鐨?a >娓呭崟 5 鎵紺恒?/p>
娓呭崟 5. 闈為樆濉炲崟浼犺緭妯″紡
|
Call.invokeNonBlocking()
鏂規(guī)硶绔嬪嵆榪斿洖鑰屼笉闃誨銆?code>Call.invokeNonBlocking() 閲囩敤 org.apache.axis2.clientapi.CallBack
鐨勫璞★紝濡傛灉鍝嶅簲鏉ヨ嚜鏈嶅姟錛屽垯灝嗚Е鍙戞瀵硅薄銆?code>CallBack 鏈変袱涓娊璞℃柟娉?onComplete(AsynchResult)
鍜?reportError(Exception)
錛岄渶瑕佺敱鍏蜂綋鐨?CallBack
綾誨疄鐜拌繖浜涙柟娉曘傚湪鏈嶅姟璋冪敤姝e父瀹屾垚鍚庯紝Axis2 寮曟搸璋冪敤 onComplete()
鏂規(guī)硶銆傚湪浠庢湇鍔″櫒鑾峰緱閿欒娑堟伅鍚庯紝璋冪敤 Callback
鐨?reportError()
鏂規(guī)硶銆?code>Callback.isComplete() 灝嗘寚鍑烘搷浣滆皟鐢ㄦ槸鍚﹀畬鎴愩?/p>
鍥犱負涓婇潰涓や釜鏂規(guī)硶浣跨敤涓涓紶杈撹繛鎺ユ潵鍙戦佸拰鎺ユ敹娑堟伅錛屾墍浠ヨ繖浜涙柟娉曚笉閫傚悎闀挎椂闂磋繍琛岀殑浜嬪姟銆傚師鍥犳槸鍦ㄥ搷搴斿彲鐢ㄤ箣鍓嶏紝浼犺緭榪炴帴鍙兘浼氳秴鏃躲傝瑙e喅姝ら棶棰橈紝鍙嬌鐢ㄤ袱涓笉鍚岀殑榪炴帴鏉ュ垎鍒彂閫佽姹傚拰鎺ユ敹鍝嶅簲銆備絾鍥犱負浣跨敤浜嗗叾浠栦紶杈撹繛鎺ユ潵鑾峰緱鍝嶅簲錛屽洜姝ら渶瑕佸皢璇鋒眰鍜屽搷搴斿叧鑱旇搗鏉ャ侫xis2 鏀寔 WS-Addressing錛屽悗鑰呴氳繃浣跨敤 <wsa:MessageID> 鍜?<wsa:RelatesTo> Header 鍙В鍐蟲闂銆傚洜姝わ紝濡傛灉浣跨敤涓や釜浼犺緭錛屽垯鏀寔瀵規(guī)ā鍧楀鍧錛屽涓嬮潰涓や釜妯″紡鎵紺恒?/p>
闃誨鍙屼紶杈撴ā寮?/b>錛氭妯″紡鍦ㄤ互涓嬫儏鍐典笅闈炲父鏈夌敤錛氭湇鍔℃搷浣滃湪鏈川涓婃槸 In-Out錛屼絾浣跨敤鐨勪紶杈撴槸鍗曞悜鐨勶紙濡?SMTP錛夋垨鏈嶅姟鎵ц闇瑕佸緢闀挎椂闂翠笖 HTTP 榪炴帴瓚呮椂銆傝鍙傝涓嬮潰鐨?a >娓呭崟 6銆?/p>
娓呭崟 6. 闃誨鍙屼紶杈撴ā寮?/b>
try{
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/axis2/services/StockQuoteService");
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace(
"http://www.developerworks.com/example", "example");
OMElement payload = fac.createOMElement("getQuote",omNs);
payload.setText("IBM");
Call call = new Call();
call.setTo(targetEPR);
call.setTransportInfo(
Constants.TRANSPORT_HTTP, Constants.TRANSPORT_HTTP, true);
//Blocking Invocation
OMElement result = call.invokeBlocking("getQuote", payload);
System.out.println("Quote = "+result.getText());
}catch (AxisFault axisFault) {
axisFault.printStackTrace();
}catch (Exception ex) {
ex.printStackTrace();
}
闈為樆濉炲弻浼犺緭妯″紡錛氬氨 API 綰у埆鍜屼紶杈撶駭鍒殑闈為樆濉炶岃█錛屾妯″紡鎻愪緵浜嗘渶澶х殑鐏墊椿鎬э紝濡備笅闈㈢殑娓呭崟 7 鎵紺恒?/p>
娓呭崟 7. 闈為樆濉炲弻浼犺緭妯″紡
|
![]() ![]() |
![]()
|
鍦ㄨ繖涓鐢變袱閮ㄥ垎緇勬垚鐨勭郴鍒楃殑絎?1 閮ㄥ垎涓紝鎮(zhèn)ㄤ簡瑙d簡 Axis2 浣撶郴緇撴瀯浠ュ強濡備綍浣跨敤涓嶅悓鐨勮皟鐢ㄦā寮忔潵閮ㄧ講鍜屼嬌鐢ㄤ竴涓畝鍗曠殑 Web 鏈嶅姟銆傚湪鏈郴鍒楃殑絎?2 閮ㄥ垎涓紝鎮(zhèn)ㄥ皢璇︾粏浜嗚В璇ヤ綋緋葷粨鏋勶紝浠ュ強濡備綍閫氳繃娣誨姞澶勭悊紼嬪簭鍜?Axis2 娑堟伅鎺ユ敹鍣ㄦ潵鑷畾涔?Axis2銆傛?zhèn)q樺皢浜嗚В濡備綍浣跨敤 Axis2 鎻愪緵鐨?XMLBeans 鏁版嵁緇戝畾鏀寔銆?/p>