最近两天自己简单了解了一下关于WebService的知识,在此做下笔记,以备今后查找。
环境:Windows 7、JDK 1.6.25
1.首先建立Web工程JWS,创建包com.project.ws.
2.新建接口IWebService.java,代码如下:
package com.project.ws; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding.Style; @WebService(targetNamespace="http://ws.project.com") @SOAPBinding(style = SOAPBinding.Style.RPC) public interface IWebService { @WebMethod(action="toGetName",operationName="toGetName",exclude=false) @WebResult(name="returnName")//自定义该方法返回值在WSDL中相关的描述 public String getName(@WebParam(name="name")String name);//获取名字 @WebMethod(action="toGetResult",operationName="toGetResult",exclude=false) @WebResult(name="returnResult") public int getResult(@WebParam(name="a")int a,@WebParam(name="b")int b);//求和 }
3.新建类WebServiceServer.java并实现IWebService接口,代码如下:
package com.project.ws; import javax.jws.WebService; @WebService(endpointInterface = "com.project.ws.IWebService") public class WebServiceServer implements IWebService { /** * 获取名称 */ public String getName(String name) { if("huawuying".equals(name)){ return "花无影"; }else{ return name; } } /** * 获取计算结果 */ public int getResult(int a, int b) { return (a+b); } }
/** * 服务发布类 */ package com.project.ws; import javax.xml.ws.Endpoint; /** * @author Administrator * @category 发布服务 */ public class WebService { public static void main(String[] args){ try{ WebServiceServer server = new WebServiceServer(); Endpoint.publish("http://127.0.0.1:8080/JWS", server); System.out.println("WebService发布成功!"); }catch(Exception e){ System.out.println("发布WebService发生异常!"+e.getMessage()); } } }
package com.project.ws; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; public class WSClient { public static void main(String[] args){ try { URL url = new URL("http://127.0.0.1:8080/JWS/?wsdl"); // 第一个参数是服务的URI // 第二个参数是在WSDL发布的服务名//此处QName参数说明:param1[IWebService中指定的targetNamespace命名空间URI];param2[IWebService实现类名称+Service] 此处为本人参考JDK API文档所添加的注释,如有错误,请各位指正。 QName qname = new QName("http://ws.project.com/","WebServerService"); // 创建服务 Service service = Service.create(url, qname); // 提取端点接口,服务“端口”。 IWebService webService = service.getPort(IWebService.class); System.out.println(webService.getName("huawuying")); System.out.println(webService.getResult(15, 20)); } catch (MalformedURLException e) { System.out.println("调用WebService发生异常!"+e.getMessage()); e.printStackTrace(); } } }
文章转载自http://my.oschina.net/u/658145/blog/96528