? Java6發布了,其中一個吸引我的新特性就是原生支持WebServices。在這和大家分享下學習心得。
下面就開始寫個最簡單的WebServices:
package?org.hermit.study.jdk;
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;
????}
}
怎么樣簡潔吧,很多朋友的寫法還要在命令行中執行“
wsgen?–cp?. <path>”
用偶這種方法寫的service可以省去上面這步。
targetNamespace = "http://jdk.study.hermit.org/client"這句是指定客戶端獲取服務端服務后存放的類路徑。注意是反著的,http: //jdk.study.hermit.org/client在客戶端生成的類會放在org.hermit.study.jdk.client包下。
下面是發布服務:
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());
????}
}呵呵,更簡潔。一句話而已。
http://localhost:8080/HelloService是指發布的地址
運行StartService?...,開發瀏覽器輸入:http://localhost:8080/HelloService?wsdl
如果能看到以下內容,就可以
?<?xml?version="1.0"?encoding="UTF-8"??>?
-?<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>
posted on 2006-12-21 10:01
交口稱贊 閱讀(6336)
評論(6) 編輯 收藏 所屬分類:
Java6