要生成一个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可以在配置文件中配置,以防路径改变。
时间: 2024-10-10 11:11:01