webservice01#第一个例子#wsimport
1, WebService 是实现异构平台间的交互;CXF、Axis、Metro等框架可以帮我们实现WebService;Jax-WS(Java api xml webservice)是基于java api实现的webservice。
2,快速实现一个基于JWS的WebService项目步骤;
1,服务器的建立: 创建接口;创建实现类;启动服务。
两个专有名词: SEI(Service Endpoint interface)服务提供接口,SIB(Service implemention Bean)
简单例子:
接口
package com.yangw.webservice.service; import javax.jws.WebService; //说明该接口是服务提供接口 @WebService public interface IMyService { public int add(int a,int b); public int minus(int a,int b); }
实现类
package com.yangw.webservice.service; import javax.jws.WebService; //说明此类是那个接入点接口的实现类 @WebService(endpointInterface="com.yangw.webservice.service.IMyService") public class MyServiceImpl implements IMyService { @Override public int add(int a, int b) { System.out.println(a+"+"+b+"="+(a+b)); return a+b; } @Override public int minus(int a, int b) { System.out.println(a+"-"+b+"="+(a-b)); return a-b; } }
启动服务
package com.yangw.webservice.service; import javax.xml.ws.Endpoint; public class MyService { public static void main(String[] args) { // 发布到的地址 String address="http://localhost:8888/ns"; Endpoint.publish(address, new MyServiceImpl()); } }
然后在浏览器中输入: http://localhost:8888/ns?wsdl ,即可看到如下内容:
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://service.webservice.yangw.com/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="http://service.webservice.yangw.com/" name="MyServiceImplService"> <types> <xsd:schema> .......
客户端程序来访问:
package com.yangw.webservice.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 { URL url=new URL("http://localhost:8888/ns?wsdl"); //生成QName(名称空间,本地webservice提供的名称)
//名称空间,即前面的targetNamespace的内容
QName qName=new QName("http://service.webservice.yangw.com/","MyServiceImplService"); Service service=Service.create(url, qName); //从service中获得具体需要的接口 IMyService ms=service.getPort(IMyService.class); System.out.println(ms.add(1, 2)); } catch (MalformedURLException e) { e.printStackTrace(); } } }
客户端程序执行结果就会 打印出 3
上面客户端的不足: 本地依赖了服务端的IMyService接口
3, wsimport的使用
1·,创建一个目录,用于放wsimport命令生成的文件,只要安装了java6都会有这个命令
-d 后跟目录
-verbose 显示详细过程
-p 后跟包名,默认是 名称空间反过来
-keep 生成class文件后,保存源代码即java文件
2,将生成好的文件复制到新建的项目中,复制这个包即可。
然后写一个访问的客户端程序,这次就很简单了
*** 如果修改了服务器端的代码,需要使用wsimport重新导入***
package com.yangw.webservice.service; import java.net.URL; import javax.xml.namespace.QName; public class MyClient { public static void main(String[] args) throws Exception{ MyServiceImplService msis=new MyServiceImplService(); //获取服务接口,这个IMyService是我们本地的接口 IMyService ims=msis.getMyServiceImplPort(); System.out.println(ims.minus(10, 4)); //结果为6, //我们也可以使用代参数的构造,指定URL和QName URL url=new URL("http://localhost:8888/ns?wsdl"); //生成QName(名称空间,本地webservice提供的名称) QName qName=new QName("http://service.webservice.yangw.com/","MyServiceImplService"); MyServiceImplService msis2=new MyServiceImplService(url,qName); IMyService ims2=msis2.getMyServiceImplPort(); System.out.println(ims2.add(10, 4)); } }
未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负