架构师之webservice-----------最快发布和调用webservice(分客户
发布时间:2020-12-16 23:04:46 所属栏目:安全 来源:网络整理
导读:1.前言. ? 以前只写过tomcat发布webservice,这个有点麻烦,最快最优雅的发布是直接用jdk来,这样比较能解耦.客户端也是一样. 2.直接代码. 服务器: package com.whaty.platform.ws.client;import java.net.MalformedURLException;import java.net.URL;import ja
1.前言.
? 以前只写过tomcat发布webservice,这个有点麻烦,最快最优雅的发布是直接用jdk来,这样比较能解耦.客户端也是一样. 2.直接代码. 服务器: package com.whaty.platform.ws.client; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; import com.whaty.platform.ws.server.IMyservice; /** * @className:MyClient.java * @Desc:访问发布的服务 * @author:lizhuang * @createTime:2012-12-21 上午01:23:57 */ public class MyClient { public static void main(String[] args) { try { //服务WSDL Document的地址 URL url = new URL("http://localhost:7777/tudou?wsdl"); //Qnameqname是qualified name 的简写 //2.构成:由名字空间(namespace)前缀(prefix)以及冒号(:),还有一个元素名称构成 //由发布的wsdl可知namespace为http://server.ws.platform.whaty.com/, QName qname=new QName("http://server.ws.platform.whaty.com/","MyServiceImplService"); Service service=Service.create(url,qname); IMyservice ms=service.getPort(IMyservice.class); ms.add(1,4); ms.minus(1,4); } catch (MalformedURLException e) { e.printStackTrace(); } } } package com.whaty.platform.ws.server; import javax.jws.WebService; /** * @className:IMyservice.java * @Desc:定义:SEI service endpoint interface * @author:lizhuang * @createTime:2012-12-21 上午12:57:18 */ //JAX-WS注解,表示java api xml for webservice。JDK自带API的XML格式的webservice @WebService public interface IMyservice { int add(int a,int b); int minus(int a,int b); } package com.whaty.platform.ws.server; import javax.xml.ws.Endpoint; /** * @className:MyServer.java * @Desc:发布服务 * @author:lizhuang * @createTime:2012-12-21 上午01:02:39 */ public class MyServer { public static void main(String[] args) { //访问方式:http://localhost:7777/tudou?wsdl String address="http://localhost:7777/tudou"; Endpoint.publish(address,new MyServiceImpl()); } } package com.whaty.platform.ws.server; //endpointInterface指定接入点接口:接口必须存在 import javax.jws.WebService; @WebService(endpointInterface="com.whaty.platform.ws.server.IMyservice") public class MyServiceImpl implements IMyservice { public int add(int a,int b) { System.out.println("a+b="+(a+b)); return a+b; } public int minus(int a,int b) { System.out.println("a-b="+(a-b)); return a-b; } } 客户端(需要自动先生成客户端文件,这个看3所述. package Test; import com.whaty.platform.ws.server.IMyservice; import com.whaty.platform.ws.server.MyServiceImplService; public class MyClient2 { public static void main(String[] args) { MyServiceImplService myServiceImplService=new MyServiceImplService(); IMyservice msis= myServiceImplService.getMyServiceImplPort(); msis.add(1,4); msis.minus(1,4); } } 3.如何调用? (1)WebserviceZhujie工程直接ctrl+f12运行MyServer的main方法,则发布server. (2) http://localhost:7777/tudou?wsdl则可以验证是否发布成功. (3)调用java自带的webservice客户端生成工具. ? cmd进入电脑的dos输入框 ??? cd %JAVA_HOME% ??? cd bin ??? wsimport -d d: -keep -verbose http://localhost:7777/tudou?wsdl 这样就在d盘生成了com为主目录的文件. (3)把d盘com下文件都copy到eclipse的src里面,并执行MyClient2的main方法,ok! 4.运行中执行了一个加法程序,显示结果为: a+b=5 a-b=-3本文主要参考csdn的大牛yaerfeng的原创,再次对原创致敬! 参考连接: http://blog.csdn.net/yaerfeng/article/details/8352307 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 如何从scala播放大部分静态页面!应用程序像不同
- yum syntax to update all except Kernel
- angular – “类型’对象’不能分配给”使用新的
- 轻松掌握WebService技术后台—Soap图解法
- WebService runtime modeler error: Wrapper cla
- 轻松安装docker并运行docker swarm模式
- angularjs – 如何在Angular 1.5组件中对具有不同
- docker client(docker 1.12 / centos)http:serv
- twitter-bootstrap – 如何更改Bootstrap 3面包屑
- 简单的Scala演员问题
热点阅读