WebService—快速实现一个基于JAX-WS的WebService项目(二)
前篇我们是在本地项目中创建一个客户端,测试访问。 实现过程中,发现实现接口的时候,依然依赖于IMyService接口,不能满足WebService异构平台之间的交互(跨语言、跨平台)。 于是,本篇我们引入了wsimport的使用,使用之前别忘了(1)开启服务(发布wsdl)。 (2)在命令提示符窗口中使用命令: E:&;wsimport -d E:Eclipsewebserviceimport 1 -keep -verbose http://localhost:8887/ns?wsdl ? -d <directory> 指定生成的目录 效果如图:
? (3)新建项目测试 去我们指定的文件夹,把使用wsimport生成的文件copy到新项目中。
项目文件目录如下:
(前篇是在原项目中测试,存在代码依赖,本篇使用wsimport生成文件并导入到新项目中,去掉了对于原项目代码的依赖) (4)测试访问 TestClient.java package org.zttc.service; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; public class TestClient { public static void main(String[] args) { try { //创建访问WSDL服务地址的URL URL url = new URL("http://localhost:8887/ns?wsdl"); //通过QName指明服务的具体信息 QName sname = new QName("http://service.zttc.org/","MyServiceImplService"); //创建服务 Service service = Service.create(url,sname); //实现接口 IMyService ms = service.getPort(IMyService.class); System.out.println(ms.add(12,33)); //以上服务有问题,依然依赖于IMyService接口 } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
TestClient2.java package org.zttc.service; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; public class TestClient2 { public static void main(String[] args) throws MalformedURLException { //创建访问WSDL服务地址的URL URL url = new URL("http://localhost:8887/ns?wsdl"); //通过QName指明服务的具体信息 QName sname = new QName("http://service.zttc.org/","MyServiceImplService"); MyServiceImplService msis = new MyServiceImplService(url,sname); //MyServiceImplService msis = new MyServiceImplService(); IMyService ms = msis.getMyServiceImplPort(); System.out.println(ms.minus(29,11)); } }
MyServiceImplService msis = new MyServiceImplService(url,sname); 通过msis的getMyServiceImplPort()方法拿到IMyService。 最终屏蔽了原项目中的Java代码,实现WebService异构平台之间的交互。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |