eclipse下用xfire开发web service



使用XFIRE开发一个web service的实例



环境:Eclipse3.2+tomcat6.0+JDK1.6

xfire版本:xifre-1.2.6

1.准备工作

准备XFire所需要的jar

      方法1:在http://xfire.codehaus.org/下载xfire1.2.6-.zip压缩包,解压后libjar

     方法2myeclipse的安装目录下:

      .......\myeclipse\eclipse\plugins\com.genuitec.eclipse.ws.xfire_5.1.0\data\1.2\lib的所有jar


2.建工程

      新建tomcat工程,命名为xfire

      目录结构

3.导入jar

      xfire所需要的包copy到工程的lib目录下并导入(导入过程点工程右键,在java buildpath里)

4.更新web.xm文件

<?xmlversion="1.0"encoding="UTF-8"?>

<web-appid="WebApp_ID"version="2.4"

   xmlns="http://java.sun.com/xml/ns/j2ee"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

   <display-name>xfire</display-name>

   <welcome-file-list>

      <welcome-file>index.html</welcome-file>

      <welcome-file>index.htm</welcome-file>

      <welcome-file>index.jsp</welcome-file>

      <welcome-file>default.html</welcome-file>

      <welcome-file>default.htm</welcome-file>

      <welcome-file>default.jsp</welcome-file>

   </welcome-file-list>

 

   <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>/servlet/XFireServlet/*</url-pattern>

   </servlet-mapping>

   <servlet-mapping>

      <servlet-name>XFireServlet</servlet-name>

      <url-pattern>/services/*</url-pattern>

   </servlet-mapping>

</web-app>

web.xml中添加的servlet映射表明,所有匹配“/services/*”的url请求全部交给org.codehaus.xfire.transport.http.XFireConfigurableServlet来处理。

5.制作服务

      这里以一个简单的为例:如果name参数为null,返回“Hello guest”,否则返回“Hello 'name'”

      5.1 新建一个接口HelloService,放在包com.lip.service下:

package com.lip.service;

 

publicinterface HelloService {

   public StringsayHello(String name);

}

      5.2 做接口HelloService的实现类HelloServiceImpl,放在包com.lip.service.impl下:

package com.lip.service.impl;

 

import com.lip.service.HelloService;

 

publicclass HelloServiceImplimplements HelloService {

 

   public String sayHello(String name) {

      if (null == name) {

          return"Hello guest!";

      } else {

          return"Hello "+name;

      }

   }

}

 

6.发布服务

      WEB-INF/src文件夹下,建立META-INF/xfire/services.xml文件。在WebContent\META-INF目录下新建xfire文件夹,然后在xfire目录下添加一个XFire使用的配置文件services.xml,该配置文件中的内容反映了要将哪些java类发布为web服务。本例中的services.xml内容如下: services.xml文件内容为:

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns="http://xfire.codehaus.org/config/1.0">

<service>

 

     <name>HelloService</name>

 

     <namespace>

http://www.57market.com.cn/HelloService

</namespace>

 

     <serviceClass>

com.lip.service.HelloService

</serviceClass>

 

     <implementationClass>

com.lip.service.impl.HelloServiceImpl

</implementationClass>

 

   </service>

</beans>

7查看服务

      打开浏览器,访问http://localhost:8080/xfire/services/HelloService?wsdl

      会得到HelloService这个服务的WSDL文档,可以保留这个WSDL文档以备用。

      

新建一个客户端访问类MathServiceClient:


package com.yao.xfire.client;
 
import java.net.MalformedURLException;
 
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.codehaus.xfire.transport.http.CommonsHttpMessageSender;
 
import com.yao.xfire.service.MathService;
 
public class MathServiceClient {
     
    private static MathService mathService;
     
    private MathServiceClient(){}
     
    public static MathService getMathService(String serviceUrl) throws MalformedURLException{
        if(mathService == null){
            //创建服务
            Service srvcModel = new ObjectServiceFactory().create(MathService.class);
            //创建XFire对象
            XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
            //调用Web服务
            mathService = (MathService) factory.create(srvcModel, serviceUrl);
             
            //设置客户端调用的属性
            Client client = Client.getInstance(mathService);
            client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "300");
            client.setProperty(CommonsHttpMessageSender.DISABLE_KEEP_ALIVE, "true");
            client.setProperty(CommonsHttpMessageSender.DISABLE_EXPECT_CONTINUE, "true");
            //如果需要设置代理
            //client.setProperty(CommonsHttpMessageSender.HTTP_PROXY_HOST, "10.3.1.6" ); 
            //client.setProperty(CommonsHttpMessageSender.HTTP_PROXY_PORT, "8080");
        }
         
        return mathService;
    }
     
    public static void main(String[] args) throws MalformedURLException{
        MathService service = MathServiceClient.getMathService("http://localhost:8080/xfireDemo/services/MathService");
        int result = service.add(1, 14);
        System.out.println("get the result: " + result);
    }
}
 
将得到结果:get the result: 15。 

8. 补充

      下载xfire1.2.6-.zip,解压后的,xfire-all-1.2.6.jar放在lib下,导入后重新启动tomcat

      访问http://localhost:8080/xfire/services,得到以下结果,点击[wsdl]的链接,可以得到与7一样的结果。

      

9.保存WSDL

      至此,我们利用XFIRE已经发布了一个web service服务的接口。

   这个接口的描述就是这个XML格式的WSDL文件。其他应用程序可以根据这个文档编写他们的调用程序来调用我们提供的服务。




  









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值