Web服务的创建,发布以及客户端的调用

来源:互联网 发布:微机室网络卡 编辑:程序博客网 时间:2024/05/22 07:56

做了一个例子,实现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.