【webservice】axis1生成java客户端代码

转载请说明出处:http://blog.csdn.net/seedingly/article/details/24806447

版本:axis-bin-1_4.zip (axis1)

事情始末:接触了webservice也有半年多了,期间都是用axis2(1.5.4),成功调通过各种wsdl,当然包括CXF的webservice。这时候,对一个axis弄出来的wsdl执行wsdl2java居然报错了,报错如下:

Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException
: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGener
ationEngine.java:271)
        at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
        at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetExcepti
on
        at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(Simp
leDBExtension.java:53)
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGener
ationEngine.java:224)
        ... 2 more

我查了很多资料,得出结论是wsdl是有错误的。最后,webservice提供方纠正了我的说法:这是axis1,要用同版本执行wsdl2java!得到了服务端的技术建议,当然是立马尝试啦,过程如下:

1、下载axis1的包,我下载的是axis-bin-1_4.zip ,同时也下载了activation-1.1.1.jar、mail-1.4.5.jar,因为网上的教程也建议添加上这两个包(不然会报错的)。最后包如下:

2、解压axis到F:\Learning\WebService\AXIS\目录,自行编写脚本(格式为bat,假设命名为wsdl2j.bat),双击执行生成java
client代码。脚本如下:

set Axis_Lib=F:\Learning\WebService\AXIS\axis-1_4\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=F:\src
set Package=com.prc.client
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package%  xxxx.wsdl

参数解析:

Axis_Lib——Axis jar包存放的文件夹

Output_Path——生成java类存放在本地的目录

Package——生成java类所存放的包

脚本末尾的wsdl路径也可以为url地址,如http://xxxx/xxx?wsdl

3、把生成的java类复制到我的webservice工程,生成的类比较多,包括总的类4个(下面用到IBaseServiceService、IBaseServiceServiceLocator、IBaseServiceSoapBindingStub)、每个webservice方法对应的两个类(方法类+返回result类)。

4、编程示例:

public String mmsc_SysBlackListRead(String streamingNo,int srcDeviceType,String srcDeviceID,String cmd){
		String jsondata = "";
		try {
			URL url = new URL("http://*******");
			IBaseServiceService service = new IBaseServiceServiceLocator();
			IBaseServiceSoapBindingStub stub = (IBaseServiceSoapBindingStub)service.getIBaseService(url);
			SysBlackListReadResult rs =	stub.sysBlackListRead(streamingNo, srcDeviceType, srcDeviceID, cmd);
			HashMap dataMap = new HashMap();
			dataMap.put("streamingNo", rs.getStreamingNo());
			dataMap.put("resultCode", rs.getResultCode());
			dataMap.put("SysBlackList", rs.getSysBlackList());
			JSONObject jsons = JSONObject.fromObject(dataMap);
			jsondata = jsons.toString();
		} catch ( Exception e2) {
			e2.printStackTrace();
		}
		return jsondata;
	}

其中,这个rs(SysBlackListReadResult )则是返回的结果,接下来的代码只不过是把rs弄成json格式而已,实际代码就那么点。

【webservice】axis1生成java客户端代码,码迷,mamicode.com

时间: 2024-10-09 02:54:56

【webservice】axis1生成java客户端代码的相关文章

axis根据wsdl生成java客户端代码

根据wsdl生成java客户端代码有多个方法,其中使用axis生成的代码比较友好,也是经常用的一种方法.首先下载axis jar包:axis-bin-1_4.zip 官方地址:http://ws.Apache.org/axis/  好像官方下载不了,提供下本人的百度云下载地址:http://pan.baidu.com/s/1hs9AwHQ 添加配置环境变量 AXIS_HOME:解压的根目录\axis\axis-1_4 AXIS_LIB: 解压的根目录\axis\axis-1_4\lib\axis

使用Myeclipse插件将wsdl生成java客户端代码

使用环境:MyEclipse9.0 本教程使用Myeclipse内置插件生成java代码,网上说这是xfire插件,不管怎样,生成和调用客户端代码都十分简单. 1.在项目上右键,选择New->Other->Web Service->Web Service Client->Next,会看到以下界面: 这里可以选择wsdl文件,也可以写上wsdl的url地址,推荐是写url,这样调用的时候不需要修改生成的代码.然后使用默认设置一路next,最后finish. 2.调用过程 生成代码后,

转载——Java与WCF交互(一)补充:用WSImport生成WSDL的Java客户端代码

在<Java与WCF交互(一):Java客户端调用WCF服务>一文中,我描述了用axis2的一个Eclipse控件生成WCF的Java客户端代理类,后来有朋友建议用Xfire.CXF,一直没有尝试,今天有朋友指出JDK6可以用java自带的一个WSImport工具,试了下,果然很爽,这是一个exe文件,位于%JAVA_HOME%\bin下,它的官方使用说明,见:http://download-llnw.oracle.com/javase/6/docs/technotes/tools/share

Kafka JAVA客户端代码示例--高级应用

什么时间使用高级应用? 针对一个消息读取多次 在一个process中,仅仅处理一个topic中的一组partitions 使用事务,确保每个消息只被处理一次 使用高级应用(调用较底层函数)的缺点? SimpleConsumer需要做很多额外的工作(在以groups方式进行消息处理时不需要) 在应用程序中跟踪上次消息处理的offset 确定一个topic partition的lead broker 手工处理broker leander的改变 使用底层函数(SimpleConsumer)开发的步骤

WSDL自动生成Web Service java 客户端

引用: 最近做系统间数据导入导出时需要用到web service,所以需要通过wsdl生成java客户端来读取数据. 方法一: 使用xfire eclipse plugin生成java客户端 1 安装xfire eclipse plugin,update site: Java代码   http://dist.codehaus.org/xfire/update/ 2 新建java project: WSTest. 我们用一个免费的web service服务做测试. 这是个手机号码归属地查询的wsd

WCF 使用SvcUtil.exe生成客户端代码和配置

引用地址:http://www.cnblogs.com/iamlilinfeng/p/4083827.html SvcUtil.exe是一个VS命令行工具,该工具位于:C:\Program Files\Microsoft  SDKs\Windows\v7.0A\bin 或 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\一般情况下我们将SvcUtil.exe添加到VS开发工具中方便以后的运用(也可直接使用该命令行工具). 1)在VS

WebService的发布及客户端的调用

一.目录 1.JAX-WS发布WebService 1.1 创建一个简单的WS 1.2 打包部署和发布 2.CXF+Spring发布WebService 3.客户端的调用方式 二.正文 1. JAX-WS发布WebService JAX-WS (Java API for XML Web Services) 是一组专门用于实现 XML Web Services 的 Java API.JDK 1.6 自带 JAX-WS 版本为 2.1.不过,JAX-WS 只提供 web services 的基础功能

Java与WCF交互(一):Java客户端调用WCF服务

最近开始了解WCF,写了个最简单的Helloworld,想通过java客户端实现通信.没想到以我的基础,居然花了整整两天(当然是工作以外的时间,呵呵),整个过程大费周折,特写下此文,以供有需要的朋友参考: 第一步:生成WCF服务 新建WCF解决方案,分别添加三个项目,HelloTimeService(类库),HelloTimehost(控制台程序),HelloTimeClient(控制台程序),项目结构如图:各个项目的主要代码:service: Host: Client: 编译通过后,测试Hos

转载——Java与WCF交互(一):Java客户端调用WCF服务

最近开始了解WCF,写了个最简单的Helloworld,想通过java客户端实现通信.没想到以我的基础,居然花了整整两天(当然是工作以外的时间,呵呵),整个过程大费周折,特写下此文,以供有需要的朋友参考: 第一步:生成WCF服务 新建WCF解决方案,分别添加三个项目,HelloTimeService(类库),HelloTimehost(控制台程序),HelloTimeClient(控制台程序),项目结构如图:各个项目的主要代码:service: Host: Client: 编译通过后,测试Hos