基于JDK1.6的Web Service

来源:互联网 发布:c语言钩子函数 编辑:程序博客网 时间:2024/05/21 14:53

Web Service 是一种网络服务,具有跨平台的优点,一种开发语言生成的Web Service接口,可以供其他语言调用,而RMI只能由本语言调用。

在JDK1.6的环境下,生成Web Service的步骤如下:

1.编写服务类

package com.webservice.server.resource;

import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Endpoint;

@WebService(targetNamespace="")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class WebServiceServer {

 public void init(){
  String url = "http://localhost:8089/myWebService";
  System.out.println("发布Web Service:"+url);
  Endpoint.publish(url, new WebServiceServer());
 }
 
 public String doSomething(String param){
  return "web service:"+param;
 }
 
 public static void main(String[] args) {
  new WebServiceServer().init();
 }

}

 

2.启动Web Service服务

运行类WebServiceServer.java

访问URL:http://localhost:8089/myWebService?wsdl

得到以下的页面,说明启动一个Web Service成功

3.生成接口

在命令行键入:wsimport -s d:/test -keep http://localhost:8089/myWebService?wsdl

此时会在文件test下生成以下文件


package com.webservice.server;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;


/**
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.1 in JDK 6
 * Generated source version: 2.1
 *
 */
@WebService(name = "WebServiceServer", targetNamespace = "http://server.webservice.com/")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface WebServiceServer {


    /**
     *
     */
    @WebMethod
    public void init();

    /**
     *
     * @param arg0
     * @return
     *     returns java.lang.String
     */
    @WebMethod
    @WebResult(partName = "return")
    public String doSomething(
        @WebParam(name = "arg0", partName = "arg0")
        String arg0);

}

 

 


package com.webservice.server;

import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;
import javax.xml.ws.WebServiceFeature;


/**
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.1 in JDK 6
 * Generated source version: 2.1
 *
 */
@WebServiceClient(name = "WebServiceServerService", targetNamespace = "http://server.webservice.com/", wsdlLocation = "http://localhost:8089/myWebService?wsdl")
public class WebServiceServerService
    extends Service
{

    private final static URL WEBSERVICESERVERSERVICE_WSDL_LOCATION;

    static {
        URL url = null;
        try {
            url = new URL("http://localhost:8089/myWebService?wsdl");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        WEBSERVICESERVERSERVICE_WSDL_LOCATION = url;
    }

    public WebServiceServerService(URL wsdlLocation, QName serviceName) {
        super(wsdlLocation, serviceName);
    }

    public WebServiceServerService() {
        super(WEBSERVICESERVERSERVICE_WSDL_LOCATION, new QName("http://server.webservice.com/", "WebServiceServerService"));
    }

    /**
     *
     * @return
     *     returns WebServiceServer
     */
    @WebEndpoint(name = "WebServiceServerPort")
    public WebServiceServer getWebServiceServerPort() {
        return (WebServiceServer)super.getPort(new QName("http://server.webservice.com/", "WebServiceServerPort"), WebServiceServer.class);
    }

    /**
     *
     * @param features
     *     A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy.  Supported features not in the <code>features</code> parameter will have their default values.
     * @return
     *     returns WebServiceServer
     */
    @WebEndpoint(name = "WebServiceServerPort")
    public WebServiceServer getWebServiceServerPort(WebServiceFeature... features) {
        return (WebServiceServer)super.getPort(new QName("http://server.webservice.com/", "WebServiceServerPort"), WebServiceServer.class, features);
    }

}

 

4.客户端访问Web Service

package com.webservice.client;

import com.webservice.server.WebServiceServerService;

public class WebServiceClient {

 public static void main(String[] args) {
  WebServiceServerService service = new WebServiceServerService();
  String returnValue = service.getWebServiceServerPort().doSomething("hello world");
  System.out.println("returnValue="+returnValue);
 }

}