我的第一个webservice例子

1.首先从http://xfire.codehaus.org/Download下载xfire压缩包

xfire-distribution-1.2.6.zip 我下载的是这个。

2.打开eclipse

新建一个动态web项目,项目名为myXFire。

将下载的xfire压缩包里面的lib目录下的jar包和xfire-all-1.2.6.jar导入

3.修改web.xml配置文件

加入:

<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>

4.在工程根目录下新建两个包

com.test.service

com.test.service.impl

在对应的包下新建CalculatorService接口和CalculatorServiceImpl实现类

源码如下:

CalculatorService 接口

public interface CalculatorService{

  public int add(int a,int b);

     public int subtract(int a,int b);

     public int multiply(int a, int b);

     pubic int devide(int a ,int b);

}

CalculatorServiceImpl实现类

public class CalculatorServiceImpl implements CalculatorService{ 

   @Override
   public int add(int a, int b) {
    return a+b;
   }

   @Override
   public int subtract(int a, int b) {
    return a-b;
   }

   @Override
   public int multiply(int a, int b) {
    return a*b;
   }

   @Override
   public int devide(int a, int b) {
    return a/b;
   }

}

5.接下来怎么把我们写好的服务类发布出去呢?

在项目根目录下新建一个文件夹META-INF,在META-INF下在建一个xfire文件夹,在xfire文件下新建一个services.xml文件

services.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">(该头部可以从下载的xfire里面的example例子复制过来)

<service>
<!-- 客户端访问我们服务的名字,自己随便取一个都可以 -->
<name>CalculatorService</name>
<!-- 定义的接口 -->
<serviceClass>com.test.service.CalculatorService</serviceClass>
<!-- 接口对应的实现类 -->
<implementationClass>com.test.service.impl.CalculatorServiceImpl</implementationClass>
</service>
</beans>

6.最后我们再新建一个包com.test.client,新建一个Client客户端测试类

public class Client{

   public static void main(String [] args){

    Service service = new ObjectServiceFactory().create(CalculatorService.class);

       XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());

       String url = "http://localhost:8080/myXFire/services/CalculatorService";

       CalculatorService cs = (CalculatorService)factory.create(service,url);

       

   System.out.println(cs.getClass().getName());

   int addResult = cs.add(1, 2);
   int subtractResult = cs.subtract(1, 2);
   int multiplyResult = cs.multiply(1, 2);
   int devideResult = cs.devide(1, 2);

   System.out.println(addResult);
   System.out.println(subtractResult);
   System.out.println(multiplyResult);
   System.out.println(devideResult);

   }

}

最终运行结果如下:

项目的目录结构如下:

 

该例子紧作为演示学习使用,实际开发中服务端和客户端应分别为两个不同的项目。

posted on 2012-06-24 19:41  郑志伟  阅读(675)  评论(0编辑  收藏  举报

导航