ï¼1ï¼ï¼ç解æå¡ï¼
ç°å¨çåºç¨ç¨åºåå¾è¶æ¥è¶å¤æï¼çè³åªé åä¸çåºç¨ç¨åºæ æ³å®æå ¨é¨çå·¥ä½ãæ´å«è¯´åªä½¿ç¨ä¸ç§è¯è¨äºãå æ¤éè¦è®¿é®å«äººåçæå¡ï¼ä»¥è·å¾æå ´è¶£çæ°æ®ã
å¨ååºç¨ç¨åºæ¥è¯¢æ°æ®åºæ¶ï¼å¹¶æ²¡æèèè¿ä¸ºä»ä¹å¯ä»¥å°æ¥è¯¢ç»æè¿åç»ä¸å±çåºç¨ç¨åºï¼çè³è®¤ä¸ºï¼è¿å°±æ¯æ°æ®åºåºè¯¥åçï¼å ¶å®ä¸ç¶ï¼è¿æ¯æ°æ®åºéè¿TCP/IPåè®®ä¸å¦ä¸ä¸ªåºç¨ç¨åºè¿è¡äº¤æµçç»æï¼èä¸å±æ¯ä»ä¹æ ·çåºç¨ç¨åºï¼æ¯ç¨ä»ä¹è¯è¨ï¼æ°æ®åºæ¬èº«å¹¶ä¸ç¥éï¼å®åªç¥éæ¥æ¶å°äºä¸ä»½åè®®ï¼è¿å°±æ¯SQL92æ¥è¯¢æ ååè®®ã
ç®åçäºè®¡ç®ãäºæ¥æé½æ¯ä¸ç§æå¡ï¼ç°å¨æ¯è¾æµè¡ç说æ³æ¯SOA(é¢åæå¡çæ¡æ¶)ã
æ¢ç¶æ°æ®åºå¯ä»¥ä¾æ®æäºæ å对å¤é¨å ¶ä»åºç¨ç¨åºæä¾æå¡ãèä¸ä¸å ³å¿å¯¹æ¹ä½¿ç¨ä»ä¹è¯è¨ï¼é£æ们为ä»ä¹å°±ä¸è½å®ç°è·¨å¹³å°ãè·¨è¯è¨çæå¡å¢ï¼
åªè¦æ们ç¨Javaåç代ç ï¼å¯ä»¥è¢«ä»»æçè¯è¨æè°ç¨ï¼æ们就å®ç°äºè·¨å¹³å°ï¼è·¨è¯è¨çæå¡ï¼---WebService
å æ¤ï¼WebServiceï¼é¡¾åæä¹å°±æ¯åºäºWebçæå¡ãå®ä½¿ç¨Web(HTTP)æ¹å¼ï¼æ¥æ¶åååºå¤é¨ç³»ç»çæç§è¯·æ±ãä»èå®ç°è¿ç¨è°ç¨.
æ们å¯ä»¥è°ç¨äºèç½ä¸æ¥è¯¢å¤©æ°ä¿¡æ¯Webæå¡ï¼ç¶åå°å®åµå ¥å°æ们çç¨åº(C/SæB/Sç¨åº)å½ä¸æ¥ï¼å½ç¨æ·ä»æ们çç½ç¹çå°å¤©æ°ä¿¡æ¯æ¶ï¼ä»ä¼è®¤ä¸ºæ们为ä»æä¾äºå¾å¤çä¿¡æ¯æå¡ï¼ä½å ¶å®æ们ä»ä¹ä¹æ²¡æåï¼åªæ¯ç®åè°ç¨äºä¸ä¸æå¡å¨ä¸çä¸æ®µä»£ç èå·²ã
å¦ä¹ WebServiceå¯ä»¥å°ä½ çæå¡(ä¸æ®µä»£ç )åå¸å°äºèç½ä¸è®©å«äººå»è°ç¨,ä¹å¯ä»¥è°ç¨å«äººæºå¨ä¸åå¸çWebService,å°±å使ç¨èªå·±ç代ç ä¸æ ·ã
ï¼2ï¼ï¼åºç¡æ¦å¿µï¼XML
XML Extensible Markup Language ï¼æ©å±æ§æ è®°è¯è¨
XMLï¼ç¨äºä¼ è¾æ ¼å¼åçæ°æ®ï¼æ¯Webæå¡çåºç¡ã
namespace-å½å空é´ã
ï¼3ï¼ï¼åºç¡æ¦å¿µï¼WSDL
WSDL â WebService Description Language â Webæå¡æè¿°è¯è¨ã
éè¿XMLå½¢å¼è¯´ææå¡å¨ä»ä¹å°æ¹ï¼å°åãaddress location
éè¿XMLå½¢å¼è¯´ææå¡æä¾ä»ä¹æ ·çæ¹æ³ â å¦ä½è°ç¨ãoperation
ï¼4ï¼ï¼åºç¡æ¦å¿µï¼SOAP
SOAP-Simple Object Access Protocol(ç®å对象访é®åè®®)
SOAPä½ä¸ºä¸ä¸ªåºäºXMLè¯è¨çåè®®ç¨äºç½ä¸ä¼ è¾æ°æ®ã
SOAP = å¨HTTPçåºç¡ä¸+XMLæ°æ®ã
SOAPæ¯åºäºHTTPçã
SOAPçç»æå¦ä¸ï¼
Envelope â å¿ é¡»çé¨åã以XMLçæ ¹å ç´ åºç°ã
Headers â å¯éçã
Body â å¿ é¡»çãå¨bodyé¨åï¼å å«è¦æ§è¡çæå¡å¨çæ¹æ³ãååéå°æå¡å¨çæ°æ®ã
ä¼ éçæ°æ®æ ¼å¼ï¼
<Envelope>
<Header></Header>
<Body>
<æ¹æ³å>
æ¹æ³åæ°
</æ¹æ³å>
</Body>
</Envelope>
ï¼5ï¼ï¼è¯·æ±ç¤ºä¾ï¼
以ä¸ååºHTTP请æ±ï¼ä½ä¸åçæ¯åæå¡å¨åéçæ¯XMLæ°æ®ï¼
说æï¼ï¼1ï¼ï¼å 为æ¯å¨HTTPä¸åæ°æ®ï¼æä»¥å¿ é¡»å éµå¾ªHTTPåè®®
ï¼2ï¼ï¼XMLé¨åå³SOAPåè®®ï¼å¿ é¡»å å«EnvelopeåBodyå ç´ ã
ï¼6ï¼ï¼ååºç¤ºä¾ï¼
1.3 åºç¨è¯´æ
1ï¼WebServiceéè¿HTTPåè®®å®æè¿ç¨è°ç¨
ï¼1ï¼ï¼WebServiceåªéç¨HTTP POSTæ¹å¼ä¼ è¾æ°æ®ï¼ä¸ä½¿ç¨GETæ¹å¼; -- æ¡æï¼WSDL-get,ï¼åºäºsoapåè®®ï¼ä¼ è¾æ°æ®æ ¼å¼æ¯XMLï¼
æ®éhttp postçcontentType为
application/x-www-form-urlencoded
WebServiceçcontentType为ï¼å³å¨Httpçåºç¡ä¸åSOAPåè®®
text/xml è¿æ¯åºäºsoap1.1åè®®ã
application/soap+xml è¿æ¯åºäºsoap1.2åè®®ã
ï¼2ï¼ï¼WebServiceä»æ°æ®ä¼ è¾æ ¼å¼ä¸ä½äºéå®ãWebServiceæ使ç¨çæ°æ®åæ¯åºäºXMLæ ¼å¼çãç®åæ åçWebServiceå¨æ°æ®æ ¼å¼ä¸ä¸»è¦éç¨SOAPåè®®ãSOAPåè®®å®é ä¸å°±æ¯ä¸ç§åºäºXMLç¼ç è§èçææ¬åè®®ã
ï¼3ï¼ï¼SOAP â Simple Object Access protocol ç®å对å访é®åè®®ãæ¯è¿è¡å¨HTTPåè®®åºç¡ä¹ä¸çåè®®ãå ¶å®å°±æ¯å¨HTTPåè®®æ¯ä¼ è¾XMLæ件ï¼å°±åæäºSOAPåè®®ã
ï¼4ï¼ï¼SOAP1.1åSOAP1.2ç namespaceä¸ä¸æ ·ãå¯ä»¥éè¿æ¥çç±»
javax.xml.ws.soap.SOAPBindingæ¥æ¥çéé¢ç常é
é»è®¤æ åµä¸ï¼Jdk1.6åªæ¯æsoap1.1
å³ï¼@BindingType(value=javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING)
1.4 WebServiceä¸Webçåºå«ä¸èç³»
å¯ä»¥æWebServiceçä½æ¯Webæå¡å¨ä¸åºç¨ï¼åè¿æ¥è¯´ï¼Webæå¡å¨æ¯WebServiceè¿è¡æ¶æå¿ éç容å¨ãè¿å°±æ¯å®ä»¬çåºå«åèç³»ã
1.5 WebServiceçç¹ç¹
WebServiceéè¿HTTP POSTæ¹å¼æ¥å客æ·ç请æ±ï¼å¦æåºäºsoapåè®®ï¼ä¼ è¾æ°æ®æ ¼å¼æ¯XMLï¼ï¼åªè½æ¯POSTæ¹å¼ï¼å 为GETæ¹å¼æ²¡æ请æ±ä½ã
WebServiceä¸å®¢æ·ç«¯ä¹é´ä¸è¬ä½¿ç¨SOAPåè®®ä¼ è¾XMLæ°æ®.
å®æ¬èº«å°±æ¯ä¸ºäºè·¨å¹³å°æè·¨è¯è¨è设计çã
ï¼1ï¼ SOAP1.2注æï¼å½ä½¿ç¨SOAP12以åï¼wsimportåEclipseåWSExploreré½ä¸å¯ä»¥æ£å¸¸ä½¿ç¨äºï¼å¿ 须使ç¨cxfæä¾çwsdl2javaå·¥å ·çææ¬å°ä»£ç ã
ï¼2ï¼ å®¢æ·ç«¯æ好åé1.1请æ±ï¼èæå¡ç«¯æ好使ç¨1.2é«çæ¬ã
2 åºç¨ç¤ºä¾
2.1 åå¸WebServiceæå¡ï¼ä½¿ç¨Jdk1.6.0_21以åççæ¬ï¼
1ï¼ä½¿ç¨Jdk1.6.0_21以åççæ¬åå¸ä¸ä¸ªWebServiceæå¡ï¼ä½¿ç¨æ³¨è§£æ¹å¼ï¼
ä¸Webæå¡ç¸å ³çç±»ï¼é½ä½äºjavax.jws.*å ä¸ã
主è¦ç±»æï¼
@WebService ï¼ å®æ¯ä¸ä¸ªæ³¨è§£ï¼ç¨å¨ç±»ä¸æå®å°æ¤ç±»åå¸æä¸ä¸ªwsã
Endpoint â æ¤ç±»ä¸ºç«¯ç¹æå¡ç±»ï¼å®çæ¹æ³publishç¨äºå°ä¸ä¸ªå·²ç»æ·»å äº@WebService注解对象ç»å®å°ä¸ä¸ªå°åç端å£ä¸ã
ï¼1ï¼ä¸ä¸ªç®åçJava项ç®ï¼HelloService
â 建ç«å¦ä¸å ç»æï¼
â¡æ°å»ºå¸¦æmainæ¹æ³çç±»HelloService.javaï¼å¹¶å¨ç±»ä¸å @WebServiceç注éã
å¨ç±»ä¸ä½¿ç¨EndPointç±»çpublishæ¹æ³ï¼
è¿éè¦è³å°æä¾ä¸ä¸ªå¯ä»¥åå¸çæ¹æ³ï¼ï¼æ¹æ³ä¸è½æ¯éæ并ä¸æ¯éfinalçï¼ï¼åªæè¿æ ·çæ¹æ³æå¯è¢«åå¸ã
@WebService
public class HelloService {
public String sayHello(String name){
System.out.println("sayHello Called...");
return "hello "+name;
}
public static void main(String[] args){
//åæ°1ï¼ç»å®æå¡çå°å
//åæ°2ï¼æä¾æå¡çå®ä¾
Endpoint.publish("http://124.205.244.130:5678/hello", new HelloService());
System.out.println("server ready...");
}
}
使ç¨EndPoint.publish()æ¹æ³å°ä¼æ°å¼å¯ä¸ä¸ªçº¿ç¨ï¼æ以并ä¸ä¼å½±å主线ç¨çè¿è¡ï¼æ以è¿è¡ä¸»æ¹æ³æ¶ï¼æ§å¶å°ä»ç¶å¯ä»¥çå°æè¾åºï¼server readyçä¿¡æ¯ã
â¢æå¡åå¸æååï¼å¨å®¢æ·ç«¯è°ç¨ï¼
å¯å¨æå¡åï¼å¨æµè§å¨ä¸è¾å ¥ç»å®çæå¡å°å+â?wsdlâå³å¯æ¥çæå¡ç说æ书ãwsdl- WebServiceãDescriptionãLanguage,æ¯ä»¥XMLæ件形å¼æ¥æè¿°WebServiceçâ说æ书â,æäºè¯´æ书,æ们æå¯ä»¥ç¥éå¦ä½ä½¿ç¨ææ¯è°ç¨è¿ä¸ªæå¡.
â£ä½¿ç¨wsimport âs . http://124.205.244.130:5678/hello?wsdl
å³å¯çæ客æ·ç«¯ä»£ç ãï¼å å«.classæ件å.javaæ件ï¼
æ¤å¤æ³¨æï¼æ¯çæèä¸æ¯ä¸è½½ï¼æå¡å¨ä¸å¹¶æ²¡ææçæçææçç±»åæ¹æ³ã
â¤æ°å»ºä¸ä¸ªJava项ç®HelloService_Clientå客æ·ç«¯ï¼å°.javaæ件æå ä¸èµ·æ¾å¨æ¤é¡¹ç®ä¸ï¼è°ç¨ï¼
public class App {
public static void main(String[] args) {
/**
* wsdlï¼<service name = "HelloServiceService">
*/
HelloServiceService has = new HelloServiceService();
/**
*wsdl:<port name="HelloServicePort" bind="tns:HelloServicePortBinding">
*/
HelloService soap = has.getHelloServicePort();
String str= soap.sayHello("zhangan");
System.out.println(str);
}
}
å³å¯å¨å®¢æ·ç«¯çæ§å¶å°ä¸å¯è§ï¼hello zhangsanï¼å®æ客æ·ç«¯çè°ç¨
说æï¼
wsimportæ¯jdkèªå¸¦ç,å¯ä»¥æ ¹æ®wsdlææ¡£çæ客æ·ç«¯è°ç¨ä»£ç .å½ç¶,æ 论æå¡å¨ç«¯çWebServiceæ¯ç¨ä»ä¹è¯è¨åç,é½å°å¨å®¢æ·ç«¯çæJava代ç ãæå¡å¨ç«¯ç¨ä»ä¹åç并ä¸éè¦ã
wsimport.exeä½äºJAVA_HOME\binç®å½ä¸.
常ç¨åæ°ä¸º:
-d<ç®å½> - å°çæ.classæ件ãé»è®¤åæ°ã
-s<ç®å½> - å°çæ.javaæ件ã
-p<çæçæ°å å> -å°çæçç±»ï¼æ¾äºæå®çå ä¸ï¼èªå®ä¹å ç»æã
(wsdlurl) - http://server:port/service?wsdlï¼å¿ é¡»çåæ°ã
示ä¾ï¼
C:/> wsimport âs . http://192.168.0.100/one?wsdl
C:/> wsimport âs . âp com.sitech.web
http://192.168.0.100/one?wsdl
注æï¼-sä¸è½åå¼ï¼-såé¢æ个å°ç¹ï¼ç¨äºæå®æºä»£ç çæçç®å½ãç¹å³å½åç®å½ã
å¦æ使ç¨äº-såæ°åä¼å¨ç®å½ä¸çæ两份代ç ï¼ä¸ä»½ä¸º.class代ç ãä¸ä»½ä¸º.java代ç ã
.class代ç ï¼å¯ä»¥ç»è¿æå 以å使ç¨ã.java代ç å¯ä»¥ç´æ¥Copyå°æ们ç项ç®ä¸è¿è¡ã
2ï¼éè¿wsimportçææ¬å°ä»£ç ï¼è°ç¨ç½ç»ä¸çwebæå¡ï¼æ¯å¦ææºå·ç å½å±å°æå¡ã
è¿å ¥xml.com.cnæ¾å°ææºå·ç å½å±å°æå¡çwsdlï¼
å¤å¶ä½¿ç¨wsimportå½ä»¤ï¼å°çæçjava代ç æ·è´å°MobileService项ç®ä¸ã
å¨å®¢æ·ç«¯çè°ç¨ï¼
public static void main(String[] args) {
MobileCodeWS mc = new MobileCodeWS();
MobileCodeWSSoap soap = mc.getMobileCodeWSSoap();
String str = soap.getMobileCodeInfo("13011286707", null);
System.out.println(str);
}