首页 > 代码库 > 自定义webService

自定义webService

要生成一个wsdl,首先要有一个ws,建立一个简单的ws

package com.bxw.server;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

/*
 *  自定义ws服务, jdk1.6版本仅仅支持 soap1.1格式,jdk1.7及以上版本支持 soap1.2格式
 *  发布ws服务只需要@WebService注解即可, 如果想要更好的可维护性,则可以通过注解来实现
 * */
@WebService // 默认静态的方式是不能发布ws服务的
(
        name="MyWebService1",  // 服务实现类的名称
        serviceName="MyWebServiceService1",  // 默认在发布的服务实现者的名称后面添加Service
        portName="MyWebServicePort1",   // 服务类型的名称: 默认在 发布的服务实现者(MyWebService) 后面添加 port
        targetNamespace="com.bxw.ws"    // 发布ws服务的命名空间,此空间默认为当前服务包路径的 "倒写"此名称也是 wsimport 命令生成 java类时默认的包路径 -p
)
public class WebService1 {
    
    @WebMethod(exclude=true)  // 默认public方法可以发布为ws服务, 如果要排除则配置  exclude=true
    public String saySth(String text){
        return "say"+text;
    }
    
    //可以指定wsdl中的方法名,参数名和返回值
    @WebMethod(operationName="saySth")
    public @WebResult(name="result") String saySth(@WebParam(name="text") String text,@WebParam(name="age") String age){
        return "say "+text+"|| age "+age;
    }
    public static void main(String[] args) {
        String address = "http://localhost:9090/ws";
        Endpoint.publish(address, new WebService1());
        System.out.println("访问wsdl的地址:"+address+"?WSDL");
    }
}

要创建一个ws,只需要添加@webService注解即可。其余注解用法已写在注释中。运行后,访问服务发布的地址:http://localhost:9090/ws?wsdl

技术分享

之后创建客户端:

cmd运行wsimport命令后,将生成的java文件copy至客户端项目中。

package com.bxw.client;

import java.net.MalformedURLException;
import java.net.URL;

import com.bxw.ws.MyWebService1;
import com.bxw.ws.MyWebServiceService1;

public class WebClient {
    public static void main(String[] args) throws MalformedURLException {
        URL url = new URL("http://localhost:9090/ws?WSDL");
        MyWebServiceService1 service = new MyWebServiceService1(url);
        MyWebService1 ss = service.getMyWebServicePort1();
        System.out.println(ss.saySth("a", "1"));
    }
}

url可以在配置文件中配置,以防路径改变。

自定义webService