WebService初體驗——在JDK下發布第一個ws服務

首先,創建一個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註解,則此類必須至少有一個可公開的方法,不然將會啓動失敗。

相關文章
相關標籤/搜索