开发服务端:
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();
}
输出结果: