我的第一个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);
}
}
最终运行结果如下:
项目的目录结构如下:
该例子紧作为演示学习使用,实际开发中服务端和客户端应分别为两个不同的项目。