首先服务端是由CXF发布的服务CXF服务版本为2.2,之前说过2.3JDK需要1.6的,本人用1.5版本。
本章只讲对象数组的传递和List类型的传递。
CXF客户端:
本人用的CXF版本为2.2和2.3均可以通过。
首先是客户端包装接口,只需要定义和服务接口一样即可,名称可以任意,但是包名必须相同。
如:客户端定义接口如下(跟服务端一样哦):
@WeService
public class IHelloWorld {
User[] getUsers(User[] user){
return user;
}
List<User> getListUser(List<User> user){
return user;
}
}
User.java我就不写了,很简单。
客户端调用:
JaxWsProxyFactoryBean factory1 = new JaxWsProxyFactoryBean();
factory1.setServiceClass(IHelloWorld.class);
factory1.setAddress("http://127.0.0.1:8088/**/IHelloWorld");
QName qName1 = new QName("命名空间");//wsdl文件中targetNameSpace的值
factory1.setServiceName(qName1);
IHelloWorld service = (IHelloWorld) factory1.create();
List<User> list = new ArrayList<User>();
User user = new User();
user.setAge(25);
user.setName("fei");
User[] users = new User[]{user};
list.add(user);
//直接可以调用了
System.out.println(service.getUsers(users));
System.out.println(service.getListUser(users));
OK CXF的调用就可以。如有问题可以联系我
AXIS2客户端:
axis2调用还是要注意一些问题的。我用的jdk是1.4的版本比较低,在实现的过程中让我很头疼,大家最好还是用1.5之上的吧。另外大家最好用axis2 1.4版本的,因为之前的版本与CXF服务端访问时,SOAP可能无法解析会出错。
因为axis无法直接传递list和对象数组参数,1.4是这样的高版本就不晓得了。所以必须封装一下我们建一个Users.java
public class Users{
private User[] user;
private List userList;
//get和set方法
}
User.java就不写了
客户端调用:写在MAIN方法里,如果做项目就写在action里
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference("http://localhost:8088/**/HelloWorld?wsdl");
options.setTo(targetEPR);
QName name2 = new QName("targetNameSpace", "getUsers");
QName name3 = new QName("targetNameSpace"getListUser");
Users users = new Users();
User[] user2 = new User[2];
List list = new ArrayList();
for (int i = 0; i < 2; i++) {
User user1 = new User();
user1.setName("fei" + i);
user1.setAge(24 + i);
user2[i] = user1;
list.add(user1);
}
users.setUsers(user2);
users.setUserList(list);
Object[] object1 = new Object[] { users };
Class[] classes2 = new Class[] { Users.class };
Class[] classes3 = new Class[] { List.class };
Object[] object3 = serviceClient.invokeBlocking(name2, object1, classes2);
System.out.println(object3.toString());
Object[] object4 = serviceClient.invokeBlocking(name3, object1, classes3);
List list1 = (List) object4[0];
System.out.println(list1.size());
OK ,Axis2的访问也很简单。有问题请留言。
分享到:
相关推荐
webservice axis2 cxf jar包及简单实例
描述了Axis2与CXF的特点、区别及适用场合,并对比了效率
手头上做的java web的项目需要调用.net wcf发布的webservice,查资料看到XFire,Axis2,CXF这三种方式,然后仔细进行了一下对比。资料全来源自网络,不保证完全正确。
Axis2版本学习笔记,CXF版学习笔记,WebServices学习笔记
Axis和CXF的比较.txtAxis和CXF的比较.txtAxis和CXF的比较.txt
cxf与axis2框架的区别,用于webservice开发的两个重要框架
cxf客户端调用axis服务端流程
axis1.2、cxf框架
tools的工具包,axis2,apache-cxf
WebService当服务端两种生成wsdl协议方式,Axis和XFire(CXF)前者搞过WebService的人应该都知道扩展性比较好但是不支持Spring,后者基本逻辑全都封装在了底层API中,模式比较固定,开发比Axis简单,但是没有Axis灵活。...
用框架cxf调用axis2提供的接口服务的一个简单例子,
WebService大讲堂之Axis2(2):复合类型数据的传递.pdfWebService大讲堂之Axis2(2):复合类型数据的传递.pdf
NULL 博文链接:https://conkeyn.iteye.com/blog/1010959
使用spring3+ cxf 3.4做服务方,Axis1.4做请求方,在调用的时候,通过转换cxf的wsdl格式为axis1.4的wsdl格式来达到调用的目的。
axis2实现WebService之复合类型数据的传递.doc
如果你选择了webservice方式对现有的系统进行封装,需要对现有的技术框架进行了解和评估,本文对现有的部分开源webservice框架进行描述对比。
想对比xfire,cxf和axis2,并看看他们各自的主要内容么,请下载想对比xfire,cxf和axis2,并看看他们各自的主要内容么,请下载
关于WebService的实例及相关axis/apache-cxf的应用关于WebService的实例及相关axis/apache-cxf的应用
WebService流行框架之Axis和CXF=.docxWebService流行框架之Axis和CXF=.docx
使用axis和CXF实现web service的说明文档。