本文主要讲的事基于JWS的web服务的构建
在构建web服务时,必须要声明表明SEI(Service EndPoint Interface,服务提供的接口)和SIB(Service Implementation Bean,服务实现类)
服务端代码的编写:
步骤一:创建服务的接口
package com.wyj.service; import javax.jws.WebService; @WebService //表明是服务发布的接口 public interface IMyservice { public int add(int a,int b); public String sayHi(String name); }步骤二:创建实现类:
package com.wyj.service; import javax.jws.WebService; //表明是服务实现类 @WebService(endpointInterface="com.wyj.service.IMyservice") public class MyServiceImpl implements IMyservice { @Override public int add(int a,int b) { //完成2个数的加法 System.out.println("Server: "+a+"+"+b+"="+(a+b)); return a+b; } @Override public String sayHi(String name) { System.out.println("Server: Hi,"+name); return "Hi,"+name; } }
步骤三:发布服务:
package com.wyj.service; import javax.xml.ws.Endpoint; public class MyServer { public static void main(String[] args) { String address ="http://localhost:6789/ns"; Endpoint.publish(address,new MyServiceImpl()); } }
其中address表示是服务发布的地址,即服务的URL;
运行MyServer后,在浏览器中输入http://localhost:6789/ns?wsdl就可以访问web服务。返回的结果就是一个xml文档。
wsimport -d c:/webservice -keep -verbose http://localhost:6789/ns?wsdl,即可在C盘的webservice中得到客户端的代码(前提是在C盘下存在webservice的目录)
wsimport的命令说明:
http://localhost:6789/ns?wsdl:是服务端发布的地址
步骤二:通过客户端调用webservice服务
2.创建客户端应用程序
方法一:
package com.wyj.service; public class MyClient { public static void main(String[] args) { MyServiceImplService myservice = new MyServiceImplService(); IMyservice service = myservice.getMyServiceImplPort(); System.out.println(service.add(22,13)); System.out.println(service.sayHi("monkey")); } }方法二:
package com.wyj.service; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; public class MyClient { public static void main(String[] args) { try { //创建访问web服务地址的url URL url = new URL("http://localhost:6789/ns?wsdl"); //通过QName指明服务的具体信息 QName qname = new QName("http://service.wyj.com/","MyServiceImplService"); //创建服务 Service service = Service.create(url,qname); IMyservice ms = service.getPort(IMyservice.class); System.out.println(ms.add(22,13)); System.out.println(ms.sayHi("wyj")); } catch (MalformedURLException e) { // Todo Auto-generated catch block e.printstacktrace(); } } }以上2中方法都可以完成对服务端的调用,但是一般使用第一种,第二种使用太繁琐了。
35
Hi,monkey
在服务端的输出为:
Server: 22+13=35
Server: Hi,monkey
Server: Hi,monkey
到这里,就完成了客户端调用服务端完成对应操作的过程。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。