Axis2+wsdl2java.bat生成客户端调用

Axis2和Axis相比,增加了异步调用的方式,而且代码的使用更方便。本文用一个例子来描述如何快速使用Axis2来创建WebService客户端代码。

1 准备环境

(1)下载Axis2,并解压。

官方网址:http://ws.apache.org/axis2/

(2)设置环境变量

SET AXIS2_HOME=解压后bin目录所在的目录,尽量不要有空格或中文

SET PATH=%AXIS2_HOME%\bin;%PATH%

(3) 修改bin目录中的wsdl2java.bat

为了方便使用,以及避免一些NoClassFoundException类似的问题,修改wsdl2java.bat文件,查找:

set _RUNJAVA="%JAVA_HOME%\bin\java"

在这一行下面增加如下一行

set JAVA_OPTS="-Djava.ext.dirs=%AXIS2_HOME%\lib"

2 以一个WhoIs WebService为例:

生成存根代码

WSDL2Java -uri http://www.webservicex.net/whois.asmx?wsdl -o src

程序运行完成后,在src文件生成如下文件:

E:\SRC\NET

└─webservicex

└─www

WhoisCallbackHandler.java

WhoisStub.java

3 同步调用

(1) 编写DemoSync.java

import net.webservicex.www.*;

public class DemoSync {

public static void main(String[] args) {

try {

WhoisStub stock=new WhoisStub();

WhoisStub.GetWhoIS param=new WhoisStub.GetWhoIS();

param.setHostName("www.sohu.com");

WhoisStub.GetWhoISResponse response=stock.GetWhoIS(param);

System.out.println(response.getGetWhoISResult());

} catch (java.rmi.RemoteException remoteException) {

remoteException.printStackTrace();

}

}

}

(2) 测试

运行java -Djava.ext.dirs=%AXIS2_HOME%\lib DemoSync

4 异步调用

(1) 继承WhoisCallbackHandler类,如下编写MyWhoisCallbackHandler.java;

package net.webservicex.www;

public class MyWhoisCallbackHandler extends WhoisCallbackHandler{

public void receiveResultGetWhoIS(

net.webservicex.www.WhoisStub.GetWhoISResponse result) {

System.out.println(result.getGetWhoISResult());

}

}

(2) 编写DemoAsync.java

import net.webservicex.www.*;

public class DemoAsync {

public static void main(String[] args) {

try {

WhoisStub stock=new WhoisStub();

WhoisStub.GetWhoIS param=new WhoisStub.GetWhoIS();

param.setHostName("www.sohu.com");

WhoisCallbackHandler handler=new MyWhoisCallbackHandler();

stock.startGetWhoIS(param,handler);

System.out.println("Sent a request.");

while(handler.getClientData()==null)

{

try{

Thread.sleep(30000);//等待Handler返回结果,以测试返回情况,实际应用中,此处可以去做其他操作,当结果返回时在MyWhoisCallbackHandler.receiveResultGetWhoIS()方法中把数据进行显示、保存或激活其他时间等操作。

}catch(InterruptedException e){}

}

} catch (java.rmi.RemoteException remoteException) {

remoteException.printStackTrace();

}

}

}

(3) 测试

运行java -Djava.ext.dirs=%AXIS2_HOME%\lib DemoAsync

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1743249

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Web Service - axis2

最近在项目中有用到web service。在做之前google了一下,发现网上有扑天盖地的有这方面的一些文章。说这是下代在技术的制高点!我axis2做了一下“hello world !“没感到有太大的难度,可能是没有用到高级的特性吧!先写好你要发布成service的类。pojo就行了!:

public class MiniService {

public String hello(String msg)

{

return "Hello World";

}

}

要想正确的deploy一个server,其中server.xml这个文件是必不可少的,下面就是这个例子中所用到的

server.xml文件:请注意这个文件是要放在META-INF这个文件中的。

<?xml version="1.0" encoding="UTF-8"?>

<service>

<parameter name="ServiceClass" locked="false">com.inventec.ws.MiniService</parameter>

<operation name="hello">

<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />

</operation>

</service>

最后打包好的jar文件放到 axis2\WEB-INF\services 下。tomcat就会将这个服务deploy.

要想正确的调用这个service你还得生成stub.用axis2所自带的工具就可很简单生成stub.如:

D:\ws>wsdl2java -uri http://localhost:8080/axis2/services/ws?wsdl

生成的东东很长看得很累!你在调用时基本上可用类以如下的方法:

public class WsTest {

/**

* @param args

* @throws RemoteException

*/

public static void main(String[] args) throws RemoteException {

// TODO Auto-generated method stub

WsStub stub = new WsStub();

WsStub.Hello request = new WsStub.Hello(); /**/

request.setMsg("jade");/**/

WsStub.HelloResponse reponse = stub.hello(request);

String str = reponse.get_return();

System.out.println("str = " + str);

}

}

当然若你发布的server若是没有参数的一个方法则在调用时不要生成这个方法对象。

只要记住:

先生成一个stub实例

在stub中service的方法以成为它的一个变量。我们生成一个类似于方法的对象

给这个方法input,调用参数。

用前面生成的方法对象调用stub实例中的与server中的同名方法。并返回一个Response,

调用response的get_return()得到返回值!

时间: 2024-10-31 05:34:55

Axis2+wsdl2java.bat生成客户端调用的相关文章

axis2通过wsdl生成客户端程序并本地调用

wsdl2java -uri http://10.0.5.12/brm/services/RuleEngine1374389539674484?wsdl -p east.mvc.webservice.client -o stub RuleEngine1374389539674484Stub stub = null; try { stub = new RuleEngine1374389539674484Stub(); RuleEngine1374389539674484Stub.GetCutCat

关于 wsdl2Java 自动生成客户端调取webservice接口

webservice地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl wsdl2Java 自动生成类名: 客户端调用:

.net根据wsdl生成客户端调用服务返回null

由于做到的项目需要跟别的系统交互,我们这边提供wsdl文档给其他系统的开发人员,今天测试的时候,用C#来根据wsdl生成的客户端调用 Java的Web Server时,连最简单的返回string类型获取的值都是null,但是如果直接根据Web服务产生的wsdl来生成C#客户端,就能正常返回值.对 比了下原wsdl文档与Web服务产生的wsdl文档,发现之间没有什么区别. 后来把利用wsdl.exe和wsdl文档生成的客户端代码与直接在项目中引用Java的Web服务产生的代码对比一下.发现只有一个

用JDK自带的工具生成客户端调用Webservice的代码

JAVA下客户端调用Webservice代码简直是让人心生畏惧,今日尝试,做记录如下,参考网上的众多解决方案,下面这种方式是比较简单的. 在jdk的bin目录下有一个wsimport.exe的工具,使用该工具可以根据wsdl地址生成java的客户端代码. 常用命令如下: "D:\Program Files\Java\jdk1.8.0_05\bin\wsimport.exe" -keep -d d:\ -s d:\src -p com.map -verbose http://192.16

webservice用wsdl2java来生成客户端(操作简单方便)

打开Eclipse,Run--> Run Configurations,在Main class框里 输入 WSDL2Java 进行搜索,前提是你的工程里已加入axis的jar包, 会搜索到org.apache.axis.wsdl.WSDL2Java,在arguments标签栏里输入参数,默认基础目录为当前工程,参数如下所示: src\\cfg\\test.wsdl -p com.xxx.xxx.xxx.client -t 这是wsdl文件在本地的情况,如果不是本地的wsdl文件,那么而是网址方式

WebService学习之旅(六)使用Apache Axis2实现WebService客户端调用

上节介绍了如何使用Axis2 发布一个WebService,Axis2除了为我们编写WebService应用带来了便利,也同样简化的客户端调用的过程,本节在上节的基础上使用Axis2自带的工具生成客户端调用辅助类,并实现客户端调用代码的编写. 1.將前面下载的axis2-1.7.1-bin.zip解压,新建一个环境变量AXIS2_HOME,值为解压后目录路径.接着在path变量中添加%AXIS2_HOME%/bin;. 2.Eclipse中新建一个Java Project,打开Windows控制

使用eclipse的Axis2 Code Generator插件生成客户端代码遇到的问题

使用Axis2 Code Generator生成客户端代码到最后生成代码过程中报错,An error occurred while completing process -java.lang.reflect.InvocationTargetException 解决办法如下: 下载backport-util-concurrent-3.1.jar和geronimo-stax-api_1.0_spec-1.0.1.jar 添加到eclipse-plugins-Axis2_Codegen_Wizard_

axis2 WebService的发布与调用

1:准备:    JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html eclipse:http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/juno/SR2/eclipse-jee-juno-SR2-win32.zip tomcat:http://tomcat.

CXF生成客户端注意事项

1. 在使用wsdl2java命令生成客户端文件时在Service的Java文件里面出现super构造错误,这是由于jax-ws2.2规约与java6冲突  故需要降低jax-ws规约版本. 解决方法:wsdl2java -frontend jaxws21  http://localhost:8080/MyWebService?WSDL    生成客户端文件    2.  在使用wsdl2java生成的客户端文件  ,如果我们修改了包的名称就会出现       Exception in thre