下载axis2-1.5.4-bin.zip文件并解压。
利用axis2中的wsdl2java.bat生成客户端程序。
先启动Tomcat7并在IE里运行http://localhost:8081/TestAxis2Ws/services/HelloService?wsdl 看看服务端是否正常解析。
%AXIS2_HOME%\bin\wsdl2java -uri http://localhost:8081/TestAxis2Ws/services/HelloService?wsdl -p axis2.service.server -o stub
其中-uri参数指定了wsdl文件的路径,可以是本地路径,也可以是网络路径。-p参数指定了生成的Java类的包名,-o参数指定了生成的一系列文件保存的根目录。在执行完上面的命令后,读者就会发现在当前目录下多了个stub目录,可以找到一个HelloServiceStub.java文件,该文件复杂调用WebService,读者可以在程序中直接使用这个类。
运行-->cmd-->具体命令如下:
要先进入axis2的bin目录然后运行wsdl2java.bat
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Jambhala>d:
D:\>cd D:\WebService\Axis\axis2\axis2-1.5.4-bin\axis2-1.5.4\bin
D:\WebService\Axis\axis2\axis2-1.5.4-bin\axis2-1.5.4\bin>wsdl2java -uri http://l
ocalhost:8081/TestAxis2Ws/services/HelloService?wsdl -p axis2.service.server -o
stub
Using AXIS2_HOME: D:\WebService\Axis\axis2\axis2-1.5.4-bin\axis2-1.5.4
Using JAVA_HOME: C:\Java\jdk1.6.0
Retrieving document at 'http://localhost:8081/TestAxis2Ws/services/HelloService?
wsdl'.
D:\WebService\Axis\axis2\axis2-1.5.4-bin\axis2-1.5.4\bin>
这时到axis2的bin目录下会发现出现了一个stub目录,如下图所示:
其中HelloServiceStub.java是客户端程序,HelloServiceCallbackHandler.java是异步客户端程序。
把这两个类复制到上次已经建立好的服务端工程里,如下图所示:
要参考上一次写的MyEclipse整合Axis2插件的文章(http://shihuan830619.iteye.com/blog/1136607)
注意:这个地方复制进来后会报错的,因为在D:\WebService\Axis\axis2\axis2-1.5.4-bin\axis2-1.5.4\bin\stub\src\axis2\service\server下的类路径为package axis2.service.server;需要改成package axis2.service.client;并且需要把HelloServiceStub.java和HelloServiceCallbackHandler.java相关的报错位置都把路径改一下,不要闲烦,要改的地方还满多的呢。
创建带main方法的StubClient.java类文件,代码如下:
package axis2.service.domain;
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import axis2.service.client.HelloServiceStub;
public class StubClient {
public static void main(String[] args) {
HelloServiceStub stub = null;
try {
stub = new HelloServiceStub();
HelloServiceStub.SayHello sh = new HelloServiceStub.SayHello();
sh.setName("于士博");
System.out.println(stub.sayHello(sh).get_return());
} catch (AxisFault e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
运行后会看到如下结果:
log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
log4j:WARN Please initialize the log4j system properly.
Hello, 于士博!
解释:
上面的代码大大简化了调用WebService的步骤,并使代码更加简洁。但要注意的是,wsdl2java.bat命令生成的Stub类将WebService方法的参数都封装在了相应的类中,类名(SayHello)为方法名,例如,sayHello方法的参数都封装在了SayHello类中,要想调用sayHello方法,必须先创建SayHello类的对象实例。
--------------------------------------------------------------------------------------------------
下面介绍纯手动编写Java代码客户端程序:
package axis2.service.domain;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class HelloClient {
public static void main(String[] args) {
//使用RPC方式调用WebService
RPCServiceClient serviceClient = null;
try {
serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
//指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference("http://localhost:8081/TestAxis2Ws/services/HelloService");
options.setTo(targetEPR);
//指定sayHello方法的参数值
Object[] opAddEntryArgs = new Object[] {"于士博"};
//指定sayHello方法返回值的数据类型的Class对象
Class[] classes = new Class[] {String.class};
//指定要调用的sayHello方法及WSDL文件的命名空间
QName opAddEntry = new QName("http://server.service.axis2", "sayHello");
//调用sayHello方法并输出该方法的返回值
String result = serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)
[0].toString();
serviceClient.cleanupTransport(); //为了防止连接超时
System.out.println(result);
//System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)
[0]);
} catch (AxisFault e) {
e.printStackTrace();
}
}
}
【注】:在本例中使用了RPCServiceClient类的invokeBlocking方法调用了WebService中的方法。
invokeBlocking方法有三个参数,其中第一个参数的类型是QName对象,表示要调用的方法名;第二个
参数表示要调用的WebService方法的参数值,参数类型为Object[];第三个参数表示WebService方法的
返回值类型的Class对象,参数类型为Class[]。
当方法没有参数时,invokeBlocking方法的第二个参数值不能是null,而要使用new Object[]{}。
如果被调用的WebService方法没有返回值,应使用RPCServiceClient类的invokeRobust方法,该方法只
有两个参数,它们的含义与invokeBlocking方法的前两个参数的含义相同。
在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,也就是
<wsdl:definitions>元素的targetNamespace属性值。
相关推荐
3. **生成客户端工具**:在 Axis 中,通过 WSDL2Java 工具,我们可以根据服务端的 WSDL 文件自动生成客户端 stub 类。这些 stub 类包含了调用服务所需的所有方法,使得客户端开发人员无需手动编写与服务交互的代码,...
本文将深入探讨如何使用MyEclipse集成开发环境来调用Axis工具,通过WSDL(Web Service Description Language)文件生成客户端代码。这个过程对于理解Web服务的生命周期和客户端开发流程至关重要。 首先,我们需要...
总结起来,使用Axis2的`WSDL2Java`工具,开发者可以轻松地根据WSDL文件生成客户端代码,从而快速构建与Web服务交互的应用程序。这个过程大大提高了开发效率,减少了手动编码的复杂性,使得Web服务的使用更加便捷。
总的来说,Axis2 1.6.2提供了一种简洁的方式,帮助开发者快速地从WSDL生成客户端代码,从而简化Web服务的使用。熟悉这一过程对于任何涉及跨系统交互的Java开发者来说都是非常有价值的技能。记住,如果在使用过程中...
- **步骤2:启动Axis** - 运行Axis1.4的wsdl2java工具,输入WSDL文件的URL或本地路径,该工具会自动生成Java客户端代码。 - **步骤3:构建客户端代码** - 编译生成的Java源代码,然后在你的项目中引入这些类,这些...
### Axis2生成客户端与服务端代码详解 ...通过以上步骤,我们可以有效地利用Axis2生成客户端和服务端代码,大大加快了Web服务的开发进度。这对于那些希望快速搭建基于Web的服务应用的开发者来说,是非常有价值的。
AXIS2是一个流行的开源Web服务框架,用于创建和部署SOAP(简单对象访问协议)服务以及生成客户端代码。在本文中,我们将深入探讨如何利用AXIS2在MyEclipse环境中生成客户端代码,以便与Web服务进行交互。这个过程...
axis1.4生成访问客户端代码
从WSDL生成的服务端代码通常包含以下部分:服务接口(Interface)、服务实现(Implementation)、服务部署描述符(Deployment Descriptor, 如wsdd.xml)、以及客户端Stubs和Skeletons。服务接口定义了服务提供的...
本文将详细讲解如何使用Axis2来发布Web服务以及如何生成客户端代码来调用这些服务。 首先,让我们了解发布Web服务的过程: 1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web...
总结来说,"axis2生成客户端代码 (带jar包)"涉及到的是利用Axis2框架及其提供的工具,从服务的WSDL文件生成Java客户端代码,并使用包含的jar包来支持服务的调用和交互。了解这些知识有助于开发人员更有效地集成和...
- 当服务更新时,更新WSDL并重新生成客户端和服务器代码。 - 注意内存管理和错误处理,避免潜在的内存泄漏和异常情况。 总之,gSOAP是C和C++开发人员在处理WSDL和SOAP协议时的一个强大工具。通过正确使用gSOAP,...
3. 使用Axis插件生成客户端:在命令行中,你可以使用Axis的wsdl2java工具,输入Web服务的WSDL URL或本地WSDL文件路径,该工具会自动生成对应的客户端Java stubs(存根类)。这些存根类包含了调用Web服务所需的所有...
本文将深入探讨如何使用Axis客户端进行调用,以及如何利用WSDL2JAVA工具生成客户端代码。 标题中的"Axis客户端调用代码"指的是使用Axis库来实现对Web服务的调用。Axis提供了Java客户端API,使得开发人员能够通过...
当有了一个WSDL文件,开发者可以利用工具如Apache Axis将WSDL解析并生成相应的Java客户端 stubs(代理类),这些代理类包含了调用Web服务所需的所有逻辑。 **Apache Axis的工作流程:** 1. **解析WSDL**:首先,...
4. **IDEA集成**:AXIS2 1.7.3 idea wsdl插件使得这些功能无缝集成到IntelliJ IDEA中,用户可以直接在IDE内处理WSDL文件,生成并管理AXIS2相关的Java代码。这提高了开发效率,减少了在不同工具间切换的时间。 5. **...
此外,它还可以自动生成客户端 stubs,让调用Web服务如同调用本地方法一样方便。 生成服务端代码的步骤通常如下: 1. **获取WSDL**:首先,你需要一个有效的WSDL文件,该文件详细描述了服务的接口、消息结构和绑定...
- 优势:AXIS提供了一种自动化的方式生成客户端代码,大大简化了Web服务的调用过程。 - 挑战:AXIS生成的代码可能较为复杂,对于新手来说,理解并正确使用可能会有一定难度。 综上所述,AXIS1.4是开发Web服务...
总之,使用CXF客户端调用Axis服务端涉及多个步骤,包括生成客户端代码、配置客户端、创建服务代理以及进行实际调用。理解这些步骤并正确实现它们是成功通信的关键。在实际开发过程中,可能会遇到各种问题,需要耐心...
Axis2 插件在 MyEclipse 8.5 中的安装和使用 Axis2 插件是 MyEclipse 8.5 中的一...通过使用 Axis2 插件,可以快速生成客户端代码,并实现服务的发布和调用。因此,Axis2 插件是 MyEclipse 8.5 中一个非常有用的插件。