当前位置: 首页 > 教程 > WebService >

JAX-WS示例(RPC样式)

精华
小牛编辑
118浏览
2023-03-14

创建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.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文件:

  • http://localhost:7788/ws/hello?wsdl

2. JAX-WS客户端代码

文件: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.xnip.cn/", "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