文档章节

使用JDK自带的WebService

摆渡者
 摆渡者
发布于 2015/08/24 18:22
字数 1137
阅读 1060
收藏 21

WebService是个好东西,话不多说,干净利落

服务器端

来看下服务器端的结构:

先定义一个接口,用于暴露:

package com.abc.webservice;
/**
 * 对外暴露的接口。
 */
public interface IWebService {
    public String hello(String who);
}

再定义这个接口的实现类:

package com.abc.webservice.impl;

import javax.jws.WebService;
import com.abc.webservice.IWebService;

/**
 * wsdl:portType: MyService
 * wsdl:service: MyWebService
 */
@WebService(name="MyService",
            serviceName="MyWebService",
            targetNamespace="http://www.abc.com")
public class WebServiceImpl implements IWebService {
    @Override
    public String hello(String who) {
        return "Hello " + who + "!";
    }
}

注意这里的name,它表示

The name of the Web Service. Used as the name of the wsdl:portType when mapped to WSDL 1.1.

serviceName,它表示

The service name of the Web Service. Used as the name of the wsdl:service when mapped to WSDL 1.1. 

targetNamespace,就是你为Java客户端生成的代码的包名啦,生成的包名会自动反过来写,比如上面的是www.abc.com,生成的包名则会为package com.abc.* 。

最后将WebService发布出去:

package com.abc.webservice;

import javax.xml.ws.Endpoint;
import com.abc.webservice.impl.WebServiceImpl;

/**
 * 发布WebService
 */
public class Publisher {
    public static void main(String[] args) {
        System.out.println("Start publish service");
        Endpoint.publish("http://localhost:8080/MyService", new WebServiceImpl());
        System.out.println("End publish service");
    }
}

这之后,可以打开浏览器,输入刚刚发布的URL:http://localhost:8080/MyService,去看看效果了:

点击上图中的超链接,可以看到生成的wsdl,以下是生成的wsdl: