webservice xfire框架实例笔记
来源:互联网 发布:sql外键 编辑:程序博客网 时间:2024/05/02 01:51
Myeclipse部署webservice文档—xfire
1 环境
Jdk1.5
Tamcat5.5
Myeclipse
以上工具的配置文档省略。
2 Tamcat部署方式
建议使用tamcat与myeclipse不做集成。
2.1 创建工程
在myeclipse中创建webservice工程,file->new->other->web service project
为我们的第一个web service projuect起个名字webservicetest
其实所谓的webservice也不可能单独通讯,soap协议是一个更上层的通讯协议,他是凌驾在http协议上的,所以我们web开发熟悉的servlet必不可少,默认就可以啦。
选择以下工具jar包,
呵呵,工程创建完毕,看看效果。包结构基本上遵守web的工程模式,仔细看多了一个目录WebServices,下边的services.xml作用就是我们的应用下提供了几个webservices服务,另外就是web.xml会发生变化,自己看看吧。
下一步工作我们分三种情况举例,分别是通讯传输基本数据类型,xml数据类型,对象类型。这三种情况应该可以涵盖了平时所有的应用。
2.2 基本数据类型通讯
创建一个service服务程序。File->new->other->myeclipse->web service。
仍然需要起一个服务类的名字,FirstService,myeclipse会为我们生成两个类服务接口类(IFirstService)和服务实现类(FirstServiceImpl)。
看看你的service.xml发生了什么变化。
看一下我们的实现类,很简单,就是返回一个基本数据类型—字符串
任务完成一半了,我们先部署一下,看看效果。
部署完成后我们生成wsdl,如下
Myeclipse有个访问wsdl的工具,如下:
点击到wsdl方式,并录入wsdl的url路径。
测试一下功能,结果如下:
相当于客户端发一个字符串给服务端,服务端处理后返回一个字符串响应,功能叙述完毕。
下来我们开发一个正式的客户端。
File->new->other->web service client填写wsdl访问路径。生成的类以及关键测试代码如下:
2.3 对象类型通讯
简单基础类型通讯不能满足我们日常的系统开发工作,我们还需要支持远程对象传输,保证大数据量的传输,不过这就需要考虑效率问题。压力测试时要注意webservice的效率测试。
在生成service端和client端时最好使用两个工程,把service部署后建立另外一个xfire工程,并生成client,在传输对象的过程中client端也需要一个User对象,这个对象的作用就是映射服务器端的自定义对象。
首先我们需要创建服务类,返回参数是自定义对象User。
创建User对象,注意这个是服务器端的。
为了在WSDL中映射参数的类型,我们需要创建一个配置文件,并和服务类放在一个包下。IFirstService.aegis.xml
服务器端都准备好了,部署!看看我们wsdl。
注意其中对参数的定义。
下来就是client端的开发了,顺便介绍一下xfire客户端的三种模式:
【1. Client开发者拥有Web服务端的class
即:能拿到服务端的接口Class和Entity类及aegis配置文件
//传统POJO模式
Service srvcModel = new ObjectServiceFactory().create(Hello.class);
XFireProxyFactory factory = new XFireProxyFactory(
XFireFactory.newInstance().getXFire());
String helloWorldURL = "http://localhost:8080/webservice/services/Hello";
Hello srvc = ( Hello) factory.create(srvcModel,
helloWorldURL);
System.out.println(srvc.sayHello("Robin"));
// JSR181模式,注意这里Server端开发组需要向Client提供实现类,而不止于//接口,有点危险
Service srvcModel = new AnnotationServiceFactory()
.create(HelloImpl.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
String helloWorldURL = "http://localhost:8080/webservice/services/Hello";
Hello hello = (Hello) factory.create(srvcModel,helloWorldURL);
System.out.println(hello.sayHello("caohuili:"));
2动态模式
动态模式不需要服务端的class,不过性能和复杂对象映射等估计做得不会太好。
Client client = new Client(new URL(
"http://localhost:8080/webservice/services/Hello?wsdl"));
Object[] results = client
.invoke("sayHello", new Object[] { "Cao," });
System.out.println((String) results[0]);
3根据WSDL生成Client Stub
//简单参数的
HelloClient client=new HelloClient();
HelloPortType port =client.getHelloHttpPort();
System.out.println(port.sayHello("hi!"));
//参数复杂的
MemberServiceClient client = new MemberServiceClient();
MemberService memberService = client.getMemberServiceHttpPort();
User user = new User();
/*JAXBElement<String> name = new JAXBElement<String>(new QName(
"http://memberService", "username"), String.class, "smallnest");
JAXBElement<String> password = new JAXBElement<String>(new QName(
"http://memberService", "password"), String.class, "123456");*/
ObjectFactory bjFac=new ObjectFactory();
JAXBElement<String> name = objFac.createUserUsername("smallnest");
JAXBElement<String> password = objFac.createUserPassword("123456");
user.setUsername(name);
user.setPassword(password);
Member neMember = new Member();
JAXBElement<String> memeberName = new JAXBElement<String>(new QName(
"http://memberService", "name"), String.class, "迈克");
JAXBElement<String> email = new JAXBElement<String>(new QName(
"http://memberService", "email"), String.class,
"micro@micro.com");
oneMember.setName(memeberName);
oneMember.setEmail(email);
oneMember.setRank(6);
//调用方法
memberService.addMember(oneMember, user);
】
那我们就完成自己的客户端,很简单,还是用eclipse新建立一个工程,并根据wsdl生成一个client。
执行结果 :
2.4 数组类型通讯
对于基本类型的数组,不用在aegis.xml文件中映射配置,生成客户端时,会生成ArrayOfString的映射类型接收数据。如果是自己定义的复杂对象,就需要在aegis.xml文件中配置对象映射,这时client会根据wsdl生成对应的ArroyOfxxx对象。
首先生成服务类。
生成的wsdl文件。
客户端程序:
执行结果:
3 Weblogic部署方式
- webservice xfire框架实例笔记
- xfire:xFire WebService学习笔记
- xfire webservice 实例
- XFire开发WebService实例
- Xfire实现webservice实例
- XFire创建WebService实例
- XFire创建WebService实例
- XFire WebService 开发实例
- XFire创建WebService实例
- XFire创建WebService实例
- XFire创建WebService实例
- XFire创建WebService实例
- XFire WebService使用实例
- XFire创建WebService实例
- XFire创建WebService实例
- XFire创建WebService实例
- WebService-XFire笔记
- xfire webservice spring 集成实例
- 单例模式
- 堆栈溢出
- 参考:JScript 语法错误解释
- WinRAR 破解方法详解.-----------超级简单 1分钟搞定~
- 如何把.cs文件编译为.dll文件
- webservice xfire框架实例笔记
- Lucene学习总结之一:全文检索的基本原理
- 参考:JScript 运行时错误说明
- 转自【马自达6】PPC全国公交查询系统的源码
- 如何解决多次打开CameraDshowApp.exe系统死机的问题(高分辨率camera)
- 有意思的面试题
- sharepoint2010在工作流审批画面显示item信息
- 反矩阵、矩阵秩与行列式概念
- java基本数据类型及其所对应对象的自动装箱,new,valueof操作研究