版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、XFire WebService开发快速起步 XFire WebService开发快速起步 环境:JDK1.5MyEclipse 6.5Windows XP Professional简体中文版 软件下载地址:url/org/codehaus/xfire/xfire-distribution/1.2.6/xfire-distribution-1.2.6.zip/urlurl 有关WebService的概念、原理、数据发现、描述、绑定等过程、方式也不说了。这里就只关注如何快速开发出来一个通用的、易懂的Hello
2、 World例子。 以下是开发步骤: 1、创建工程 打开MyEclipse 6.5,新建一个WebService工程。如下图 然后一路next,直到完成。 创建完成后,打开生成的web.xml文件,可以看到,XFire已经配置好了。<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns=" xmlns:xsi="/2001/XMLSchema-instance"
3、version="2.5" xsi:schemaLocation=" url <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class></servlet-class>
4、 <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name>
5、 <url-pattern>/services/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <
6、;/welcome-file-list> </web-app> 2、创建WebService服务 创建两个个包“wstest.server”和“wstest.client”,用来保存服务端和客户端程序。然后开始创建服务端程序,如下图 完成后,生成了一个Service的配置services.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:/xfire.codehaus.o
7、rg/config/1.0"> <service> <name>MyService</name> <serviceClass></serviceClass> <implementationClass> wstest.server.MyServiceImpl &
8、#160; </implementationClass> <style>wrapped</style> <use>literal</use> <scope>application</scope> </service> </beans> 也生成了接口和默认实现,改写后如下:package ws
9、test.server; /Generated by MyEclipse public interface IMyService public String sayHello(String user); package wstest.server; /Generated by MyEclipse public class MyServiceImpl implements IMyService
10、public String sayHello(String user) return "您好,"+user; 至此,服务端代码已经完成。 3、测试服务端代码 测试依赖与Servlet容器Tomcat,需要将做好的服务端打包部署到tomcat上,然后启动。才可以进行测试。假设你已经配置了Tomcat服务器,并完成了WebService服务端的部署。那么,现在就启动Tomcat,然后: 输入访
11、问地址:urlhttp:/localhost:8080/xfire126Demo/services/MyService?wsdl/url ,然后go一把! 这样,出现上上面的结果,表明测试成功了。 4、生成客户端代码 很郁闷,这个生成的客户端代码一部分跑到服务端的包里面了。真是垃圾,rubbish! 但是,这就是MyEclipse的功能,我改变不了。 5、客户端测试 下面就耐心看怎么用这个客户端代码。打开生成的代码如下:package wstest.c
12、lient; import .MalformedURLException; import java.util.Collection; import java.util.HashMap; import space.QName; import org.codehaus.xfire.XFireRuntimeException; import org.codehaus.xfire.aegis.AegisBindingProvider; import org.codehaus.xfire.annotations.AnnotationServiceFactory; import
13、 org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.jaxb2.JaxbTypeRegistry; import org.codehaus.xfire.service.Endpoint; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.soap.AbstractSoapBinding
14、; import org.codehaus.xfire.transport.TransportManager; public class MyServiceClient private static XFireProxyFactory proxyFactory = new XFireProxyFactory(); private HashMap endpoints = new HashMap();
15、60; private Service service0; public MyServiceClient() create0(); &
16、#160; Endpoint MyServicePortTypeLocalEndpointEP = service0 .addEndpoint(new QName("http:/server.wstest", "MyServicePortTypeLocalEndpoint"), new QName("http:/server.wstest", "MyServicePortTypeLocalBinding"), "xfire.
17、local:/MyService"); endpoints.put(new QName("http:/server.wstest", "MyServicePortTypeLocalEndpoint"), MyServicePortTypeLocalEndpointEP);
18、 Endpoint MyServiceHttpPortEP = service0 .addEndpoint(new QName("http:/server.wstest", "MyServiceHttpPort"), new QName("http:/server.wstest", "MyServiceHttpBinding"), "http:/localhost:8080/xfire126Demo/
19、services/MyService"); endpoints.put(new QName("http:/server.wstest", "MyServiceHttpPort"), MyServiceHttpPortEP);
20、; public Object getEndpoint(Endpoint endpoint) try
21、0; return proxyFactory.create(endpoint).getBinding(), (endpoint).getUrl(); catch (MalformedURLException e) &
22、#160; throw new XFireRuntimeException("Invalid URL", e);
23、0; public Object getEndpoint(QName name) Endpoint endpoint = (Endpoint) endpoints.get(name);
24、0;if (endpoint) = null) throw new IllegalStateException("No such endpoint!");
25、160; return getEndpoint(endpoint); public Collection getEndpoints()
26、60; return endpoints.values(); private void create0()
27、 TransportManager tm = (org.codehaus.xfire.XFireFactory.newInstance().getXFire().getTransportManager(); HashMap props = new HashMap();
28、0; props.put("erface", true); AnnotationServiceFactory asf = new AnnotationServiceFactory(new Jsr181WebAnnotations(), tm, new
29、AegisBindingProvider(new JaxbTypeRegistry(); asf.setBindingCreationEnabled(false); service0 = asf.create(wst
30、est.client.MyServicePortType.class), props); AbstractSoapBi
31、nding soapBinding = asf.createSoap11Binding(service0, new QName("http:/server.wstest", "MyServiceHttpBinding"), "/soap/http");
32、60; AbstractSoapBinding soapBinding = asf.createSoap11Binding(service0, new QName(&q
33、uot;http:/server.wstest", "MyServicePortTypeLocalBinding"), "urn:xfire:transport:local");
34、60; public MyServicePortType getMyServicePortTypeLocalEndpoint() return (MyServicePortType)(this).getEndpoint(new QName("http:/server.wstest", "MyServicePortTypeLocalEndpoint"); &
35、#160; public MyServicePortType getMyServicePortTypeLocalEndpoint(String url) MyServicePortType var = getMyServiceP
36、ortTypeLocalEndpoint(); org.codehaus.xfire.client.Client.getInstance(var).setUrl(url); return var;
37、60; public MyServicePortType getMyServiceHttpPort() return (MyServicePortType)(this).getEndpoint(new QName("http:/s
38、erver.wstest", "MyServiceHttpPort"); public MyServicePortType getMyServiceHttpPort(String url)
39、60;MyServicePortType var = getMyServiceHttpPort(); org.codehaus.xfire.client.Client.getInstance(var).setUrl(url);
40、 return var; public static void main(String args)
41、60; MyServiceClient client = new MyServiceClient(); /create a default service endpoint
42、60; MyServicePortType service = client.getMyServiceHttpPort(); /TODO: Add custom client code here
43、0; / /service.yourServiceOperationHere(); &
44、#160; System.out.println("test client completed"); System.exit(0); 看得很晕,不知道啥意思,但是从“TODO”标记处,我知道了: /TODO: Add custom client code here
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GMAT写作试题及解析
- 篮球裁判手势试题及分析
- 新生儿医源性皮肤损伤的评估要点和预见性护理的专家共识
- 胃癌理论知识考试试题
- 胃癌理论知识专项考试试题
- 肿瘤科二病区导尿管相关尿路感染护理考核试题
- CTPαS-Rp-isomer-生命科学试剂-MCE
- 2026年新能源电池生产销售合同协议
- 职业学校数控技术基础理论考试及答案真题
- 第四单元 单元复习 课件-2025-2026学年三年级下册语文统编版
- 弹幕游戏主播培训
- 《联合收割机培训》课件
- iabp患者护理查房
- 向往混声合唱谱【简谱】
- 采购英文分析报告
- Python文件和数据格式化桌面应用开发与设计
- 毕业设计指导记录表12次
- 上海轨交地下车站工程质量资料表式
- JJF 1151-2006车轮动平衡机校准规范
- GB/T 9065.6-2020液压传动连接软管接头第6部分:60°锥形
- 人教PEP版英语六年级下册Recycle教学课件(附教案与反思)
评论
0/150
提交评论