首先,創建一個WebService。html
package cn.xzj.ws; import javax.jws.WebService; import javax.xml.ws.Endpoint; //使用jdk1.6.0_24以上版本 //一、添加註解 @WebService public class HelloWorld { //二、至少包含一個能夠對外公開的服務 public String a(String name){ return "屌絲"+name; } //三、第一個參數稱爲Binding即綁定地址, //第二個參數是實現者,即誰提供服務 public static void main(String[] args) { HelloWorld h = new HelloWorld(); Endpoint.publish("http://localhost:8014/hello", h); } }
直接運行,jdk1.6會有信息,1.7爲空,不報錯就沒有問題,表示啓動WebService成功!java
在瀏覽器訪問http://localhost:8014/hello?wsdl,得到WebService說明書,看到以下shell
<?xml version="1.0" encoding="UTF-8" ?> - <!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --> - <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --> - <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.xzj.cn/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ws.xzj.cn/" name="HelloWorldService">- <types>- <xsd:schema> <xsd:import namespace="http://ws.xzj.cn/" schemaLocation="http://localhost:8014/hello?xsd=1" /> </xsd:schema> </types>- <message name="a"> <part name="parameters" element="tns:a" /> </message>- <message name="aResponse"> <part name="parameters" element="tns:aResponse" /> </message>- <portType name="HelloWorld">- <operation name="a"> <input message="tns:a" /> <output message="tns:aResponse" /> </operation> </portType>- <binding name="HelloWorldPortBinding" type="tns:HelloWorld"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> - <operation name="a"> <soap:operation soapAction="" /> - <input> <soap:body use="literal" /> </input>- <output> <soap:body use="literal" /> </output> </operation> </binding>- <service name="HelloWorldService">- <port name="HelloWorldPort" binding="tns:HelloWorldPortBinding"> <soap:address location="http://localhost:8014/hello" /> </port> </service> </definitions>
在Jdk的當前版本下,經過wsimport這個工具來生成遠程調用的源代碼瀏覽器
D:\>wsimport -s . http://localhost:8014/hello?wsdl parsing WSDL... generating code... compiling code... D:\>
在D盤就能夠看到cn/xzj/ws生成的class文件和java文件,拷貝java文件到項目中。工具
package cn.xzj.ws; public class Test { public static void main(String[] args) { ////建立一個客戶端服務對象 HelloWorld h = new HelloWorldService().getHelloWorldPort(); //調用服務方法,並打印方法返回值 System.out.println(h.a("大白")); } }
輸出:屌絲大白。spa
注意: .net
給類添加上@WebService註解後,類中全部的非靜態方法都將對外公佈。code
不支持靜態方法,final方法。xml
若是但願某個方法(非static,非final)不對外公開,能夠在方法上添加htm
@WebMenthod(exclude=true),防止對外公開。
若是一個類上,被添加了@WebService註解,則此類必須至少有一個可公開的方法,不然將會啓動失敗。