JAX_WS 2.2 规范的webservices客户端实现(Axis2,Cxf)
为了对接之前老版本的接口,折腾了好几个小时.
主要是目前我的程序采用的是axis2的jax_rpc方式发布webservices服务,用这种服务的客户端,去调用老版本的jax_ws 2.2的接口,会报Runtime空指针。
于是采用cxf,使用了cxf3.0.3(当前版本) 的wsdl2java工具,生成了客户端的代码:
wsdl2java ****?wsdl
写了一个测试类来调用:
package com.test; import java.net.MalformedURLException; import java.net.URL;/*** Created by wang on 15-1-27.*/ public class Test {public static void main(String[] args) {URL wsdlLocation= null;try {wsdlLocation = new URL("***");NocPacket nocPacket=new NocPacket();nocPacket.setPayload("lasdfsfsdf");EventForwarderService service=new EventForwarderService(wsdlLocation);EventForwarderInterface ss=service.getEventForwarderPort();FeedResult result=ss.send(nocPacket);System.out.println(result.getResultDesc());} catch (MalformedURLException e) {e.printStackTrace();}} }
测试没问题,能够调用ok。
不过此处有一个问题。如果用jdk7的话,它的包里面已经有jax_ws 2.2 的实现构造方法,不会报问题。但是如果用jdk6, cxf生成的代码中,继承的Services.class少一个带Feature的构造方法,jdk6默认只有一个构造。这里说的比较含糊,看一下jdk源码可以看出来问题的。用jdk6的话,要引入cxf的一个包:geronimo-jaxws_2.2_spec-1.2.jar 。cxf的压缩包自带的有。
然后要配置下包的加载顺序,引入的geronimo-jaxws_2.2_spec-1.2包优先加载,其次是jdk。如果是eclipse,在环境路径中,修改一下顺序。如果是Idea,在module中,也调整一下顺序。这样,在jdk6下也可以正常使用。
之所以没有采用cxf,是因为集成到axis2的环境中,包会冲突。
自身用的axis2,却用cxf的client,太坑。发现axis2也有wsdl2java的工具,果断用它来生成了客户端代码,这个生成的代码只有两个类,看上去很简洁:
wsdl2java -uri ***?wsdl -o src
配置一下生成代码的目录为src。
代码是生成了,但是调用代码却折磨了好一会儿,根据网上的代码,是不行的。所以这里分享一下,以免后人多走弯路。
package com.wang;import java.rmi.RemoteException; import org.apache.axis2.AxisFault; public class TestMain {public static void main(String[] args) {try {NocPacket nocPacket=new NocPacket(); nocPacket.setPayload("1232311");String urlString="****";EventForwarderServiceStub stub=new EventForwarderServiceStub(urlString);Send send=new Send();send.setNocPacket(nocPacket);SendE sende=new SendE();sende.setSend(send);;try {SendResponse response=stub.send(sende).getSendResponse();FeedResult result=response.getResult();System.out.println(result.getResultDesc());} catch (RemoteException e) {// TODO Auto-generated catch block e.printStackTrace();}} catch (AxisFault e) {// TODO Auto-generated catch block e.printStackTrace();}} }
网上的代码,比如这里调用我需要的send方法的话,他们直接是用send方法。但是本人试验了很多次都不成功,必须中间经过SendE这个方法对象。不知道这个是不是axis2后来修改过。
如此折腾了很久,终于在工程中,只用axis2就完成了服务端和客户端的所有操作。
转载于:https://www.cnblogs.com/juepei/p/4256241.html
JAX_WS 2.2 规范的webservices客户端实现(Axis2,Cxf)相关推荐
- 使用IDEA根据wsdl生成WebServices客户端代码-Java
生成代码的操作可以在已经存在的项目中进行,也可以在新建的项目中进行 下面新建一个项目进行客户端代码生成操作 依次点击File-->New-->Project新建一个新项目 选择Java,并 ...
- WebServices客户端代码生成
方式一: 官网下载cxf运行包:http://cxf.apache.org/download.html axis2:http://axis.apache.org/axis2/java/core/dow ...
- IntelliJ IDEA根据wsdl生成WebServices客户端代码 Sprinng Boot
最近项目要用到一个发票开票接口,但是对方居然用的是webService的方式调用,而我们用的是SpringBoot IDEA在2019的版本后就没有显示的集成WebService了,导致找了很多种方式 ...
- 客户端(C#)调用CXF搭建的webservice的出现一些问题记录
最近把XFire框架搭建的一个webservice换成CXF框架.访问webservice的客户端是C#写的.客户端调用webservice,数据能在客户端得到.看起来显然是成功了. 但其中在VS中添 ...
- springboot调用webServices(生成固定客户端代码调用,非动态调用)
## 环境 jdk-1.8.springboot-2.3.10.RELEASE.SAOP-1.1 一.SAOP工具测试 使用SaopUI工具测试: 1)File->New SAOP Projec ...
- WebService客户端几种实现方式
文章目录 一.发布一个webservice服务(jdk原生) 1.编写服务接口 2.服务实现类 3.发布服务 4.浏览器查看是否发布成功 二.几种客户端调用方式 1.jdk原生调用(需要获取服务接口文 ...
- 客户端,服务器,天气预报
引用:http://www.cnblogs.com/zhangdongzi/archive/2011/04/19/2020688.html 上一节中我们通过http协议,采用HttpClient向服务 ...
- 如何在HTTP客户端与服务器端之间保持状态(转)
HTTP协议与状态保持HTTP协议本身是无状态的,这与HTTP协议本来的目的是相符的,客户端只需要简单的向服务器请求下载某些文件,无论是客户端还是服务器都没有必要纪录彼此过去的行为,每一次请求之间都是 ...
- Java EE 7中的WebSocket客户端API
在本文中,让我们探索谈论较少的Web Socket Client API,以及如何在Java EE 7容器本身中利用它. Web套接字服务器API规则 JSR 356的服务器端API(Java的Web ...
最新文章
- jira 8.2.1 安装 及一些常见的坑
- 实战部署MySQL用户认证的Postfix邮件系统(3)
- QT绘制散点图(2)
- node安装和使用redis
- 【theano-windows】学习笔记四——theano中的条件语句
- excel数据生成sql insert语句
- 5个Python特性 越早知道越好的
- 3Dslicer +VS2013编译介绍
- Java如何将Ftp文件解压_ftp解压工具,ftp解压工具在java环境下配置其连接
- netron神经网络可视化
- Python基于wordnet实现词语相似度计算分析
- java爬虫模拟登陆_java爬虫实战之模拟登陆
- Java转码amr_java实现amr转mp3
- Struts2通配符和动态方法调用
- SPSS神经网络心得(一)
- 基于Java springmvc+mybatis酒店信息管理系统设计和实现
- 网络诈骗有哪些防范措施
- CANopen协议学习
- 科学计数法 与 普通数字 转换
- 杜笙除镍树脂Tulsimer CH-90实际运用案例
热门文章
- MySQL5.7的date类型_Mysql5.7 虚拟列数据类型为DATE时,如何存入数据?
- 取余运算怎么算_TensorFlow2.0(2):数学运算
- mysql 函数返回表格_mysql 数据分析如何实现日报、周报、月报和年报?
- Flex 布局详解 - 转自阮一峰老师
- 微信小程序学习做动画效果
- 【iOS】通过NSURLProtocol提高Web加载速度
- 微信小程序(canvas)画图保存到本地相册(wepy)
- jfinal框架下使用c3P0连接池连接sql server 2008
- ASP.NET WebAPi之断点续传下载(下)
- 服务器产品选型与性价比图解