当前位置: 首页 > 编程日记 > 正文

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

相关文章:

idea mybatis plugin插件,免费mybatis插件

idea的mybatis插件。一直想下一个,在大批量修改一些问题时候 mapper和.xml文件查看会方便许多。 直接在idea的插件market里看经常会卡住,直接去网站看。 于是去官网查查看,网站巨慢 https://plugins.jetbrains.com/ 曾经试过mybatis plugin的…

从头开始学习Unity着色器

MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确)|时长:56节课(4h 26m) |大小解压后:2.89 GB Unity Shaders和HLSL阴影语言的完整指南 你会学到: 编写Uni…

JDBC编程:2(数据库的基本操作)

数据库的基本操作 查询数据 在开始前先简单地介绍一下什么是静态SQL和动态SQL: 静态SQL,在编译阶段就可以确定数据库要做什么事情。在某种高级语言中,如果嵌入了SQL语句,而这个SQL语句的主体结构已经明确,例如在Jav…

[Asp.net 5] Options-配置文件(2)

很久之前写过一篇介绍Options的文章,2016年再打开发现很多变化。增加了新类,增加OptionMonitor相关的类。今天就对于这个现在所谓的新版本进行介绍。 老版本的传送门([Asp.net 5] Options-配置文件之后昂的配置)。 首先上一个图&a…

android-sdk-windows版本号下载

Android SDK 4.0.3 开发环境配置及执行 近期又装了一次最新版本号的ADK环境 眼下最新版是Android SDK 4.0.3 本文的插图和文本尽管是Android2.2的 步骤都是一样的,假设安装的过程中遇到什么问题,能够留言,我会尽快回复! 系统环境的…

vs code搭建Django环境

在网上找了很多博客,看了vs code的官方文档,最终拼凑起来,终于搭建起来了djangode开发虚拟环境(win10下) 一、新建项目文件夹 F:\Python\temp\django_demo(例子) 二、在项目文件夹创建虚拟pytho…

Marvelous Designer衣袖设计教程

大小解压后:2.96G 持续时间3h 28m 包含项目文件 1280X720 MP4 语言:英语中英文字幕(根据原英文字幕机译更准确) 标题:技能分享——卓越设计师大师班(袖子) 信息: 在我的课程中,精彩设计师大师班(袖子)。在本课程中&…

Mybatis入门:1(Mybatis框架的环境搭建)

Mybatis框架的环境搭建 一.创建maven工程并导入坐标 导入坐标&#xff1a; <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.4</version></dependency><d…

html表单的创建和css的构成

产品参数 <h2>LIFAair LA500参数表</h2><table><tr><td>测试数目</td><td>单位</td><td>数据</td></tr><tr><td>颗粒物CADR</td><td>m<sup>3</sup>/h</td><t…

Gartner2014年魔力象限(商业智能和分析平台)

转载于:https://www.cnblogs.com/crsn/p/4271377.html

@SupperssWarnings注解

SupperssWarnings注解&#xff1a;压制、控制警告 SuppressWarnings(“rawtypes”) 是什么含义 SuppressWarnings压制警告&#xff0c;即去除警告 rawtypes是说传参时也要传递带泛型的参数 SuppressWarnings(“unchecked”) unchecked 执行了未检查的转换时的警告 SuppressWarn…

虚幻引擎C++编程游戏开发基础

流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09;|大小解压后:23.8 GB |时长:44h 59m 学习C编程和游戏开发基础和虚幻引擎 你会学到什么 通过简单的例子和插…

Mybatis入门:3(动态sql)

动态sql语句 if标签 基本使用 一.在ProductDao接口中创建一个查询方法findByType import com.domain.Product;import java.util.List;public interface ProductDao {/*** 根据类型来查找* param product* return*/Product findByType(Product product); }二.在映射配置文件…

javaweb学习总结(二十三)——jsp自定义标签开发入门

一、自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码。 二、自定义标签开发和使用 2.1、自定义标签开发步骤 1、编写一个实现Tag接口的Java类(标签处理器类) 1 package me.gacl.web.tag;2 3 import java.io.IOException;4 5 import javax.servlet.http.HttpServle…

Java数组的三种声明方式

具体的细节大家可以不用先去了解,这涉及到很多知识,只要记住输出的时候,先导包,然后再利用Arrays.toString(arr)输出就行了。如:先定义好一个长度为4的新数组,此时数组为空,使用arr[ ]数组下标来进行逐个赋值。那我们定义好数组之后,就理所应当的对声明好的数组进行赋值。那么对于未涉及过编程的小伙伴,看到这可能会蒙了。原因就是我们sout(arr)时,输出的是这个数据的内存地址,而不是真实的数据。使用数组: 只需要一个变量,然后数组中存很多的数据, 其实可以把数组想成 一个容器。

Math: Math.atan() 与 Math.atan2() 计算两点间连线的夹角

Math.atan2()函数返回点(x,y)和原点(0,0)之间直线的倾斜角.那么如何计算任意两点间直线的倾斜角呢?只需要将两点x,y坐标分别相减得到一个新的点(x2-x1,y2-y1).然后利用他求出角度就可以了.使用下面的一个转换可以实现计算出两点间连线的夹角.然而,Math.atan()只能返回一个角度值,因此确定他的角度非常的复杂,而且,90度和270度的正切是无穷大,因为除数为零,我们也是比较难以处理的~!angel为一个角度的弧度值,slope为直线的斜率,是一个数字,这个数字可以是负的。

@RequiredArgsConstructor详解&@AllArgsConstructor和@RequiredArgsConstructor区别

RequiredArgsConstructor是Lombok的一个注解,简化了我们对@Autowired书写,我们在写Controller层或者Service层的时候,总是需要注入很多mapper接口或者service接口,如果每个接口都写上@Autowired,这样看起来就会很繁琐,@RequiredArgsConstructor注解可以代替@Autowired注解。

RDIFramework.NET ━ 9.8 用户权限管理 ━ Web部分

RDIFramework.NET ━ .NET快速信息化系统开发框架 9.8 用户权限管理 -Web部分 在实际应用中我们会发现&#xff0c;权限控制会经常变动&#xff0c;如&#xff1a;需要调整角色的分配&#xff0c;需要收回与授予某些角色、用户可访问的模块&#xff08;菜单&#xff09;与相应…

python并发

python并发 &#xff08;这部分还需要改&#xff0c;先将就着看&#xff09; Python 的 threading 模块引入了锁&#xff08;Lock&#xff09;。threading 模块提供了 Lock 和 RLock 两个类&#xff0c;它们都提供了如下两个方法来加锁和释放锁&#xff1a; acquire(blockingTr…

学会在Unity中创建一个Match-3益智游戏 Learn To Create a Match-3 Puzzle Game in Unity

MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; |时长:48场讲座(6h 38m) |大小解压后:2.8 GB 含课程文件 游戏开发变得容易了。使用Unity学习C#并创建自…

Mybatis入门:2(xml形式的增删改查)

xml形式的增删改查 这里感觉没啥好讲的&#xff0c;照着代码自己敲一遍、认真再看看应该都懂的。 Maven工程坐标 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http:/…

NSDate见解

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { // NSDate *date [NSDate date]; // // NSDateFormatter *formatter [[NSDateFormatter alloc] init];// yyyy 年// MM 月// dd 日// HH 24小时 hh 12小时// mm 分钟// ss 秒钟…

秒杀系统架构设计

秒杀活动的技术挑战 1. 对现有网站业务造成冲击 秒杀活动只是网站营销的一个附加活动&#xff0c;这个活动具有时间短&#xff0c;并发访问量大的特点&#xff0c;如果和网站原有应用部署在一起&#xff0c;必须会对现有业务造成冲击&#xff0c;稍有不慎可能导致整个网站瘫痪。…

SpringBoot 2.x 使用 JWT(JSON Web Token)

一、跨域认证遇到的问题 由于多终端的出现&#xff0c;很多的站点通过 web api restful 的形式对外提供服务&#xff0c;采用了前后端分离模式进行开发&#xff0c;因而在身份验证的方式上可能与传统的基于 cookie 的 Session Id 的做法有所不同&#xff0c;除了面临跨域提交 c…

在Unity中制作4种不同的游戏

流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;48.0 KHz 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09;|大小解压后:8.6 GB 含课程素材 |时长:15h 3m Unity 制作4款无代码手机游戏 Make 4 games in Unity with …

Spring学习笔记:1(初步认识概念)

Spring的三大主要特征 spring主要特征有三个&#xff1a;控制反转&#xff08;IOC&#xff09;&#xff0c;依赖注入&#xff08;DI&#xff09;和面向切面&#xff08;AOP&#xff09;。 IoC&#xff1a;Inverse of Control&#xff08;控制反转&#xff09; 1.对控制反转的…

shell example01

条件判断 if [[ -e ${1} ]]; thenecho "$(tput setaf 2) found ${1} $(tput sgr0)"cat ${1} elseecho "$(tput setaf 1) not found ${1} $(tput sgr0)"exit 1 fi//简化[[ -e ${1} && -e ${2} ]] && cat ${1} > ${2}//判断取反txt4.txti…

gradle教程 [原创](eclipse/ADT下 非插件 非Android Studio/AS)纯手打 第一篇:安装配置gradle...

一个bug 一个脚印的叫你们用gradle。 1介于网络上的很多资料都是老的 不适用与现在的新版本gradle 尤其是有些gradle方法改名了老的用不了 2介于网上都是粘贴复制并且零碎我很蛋疼啊&#xff0c;走了很多歪路才弄出来&#xff0c;所以我弄一个完全完整的版本 3我不但会写gradle…

java的static关键字

java的static关键字 静态变量和静态方法 static关键字最基本的用法是&#xff1a; 1、被static修饰的变量属于类变量&#xff0c;可以通过类名.变量名直接引用&#xff0c;而不需要new出一个类来 2、被static修饰的方法属于类方法&#xff0c;可以通过类名.方法名直接引用&…

Spring学习笔记:2(IOC装配Bean之xml方式)

xml配置方式装配Bean 本文借鉴于&#xff1a;https://www.cnblogs.com/qdhxhz/p/6511887.html Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数&#xff0c;用的最多)静态工厂实例化实例工厂实例化 代码如下&#xff1a; Bean1类(构造方法…