免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1392 | 回复: 0
打印 上一主题 下一主题

xfire入门(转载) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-14 11:16 |只看该作者 |倒序浏览
网上关于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>HelloServicename>
6

        namespace>http://test/HelloServicenamespace>
7

        serviceClass>test.IHelloServiceserviceClass>
8

        implementationClass>test.HelloServiceImplimplementationClass>
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>XFireServletservlet-name>
9

        servlet-class>
10

            org.codehaus.xfire.transport.http.XFireConfigurableServlet
11

        servlet-class>
12

    servlet>
13

14

    servlet-mapping>
15

        servlet-name>XFireServletservlet-name>
16

        url-pattern>/servlet/XFireServlet/*url-pattern>
17

    servlet-mapping>
18

19

    servlet-mapping>
20

        servlet-name>XFireServletservlet-name>
21

        url-pattern>/services/*url-pattern>
22

    servlet-mapping>
23

24

25

    welcome-file-list>
26

        welcome-file>index.jspwelcome-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



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/47207/showart_1414420.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP