使用XFire框架实现WebService接口的实践

开发服务端:
1.下载需要的包:http://xfire.codehaus.org/Download
2.创建项目名称为XfireWebService的Web项目,并且导入jar。
3.创建IReaderObject接口。
4.创建实现接口的ReaderObjectImpl类。
5.在项目的src目录下创建META-INF文件夹,再在META-INF文件夹下创建xfire文件夹。


 
6.在xfire文件夹下创建services.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns=" http://xfire.codehaus.org/config/1.0 ">
     <service>
         <!-- webserviceq名称,调用时需要指定这个 -->
         <name>ReaderService</name>
         <!-- 这个一般是自己公司的网址,意义不大 -->
         <namespace> http://www.douban.com/people/happy829 </namespace>
         <!-- 接口类 -->
         <serviceClass>com.cn.service.IReaderObject</serviceClass>
         <!-- 实现类 -->
         <implementationClass>com.cn.service.impl.ReaderObjectImpl</implementationClass>
     </service>
 </beans>
7.在web.xml文件里添加如下内容(添加到<web-app>节点中):
<servlet>
         <servlet-name>XFireServlet</servlet-name>
         <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
     </servlet>
     <servlet-mapping>
         <servlet-name>XFireServlet</servlet-name>
         <url-pattern>/services/*</url-pattern>
     </servlet-mapping>
8.发布项目并且部署到tomact,并且在IE里输入 http://localhost:8080/XfireWebService/services/ReaderService?wsdl, 截图如下:

 
开发客户端:
第一种实现方式:通过WebService服务端提供的接口来创建客户端,源码如下:

/**
                 *
                 * 第一种方法:通过WebService服务端提供的接口来创建客户端
                 * 客户端必须提供一个与服务端完全一致的接口,包明也要一致
                 * 本例中需要在客户端提供IReaderObject接口
                 */
                
                Service srcModel=new ObjectServiceFactory().create(IReaderObject.class);
                XFireProxyFactory factory=new XFireProxyFactory(XFireFactory.newInstance().getXFire());
                String ServiceUrl="http://localhost:8080/XfireWebService/services/ReaderService";
                try
                {
                        IReaderObject readerObject=(IReaderObject)factory.create(srcModel,ServiceUrl);
                        
                        String str=readerObject.GetObject("张三", 18, "北京市");
                        System.out.println(str);
                                
                }
                catch(Exception ex)
                {
                        ex.printStackTrace();
                }
客户端输入结果:

第二种实现方式:通过wsdl地址来创建动态客户端,源代码如下:
/**
                 * 第二种方式
                 * 通过wsdl地址来创建动态客户端
                 */
                
                try
                {
                        String ServiceUrl="http://localhost:8080/XfireWebService/services/ReaderService?wsdl";
                        Client client=new Client(new URL(ServiceUrl));
                        Object[] result=client.invoke("GetObject", new Object[]{"李斯",12,"上海市"});
                        System.out.println(result[0]);
                }
                catch(Exception ex)
                {
                        ex.printStackTrace();
                }
输出结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值