本实例的原BLOG网站地址为:http://blog.csdn.net/meteorlWJ/archive/2009/09/12/4545100.aspx,有兴趣的朋友多多支持
在开始前,先介绍一些概念:
XFire Java SOAP框架概述 (摘自:http://tech.it168.com/j/e/2006-10-28/200610281432707.shtml)
MyEclipse Web Services是建立在XFire JavaSOAP框架和工具基础上的, XFire是一款开源的JavaSOAP框架。它拥有一个轻量级的信息处理模块,通过STAX来与SOAP信息相结合。提供了一个工作在WebServices下的简单API,支持POJO和schema开发. XFire支持 Web Services standards,Spring整合, 支持JBI , 支持 JAXB ,XMLBeans,Java 5 和JAX-WS.并支持HTTP, JMS, XMPP,In-memory传输协议
一、环境配置:MyEclipse7.0
JDK1.6
二、创建Web Service Project
1)在MyEclipse中选择File—>New—>Other,选择Web Service Project
2)Project Name:WebServiceServer,Framework:XFire,其他选项默认
3)Next,这一步保持默认值
4)Project Library选择,选择XFire 1.2 Core Libraries
5)Finish,创建成功后看到的工程目录如下:
6)完成以上5步后,查看WebRoot/WEB-INF/web.xml
这里指明了当遇到/services/*请求时,将选用XFireConfigurableServlet来处理
三、创建Web Service Code
1)通过File—>New—>Other—>Web Services—>Web Service wizard创建JAVA CODE
3)创建HelloWebService.java,通过New创建com.service package,向导将为工程自动创建对应的接口类与实现类
创建成功后查看WebServices/services.xml,发现配置文件多了以下内容:
4)修改HelloWebServiceImpl.java
package com.service;
//Generated by meteorWJ
public class HelloWebServiceImpl implements IHelloWebService {
public String example(String message) {
return getAuthor()+","+message;
}
private String getAuthor(){
return "meteorWJ";
}
}
四、部署并测试WebSericeServer
1)部署WebServiceServer
在部署向导中选择项目、服务器
2)启动服务器
3)测试WebService
MyEclipse提供了一个Web Service Explorer来测试Web Service
选择列表中的Launch SOAP Web Services Explorer
4)选择WSDL模式
5)在Explorer中选择WSDL Main,在右边的URL中输入
http://locahost:9090/WebServiceServer/services/HelloWebService?WSDL,单击"Go"
其中9090是服务器端口号,services在之前的web.xml中指定
若在Status中显示成功打开WSDL文件则测试成功
五、创建WebService客户端
经过以上几步,我们已经成功发布了一个WebService,现在需要创建一个客户端来调用该服务
1)创建Java Project:WebServiceClient
2)引入MyEclipse Libraries
右键WebServiceClient—>Build Path—>Add Libraries
选择XFire 1.2 HTTP Client Libraries
3)创建HelloWebService.java
在src目录下创建com.client.HelloWebService.java
package com.client;
import java.net.URL;
import org.codehaus.xfire.client.Client;
public class HelloWebService {
public static void main(String[] args) throws Exception
{
Client client = new Client(new URL("http://localhost:9090/WebServiceServer/services/HelloWebService?wsdl"));
Object[] results = client.invoke("example", new Object[] {"hello"});
System.out.println((String) results[0]);
}
}
4)在确认服务器启动的情况下,运行HelloWebService.java
右键点击Run As>Java Application,在控制台中看到如下输出
--------------------------------------
-----------------------------------
-------------------------------------
创建Java Test客户端
XFire提供了一个动态的代理框架,能够读取WSDL文档和创建潜在的消息服务使Java类来执行在Web Service的行为.该部分将为HelloWorld Web Service写一个Java Web Service客户端
6.1增加XFire类库配置
为了使example client能够在HelloWorld工程中运行,需要增加XFire HTTP Client类库到工程的构建路径中.
1. 在Package Explore视图中右击HelloWorld工程选择Build Path>Add Library
2. 选择MyEclipse Libraries
3. 选择XFire HTTP Client Libraries
Figure-17: Choosing the XFire HTTP Client Libraries
4. 选择Finish
6.2创建HelloWorldClient类
执行Java类向导来创建HelloWorldClient类
Figure-18: HelloWorldClient defined in New Java Class Wizard.
Web Service 客户端代码如下:
该段代码定义了创建一个XFire web service proxy的过程,该代理支持POJO IHelloWorldService接口
右键点击Run As>Java Application或者Debug As>JavaApplication来运行或调试该程序
下面加入自己的实现
创建webservice服务端都一样,说说客户端
因为不可能我们的程序会和webservice放在一起
所以我们在自己的程序里要写一个和服务端的接口一样的类
然后在自己的里面写
Service srvcModel = new
ObjectServiceFactory().create(IHelloWorldMyService.class);
XFireProxyFactory factory =
new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String url =
"http://localhost:8080/HelloWorld/services/HelloWorldService";
try {
IHelloWorldMyService srvc = (IHelloWorldMyService)factory.create(srvcModel, url);
String result = srvc.example("hello world");
System.out.print(result);
} catch (MalformedURLException e){
e.printStackTrace();
}
IHelloWorldMyService 这个接口和IHelloWorldService 一样的。。里面方法一直就OK
IHelloWorldMyService 代码:
public interface IHelloWorldMyService {
public String example(String message);
}