XFireWebService例子_第1页
XFireWebService例子_第2页
XFireWebService例子_第3页
XFireWebService例子_第4页
XFireWebService例子_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论