最近在项目中使用webservice连接调用其他系统的接口,自己学习了一下webservice。demo如下
1.基于jdk1.6以上jdk自带的webservice,我们在jdk安装目录下的bin目录下可以看到wsimport.exe的文件,这个文件就是用于webservice的,在命令行输入wsimport我们会看到
下面是webservice接口
@WebService public interface WebServiceServer { public void sayService(); public void sayService(String name); }
webservice服务端实现类
@WebService //@SOAPBinding(style=Style.RPC) public class WebServiceServerImpl implements WebServiceServer { @Override @WebMethod(exclude=true) public void sayService() { System.out.println("此方法不开放"); } @Override public void sayService(String name) { System.out.println("Hi, I'm " + name); } }
发布接口
public class Server { private final static String ADDR = "http://localhost:8888/testWebService/helloWorld"; public static void main(String[] args) { WebServiceServer server = new WebServiceServerImpl(); Endpoint.publish(ADDR, server); } }
此处localhost表示本机,如果在不同机器上使用改为对应的ip地址
发布后访问地址
点击右边的URL?wsdl就可以看到对应的webservice报文信息了
接着我们可以在命令行使用命令生成客户端代码了
wsimport -s . -p com.share.server http://localhost:8888/testWebService/helloWorld?wsdl
生成代码
将.class文件删除即可:
接着客户端代码
public class WebClient { public static void main(String[] args) { WebServiceServerImpl ws = new WebServiceServerImplService().getWebServiceServerImplPort(); ws.sayName("张三"); } }
输出 Hi, I'm 张三 则调用成功
2.基于cxf的
首先我们需要下载Apache-cxf,然后解压配置环境变量,接着查看里面的示例,我们从lib包中选择
asm-3.3.1.jar
cxf-2.6.2.jar
geronimo-servlet_2.5_spec-1.1.2.jar
neethi-3.0.2.jar
wsdl4j-1.6.2.jar
xmlschema-core-2.0.3.jar
jetty-continuation-7.5.4.v20111024.jar
jetty-http-7.5.4.v20111024.jar
jetty-io-7.5.4.v20111024.jar
jetty-security-7.5.4.v20111024.jar
jetty-server-7.5.4.v20111024.jar
jetty-util-7.5.4.v20111024.jar
下面直接上代码
接口
@WebService public interface IBirthAddr { public String getBirthAddr1(String addr); }
实现类
@WebService(endpointInterface="com.share.server_cxf.IBirthAddr") public class BirthAddrImpl implements IBirthAddr { @Override public String getBirthAddr1(String addr) { return "我出生于:" + addr; } }
发布类
public class Publish { public static void main(String[] args) { testJaxwsServerFactoryBean(); } public static void testJaxwsServerFactoryBean() { // 1.创建ServerFactoryBean的对象,用于发布服务 JaxWsServerFactoryBean server = new JaxWsServerFactoryBean(); // 2.设置服务发布地址 server.setAddress("http://192.168.1.100:9999/ws_cxf1"); // 3.设置服务发布的接口 server.setServiceClass(IBirthAddr.class); // 4.设置服务的发布对象 server.setServiceBean(new BirthAddrImpl()); // 5.使用create方法发布服务 server.create(); System.out.println("cxf"); } }
另外你导入cxf文件夹下的lib的全部包注意
需要添加
Stax2-api-3.1.4.jar woodstox-core-asl-4.4.1.jar否则报错
删除:cxf-services-ws-discovery-api-3.1.4.jar
cxf-services-ws-discovery-service-3.1.4.jar
cxf-services-wsn-api-3.1.4.jar
cxf-services-wsn-core-3.1.4.jar
四个包
否则报错
客户端生成代码命令
wsdl2java -d . -p com.share.server http://192.168.1.100:9999/ws_cxf1?wsdl
-d表示当前目录 -d 与 . 之间有空格
-p 指定包名
注意jdk与cxf的版本问题,否则wsdl2java命令不能使用
生成的文件如下:
客户端调用代码
public class Call { public static void main(String[] args) { testClientProxyFactoryBean(); } public static void testClientProxyFactoryBean() { // 1.创建ClientProxyFactoryBean的对象,用于接收服务 JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean(); // 2.设置服务的发布地址,表示去哪里过去服务 bean.setAddress("http://192.168.1.3:9998/ws_cxf1"); // 3.设置服务的发布接口,使用本地的代理接口 bean.setServiceClass(IBirthAddr.class); // 4.通过create方法返回接口代理实例 IBirthAddr ws = (IBirthAddr) bean.create(); // 5.调用远程方法 System.out.println(ws.getBirthAddr1("上海")); } }
打印 :我出生于:上海成功
相关推荐
Webservice入门教程_用JDK开发Webservice示例代码
jdk webservice demo 这是个java工程,导入eclipse之后,把里面的jre换成你自己的就可以了。
含服务器和客户端两个工程,服务启动,客户端可以正常访问
webservice基于JDK演示service与client以及所需jar,使用wsimport进行Stub生成
jdk自动生成webservice 最简单的webservice
NULL 博文链接:https://quicker.iteye.com/blog/2323577
JDK1.7版本使用 webService 需要添加两个额外 jar 包,否则会报错,需要将这两个 jar 包放到 jre/ext 目录下,同时配置jre/lib 下得 java.security 文件
Java 基于第三方插件实现WebService实在麻烦,尤其是要添加几十M的Jar包,有时还会导致项目冲突。还好,自从JDK 1.6开始,Java自身已经支持WebSeervice的开发即JAX-WS,附件是一个简单的示例,供入门参考。注意,JDK...
介绍了使用JDK、Eclipse搭建服务器端和客户端服务程序的基本过程,提供了服务器端和客户端应用测试程序。
文档描述了通过jdk6开发webservice的例子 生成客户端代码的方法
JDK1.6支持WebService dfdddddddddddddddddddddddd
jdk6下开发webservice示例,JDK1.6 自带webservice构建,jdk6原生态webservice
NULL 博文链接:https://nancychengnan.iteye.com/blog/2104532
NULL 博文链接:https://log-cd.iteye.com/blog/2237010
通过这个实例可以简单了解webservice.实现的方法是用jdk自带的功能。 此份资料是在blogjava中找到的,供入门学习使用。
WebService使用JDK发布
纯jdk6实现的webservice,非常好用! 可以实现非常简单的发布方法和远程调用机制。
使用1.6以上版本的jdk就可以直接生成webservice的接口的客户端 java的代码
使用java自带的jdk,实现webservice的服务发布,可以运行,里面描述了我操作的所有步骤
jdk7 原生的监控包含很多编程细节, 实际工作不得不处理这些复杂的细节,这里进行轻量封装 提取出fileCreated,fileModified,fileDeleted,fileRenamed等更好用的接口