原文:http://johntor.iteye.com/blog/253605
正在学习axis2,上面的文章对我们初学者来说是一个很大的帮助,便转了过来,非常感谢那些分享自己经验的人。
1.一个简单的服务类 ,并把它发布为web service服务。注意我的工程名为Test
Java代码
package test;
public class TestService {
public int add(int a, int b) {
return a + b;
}
public String each(String name) {
return name + "你好";
}
}
package test;
public class TestService {
public int add(int a, int b) {
return a + b;
}
public String each(String name) {
return name + "你好";
}
}
2.应用两种方式实现客户端调用
Java代码
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.rpc.client.RPCServiceClient;
/**
* axis2提供rpc和document两种style的实现。
* 在这里我们别对其验证。关于说明,请参看代码中的注释
* @author Administrator
*
*/
public class Client {
public static void main(String[] args) {
Client client = new Client();
//测试rpc方式
client.testRPC();
//测试document方式
client.testDocument();
}
/**
* 应用rpc的方式调用
* 这种方式就等于远程调用,即通过url定位告诉远程服务器,告知方法名称,参数等,
* 调用远程服务,得到结果。
*/
//下面这个annotaion是为了不让代码出现关于没有应用泛型的警告信息
//用elipse做编辑器的很容易理解。
@SuppressWarnings("unchecked")
public void testRPC() {
try {
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
//指定访问的web service地址
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/Test/services/TestService");
options.setTo(targetEPR);
//指定方法,注意指定命名空间
QName opPrint = new QName("http://test",
"add");
//确定参数类型和参数值
Class[] returnTypes = new Class[] { int.class };
Object obj[] = new Object[] { 1, 2 };
//得到返回结果,是一个数组
Object[] order = serviceClient.invokeBlocking(opPrint, obj,
returnTypes);
System.out.println(order[0]);
//下面是测试each方法的。和上面类似
opPrint = new QName("http://test","each");
returnTypes = new Class[] { String.class };
obj = new Object[] { "zhangyt" };
order = serviceClient.invokeBlocking(opPrint, obj,
returnTypes);
System.out.println(order[0]);
} catch (AxisFault e) {
e.printStackTrace();
}
}
/**
* 应用document方式调用
* 用ducument方式应用现对繁琐而灵活。现在用的比较多。因为真正摆脱了我们不想要的耦合
*/
public void testDocument() {
try {
ServiceClient sc = new ServiceClient();
Options opts = new Options();
//确定目标服务地址
opts.setTo(new EndpointReference(
"http://localhost:8080/Test/services/TestService"));
//确定调用方法
opts.setAction("urn:add");
sc.setOptions(opts);
//发送请求并并得到返回结果,注意参数生成方法的分析
OMElement res = sc.sendReceive(createPayLoad());
//值得注意的是,返回结果就是一段由OMElement对象封装的xml字符串。
//我们可以对之灵活应用,下面我取第一个元素值,并打印之。因为调用的方法返回一个结果
res.getFirstElement().getText();
System.out.println(res.getFirstElement().getText());
} catch (AxisFault e) {
e.printStackTrace();
}
}
/**
* ServiceClient 中 sendReceive(OMElement args) 方法参数的生成
* @return
*/
public static OMElement createPayLoad(){
OMFactory fac = OMAbstractFactory.getOMFactory();
//指定命名空间
OMNamespace omNs = fac.createOMNamespace("http://test", "nsl");
//指定方法
OMElement method = fac.createOMElement("add",omNs);
//指定方法的参数
OMElement value = fac.createOMElement("value",omNs);
value.setText("1");
method.addChild(value);
OMElement value1 = fac.createOMElement("value",omNs);
value1.setText("2");
method.addChild(value1);
//返回方法(实际上就是OMElement封装的xml字符串)
return method;
}
}
分享到:
相关推荐
axis2根据wsdl生成java客户端代码 D:\Software\axis2-1.6.2\bin>wsdl2java.bat -uri http://10.33.30.216:9099/facs/services/ResourceSynchroWebService?wsdl -o E:\wsdloutput -p com.util wsdl2java.bat -uri ...
axis2客户端调用axis1服务接口 调用方式 使用RPC方式调用WebService,为了防止冲突可以增加 // 与weblogic的lib冲突配置 System.setProperty("javax.xml.stream.XMLInputFactory", ...
【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...
标题中的“Axis客户端的几种实现方式”指的是在Java开发中,使用Axis库来创建和使用Web服务客户端的不同方法。Axis是Apache软件基金会的一个开源项目,它提供了一个强大的工具集,用于处理SOAP(简单对象访问协议)...
Axis2提供了一种高效、灵活且可扩展的方式来实现服务端和客户端的服务调用。当涉及到“axis2客户端调用服务端,带用户身份认证”时,我们主要关注的是如何在 Axis2 客户端中添加安全机制,确保只有经过验证的用户...
### Axis2生成客户端与服务端代码详解 #### 一、Axis2简介 Axis2是Apache组织下的一个开源项目,它是一种高性能、轻量级的Web服务框架,支持SOAP和REST等协议,能够帮助开发者轻松地构建和部署Web服务。Axis2提供了...
Axis2快速发布服务详解:包括服务端与客户端。 此资源只包括脚本以及说明,整个目录没有上传。 我在此说明一下:根目录Axis2_141|---client |---server |---axis2-1.4.1(axis2的完整包) |---axis2(axis2_war...
这篇博客文章可能提供了一个实际操作的例子,展示了如何在Java环境中使用Axis2来实现服务端的发布和服务客户端的调用。 首先,我们来讨论服务发布的流程。在Axis2中,服务发布通常包括以下步骤: 1. **创建服务类*...
AXIS2是一个流行的开源Web服务框架,用于创建和部署SOAP(简单对象访问协议)服务以及生成客户端代码。在本文中,我们将深入探讨如何利用AXIS2在MyEclipse环境中生成客户端代码,以便与Web服务进行交互。这个过程...
axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端
总的来说,Axis2 1.6.2提供了一种简洁的方式,帮助开发者快速地从WSDL生成客户端代码,从而简化Web服务的使用。熟悉这一过程对于任何涉及跨系统交互的Java开发者来说都是非常有价值的技能。记住,如果在使用过程中...
本文将详细阐述Axis2客户端所需的所有jar包及其在调用服务端、测试接口过程中的作用。 首先,让我们了解什么是Axis2。Axis2是Apache软件基金会的一个开源项目,它提供了一个灵活、高性能的SOAP引擎,支持多种协议,...
这篇博客"axis2学习——客户端的开发"主要探讨了如何使用Axis2来创建和操作Web服务的客户端。 首先,让我们了解什么是Apache Axis2。Axis2是Axis1的下一代版本,它提供了更高效、更灵活的服务框架。它是基于模块化...
在开发Axis2客户端时,正确地引入所需的jar包是至关重要的,因为这些库提供了与服务交互所需的各种功能。以下是关于Axis2客户端需要的jar包及其功能的详细解释: 1. **axis2-adb.jar**:这个jar包包含了Axis2的数据...
3. **MTOM/XOP优化**:Message Transmission Optimization Mechanism (MTOM) 和XOP (XML-binary Optimized Packaging) 是两种提高Web服务传输效率的技术,Axis2客户端支持这两种机制,能有效地处理二进制数据。...
标题 "axis2-1.6.2客户端最少jar包" 指的是Apache Axis2的1.6.2版本中,用于构建客户端应用程序所需的最小Java Archive (JAR) 文件集合。Axis2是一个流行的Web服务框架,它允许开发人员创建、部署和管理Web服务。这...
Axis1.x版本是较老的实现,而Axis2是其后续版本,提供了更好的性能和模块化设计。 ### 二、CXF客户端调用Axis服务端步骤 #### 1. 获取服务端WSDL 首先,你需要获取Axis服务端的WSDL(Web Service Definition ...
本文将深入探讨如何使用JBuilder2006这一集成开发环境来创建和实现Axis2客户端。 首先,我们需要了解JBuilder2006。JBuilder是一款由Borland公司(后被Embarcadero Technologies收购)推出的Java集成开发环境(IDE...
标题中的“用脚本生成axis2...总的来说,通过脚本生成Axis2客户端是Web服务客户端开发的一种高效方式,尤其适用于快速集成和测试。在实际项目中,开发者可以根据需求选择合适的生成方法,平衡代码简洁性和功能复杂性。