原文: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简单实现(客户端+服务端)。
Axis2快速发布服务详解:包括服务端与客户端。 此资源只包括脚本以及说明,整个目录没有上传。 我在此说明一下:根目录Axis2_141|---client |---server |---axis2-1.4.1(axis2的完整包) |---axis2(axis2_war...
axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端axis 客户端
使用axis2 1.6.2 生成webservice wsdl客户端代码,快速便捷,方便操作。使用有问题可留言,如看到尽快回复
Jbuilder2006实现Axis2客户端
axis2生成客户端服务端代码
axis2根据wsdl地址生成webservice客户端代码及使用方法
axis2客户端调用工程代码
一个简单的axis2客户端调用WebService的代码,分辨调用了一个部署在axis2上的java WebService和IIS6上部署的.NET WebService,用了OM方式和Object[]方式,可供初学axis2的同学参考
axis2客户端调用服务端,带用户身份认证
AXIS2客户端调用实例 AXIS2客户端调用实例 AXIS2客户端调用实例 AXIS2客户端调用实例
Axis2和Axis2客户端所需包 activation-1.1.jar axiom-api-1.2.7.jar axiom-impl-1.2.7.jar axis2-1.5-war.zip axis2-adb-1.4.1.jar...
使用axis2创建webservice步骤以及客户端调用service服务代码,如何编写和发布WebService,如何使用services.xml配置文件发布,如何用Java实现调用WebService的客户端程序等等
此文档详细描述了,如何安装axis2c引擎,如何根据wsdl生成客户端,以及客户端的应用开发,并有详细客户端实例。
NULL 博文链接:https://huttoncs.iteye.com/blog/2091706
使用axis2生成客户端,调用服务端,测试服务端的接口所需要的最少的jar包。
axis1.4生成客户端 axis1.4生成客户端 axis1.4生成客户端 axis1.4生成客户端