建立JAX-WS範例是一項簡單的任務,因為它不需要額外的組態設定。
JAX-WS API內建於JDK中,因此無需為其載入任何額外的jar檔案。 讓我們看一下RPC樣式的JAX-WS簡單範例。
建立一個Java專案:JAXWSHelloworld,在這個專案中建立了4個檔案:
前3
個檔案是為伺服器端應用程式建立的,最後1
個是為用戶端應用程式建立的。
檔案: HelloWorld.java 的內容如下 -
package com.yiibai;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)
public interface HelloWorld{
@WebMethod String getHelloWorldAsString(String name);
}
檔案: HelloWorldImpl.java 的內容如下 -
package com.yiibai;
import javax.jws.WebService;
//Service Implementation
@WebService(endpointInterface = "com.yiibai.HelloWorld")
public class HelloWorldImpl implements HelloWorld{
@Override
public String getHelloWorldAsString(String name) {
return "Hello World JAX-WS " + name;
}
}
檔案: Publisher.java 的內容如下 -
package com.yiibai;
import javax.xml.ws.Endpoint;
//Endpoint publisher
public class Publisher {
public static void main(String[] args) {
Endpoint.publish("http://localhost:7788/ws/hello", new HelloWorldImpl());
}
}
如何檢視生成的WSDL?
執行發布者(Publisher.java)程式碼後,可以通過存取URL來檢視生成的WSDL檔案:
檔案:HelloWorldClient.java -
package com.yiibai;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class HelloWorldClient {
public static void main(String[] args) throws Exception {
URL url = new URL("http://localhost:7788/ws/hello?wsdl");
// 1st argument service URI, refer to wsdl document above
// 2nd argument is service name, refer to wsdl document above
QName qname = new QName("https://www.tw511.com/", "HelloWorldImplService");
Service service = Service.create(url, qname);
HelloWorld hello = service.getPort(HelloWorld.class);
System.out.println(hello.getHelloWorldAsString("yiibai rpc"));
}
}
執行上面的用戶端程式碼,得到以下結果 -
Hello World JAX-WS yiibai rpc