刚做了一个例子,实现Web服务的创建,发布,以及在客户端使用XFire调用Web服务。
(环境: MyEclipse 10, Tomcat7.0, JDK1.7, XFire 1.2.6)
Part 1: 服务器端
1.首先添加XFire用户库。如图.
至此,XFire用户库已经添加完毕。
2. 新建一个Web Service Project: ( 命名为:xWeb,模拟服务器端)
3 完成后,再New相关的包和类:
User 用户实体类
package com.bean;
public class User {
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
IUser 用户接口类
package com.biz;
import com.bean.User;
public interface IUser {
public User checkUser(String name, String pwd);
}
IUserImpl 用户接口实现类
package com.biz.impl;
import com.bean.User;
import com.biz.IUser;
public class IUserImpl implements IUser {
/***
* 模拟
* 当用户名为"buck"的时候,返回用户信息,否则返回null
*/
public User checkUser(String name, String pwd) {
User user=null;
if("buck".equals(name)&& "000".equals(pwd)){
user=new User();
user.setName("buck");
user.setPwd("000");
}
return user;
}
}
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
<!-- 设置启动的有优先级 -->
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
services.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>UserService</name>
<serviceClass>com.biz.IUser</serviceClass>
<implementationClass>com.biz.impl.IUserImpl</implementationClass>
<!-- ...... -->
</service>
</beans>
4. 部署
Web服务可以部署在任何JavaEE服务器上,部署项目,启动Tomcat,服务器启动成功...
在浏览器输入: http://http://localhost:8080/xWeb/services,显示如下界面,恭喜,表示Web服务发布成功!
单击 [wsdl] ,可以查看WSDL描述,在WSDL文档中描述了Web服务提供的各种 方法名称 、方法参数个数、类型以及方法返回参数类型,从而方便在客户端应用程序调用Web服务。(如图)
至此,服务器端已经完成!.....
Part 2: 客户端
1.新建一个Web Service Project: ( 命名为:xClient,模拟客户端)
如图 New相关的包和类.
User用户实体类
package com.bean;
public class User {
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
IUserClient 客户端用户接口类
package com.biz;
import com.bean.User;
public interface IUserClient {
public User checkUser(String name, String pwd);
}
TestClient 测试类
package test;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import com.bean.User;
import com.biz.IUserClient;
public class TestClient {
/***
*
* @param args
* @throws Exception
*
* 使用XFire创建客户端调用Web步骤:
* 1.创建服务接口模板
* 2.创建代理工厂
* 3.定义Web服务地址
* 4.根据接口模板和Web服务地址返回服务类
* 5.根据调用方法,返回结果。
*/
public static void main(String[] args) throws Exception {
// 创建服务接口
Service serviceModel = new ObjectServiceFactory().create(IUserClient.class);
// 创建代理工厂
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
// 定义Web服务地址
String url = "http://localhost:8080/xWeb/services/UserService";
// 根据接口模板和Web服务地址,返回代理服务类
IUserClient ic = (IUserClient) factory.create(serviceModel, url);
User user = ic.checkUser("buck", "000");
if (user != null) {
System.out.println(user.getName() + "----" + user.getPwd());
} else {
System.out.println("User is null!");
}
}
}
2. Run as Java Application.
The end......
June 26 ,2012.