package com.zhangy.webservice;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;@WebServicepublic interface IMyService { /** * @WebResult(name="add") * 此注解可加可不加,如果加了但不指定name屬性的值跟沒加是一樣的, * 加上name的效果就是在wsdl文件的定義中將該方法的返回值的名稱固定了, * 而不是【方法名Response】,例如add方法的返回參數(shù)的定義將為:addResponse * * @WebParam(name="a") * 此注解是將方法的參數(shù)的名稱用一個有意義的名稱進行定義, * 如果不定義那wsdl中將是arg0、arg1....這種無意義的名稱 * @param a * @param b * @return */// 如果不想用默認的命名空間(包反轉),可以通過如下方法修改//// @WebService("targetNamespace=http://com.zhangy.webservice/")//// 需要注意的是:如果只在接口上加上這個自定義的命名空間而不在實現(xiàn)類上加會導致wsdl文件里命名空間出現(xiàn)2個不同的(一個默認、一個自定義) @WebResult(name="addResult") public int add(@WebParam(name="a")int a,@WebParam(name="b")int b); public int minus(int a,int b); }2、服務接口的實現(xiàn)類
package com.zhangy.webservice;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;@WebService(endpointInterface="com.zhangy.webservice.IMyService")//這里指定服務的接口類的路徑public class MyServiceipml implements IMyService { @Override @WebResult(name="addResult") public int add(@WebParam int a,@WebParam int b) { // TODO Auto-generated method stub System.out.PRintln(a+"+"+b+"="+(a+b)); return a+b; } @Override public int minus(int a, int b) { // TODO Auto-generated method stub System.out.println(a+"-"+b+"="+(a-b)); return a-b; }}3、服務發(fā)布類
package com.zhangy.webservice;import javax.xml.ws.Endpoint;public class MyServer { public static void main(String[] args) { String address = "http://localhost:8888/ns"; Endpoint.publish(address, new MyServiceIpml()); }}4、測試類
package com.zhangy.webservice;import java.net.MalformedURLException;import java.net.URL;import javax.xml.namespace.QName;import javax.xml.ws.Service;public class TestCilent { public static void main(String[] args) { try { URL url = new URL("http://localhost:8888/ns?wsdl"); //使用namespaceURL和服務名創(chuàng)建QName //<definitions ... targetNamespace="http://ws01.yzl.com/" name="MyServiceImplService"> //<service name="MyServiceImplService"> QName sname = new QName("http://webservice.zhangy.com/", "MyServiceIpmlService"); //創(chuàng)建服務 Service service = Service.create(url,sname) ; //服務器和客戶端在同一機器時可以直接用服務的接口類,不在同一機器的具體用法見后面的章節(jié) IMyService ms = service.getPort(IMyService.class); ms.add(1, 1); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
新聞熱點
疑難解答