XFire完整入门教程

系统 1648 0

网上关于XFire入门的教程不少,要么是讲得很简单,就像Hello World一样的程序,要么就是通过IDE集成的工具来开发的,这对于不同的人群有诸多不便,关于XFire的一些详细的信息就不再多讲,可以参考官方网站和相关的文档,这里讲一个完整的入门实例。

实例中包括三个情况,我想基本上可以概括所有的需求,或者自己稍加扩展即可。先来看看我们的Interface。

 1 package  test;
 2
 3 import  java.util.List;
 4
 5 public   interface  IHelloService  {
 6      public  String sayHello(String ttt);
 7     
 8      public  Course choose(User u);
 9     
10      public  List  test(List t);
11 }

这其中包含了简单对象的传递,对象的传递,List的传递。

具体的开发步骤如下:
1、定义Web Service的接口,代码见上面的接口定义。

2、实现接口和业务逻辑,代码如下:

 1 package  test;
 2
 3 import  java.util.ArrayList;
 4 import  java.util.List;
 5
 6 public   class  HelloServiceImpl  implements  IHelloService  {
 7
 8      public  String sayHello(String ttt)  {
 9          return   " Hello,  " + ttt;
10     }

11     
12      public  Course choose(User u) {
13         System.out.println(u.getName());
14         Course c = new  Course();
15         c.setName( " Eee " );
16          return  c; 
17         
18     }

19     
20      public  List  test(List t) {
21          for  ( int  i  =   0 ; i  <  t.size(); i ++ {
22             System.out.println((String) t.get(i));
23         }

24         List  al = new  ArrayList();
25         Course c = new  Course();
26         c.setName( " EeeDDDDDD " );
27         al.add(c);
28          return  al;
29         
30     }

31 }

用到的User和Course两个类的代码如下:

 1 package  test;
 2
 3 public   class  User  {
 4      private  String name;
 5
 6      public  String getName()  {
 7          return  name;
 8     }

 9
10      public   void  setName(String name)  {
11          this .name  =  name;
12     }

13 }

14
 1 package  test;
 2
 3 public   class  Course   {
 4      private  String name;
 5
 6      public  String getName()  {
 7          return  name;
 8     }

 9
10      public   void  setName(String name)  {
11          this .name  =  name;
12     }

13
14 }


3、编写XFire要求的WebSevice定义描述文件,如下:

 1 <? xml version="1.0" encoding="UTF-8" ?>
 2 < beans  xmlns ="http://xfire.codehaus.org/config/1.0" >
 3
 4      < service >
 5          < name > HelloService </ name >
 6          < namespace > http://test/ HelloService </ namespace >
 7          < serviceClass > test.IHelloService </ serviceClass >
 8          < implementationClass > test.HelloServiceImpl </ implementationClass >
 9      </ service >
10     
11 </ beans >

此文件放在src/META-INF/xfire/services.xml,编译时会自动编译到classes的相应目录下面。

4、因为我们用到了List等集合类型,所以需要定义Mapping关系,文件名为:src/test/IHelloService.aegis.xml,代码如下:

1 <? xml version="1.0" encoding="UTF-8" ?>
2 < mappings >
3      < mapping >
4          < method  name ="test" >
5              < parameter  index ="0"  componentType ="java.lang.String"   />
6              < return-type  componentType ="test.Course"   />
7          </ method >
8      </ mapping >
9 </ mappings >

请注意,此文件一定要放到与IHelloService.java相同的目录下面,否则会出错。

5、在Web.xml中配置XFire需要用到的Servlet,代码如下:

 1 <? xml version="1.0" encoding="UTF-8" ?>
 2 < web-app  version ="2.4"  xmlns ="http://java.sun.com/xml/ns/j2ee"
 3     xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee 
 5     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
 6
 7      < servlet >
 8          < servlet-name > XFireServlet </ servlet-name >
 9          < servlet-class >
10             org.codehaus.xfire.transport.http.XFireConfigurableServlet
11          </ servlet-class >
12      </ servlet >
13
14      < servlet-mapping >
15          < servlet-name > XFireServlet </ servlet-name >
16          < url-pattern > /servlet/XFireServlet/* </ url-pattern >
17      </ servlet-mapping >
18
19      < servlet-mapping >
20          < servlet-name > XFireServlet </ servlet-name >
21          < url-pattern > /services/* </ url-pattern >
22      </ servlet-mapping >
23
24
25      < welcome-file-list >
26          < welcome-file > index.jsp </ welcome-file >
27      </ welcome-file-list >
28 </ web-app >



此时Web Service的服务端就开发完成了。
我们来看看客户端的代码吧,也很简单,如下:

 1 package  test;
 2
 3 import  java.net.MalformedURLException;
 4 import  java.util.ArrayList;
 5 import  java.util.List;
 6
 7 import  org.codehaus.xfire.XFireFactory;
 8 import  org.codehaus.xfire.client.XFireProxyFactory;
 9 import  org.codehaus.xfire.service.Service;
10 import  org.codehaus.xfire.service.binding.ObjectServiceFactory;
11
12 public   class  Client  {
13
14      public   static   void  main(String[] args)  {
15
16         Service srvcModel  =   new  ObjectServiceFactory()
17                 .create(IHelloService. class );
18         XFireProxyFactory factory  =   new  XFireProxyFactory(XFireFactory
19                 .newInstance().getXFire());
20
21         String helloWorldURL  =   " http://localhost:8080/xfiretest/services/ HelloService " ;
22          try   {
23             IHelloService srvc  =  (IHelloService) factory.create(srvcModel,
24                     helloWorldURL);
25             System.out.println(srvc.sayHello( " Robin " ));
26             
27             User u = new  User();
28             u.setName( " RRRRR " );
29             Course c = srvc.choose(u);
30             System.out.println(c.getName());
31             
32             List  al = new  ArrayList();
33             al.add( " 1212 " );
34             al.add( " 2222 " );
35             List t = srvc.test(al);
36              for  ( int  i  =   0 ; i  <  t.size(); i ++ {
37                 Course co = (Course)t.get(i);
38                 System.out.println(co.getName());
39             }

40             
41             
42         }
  catch  (MalformedURLException e)  {
43             e.printStackTrace();
44         }

45
46     }

47
48 }

49


以上代码均无注释,因为都非常简单,呵呵。如有不清楚的地方,请留言!

XFire完整入门教程


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论