参照文献:http://www.360doc.com/content/07/0523/20/27452_516946.shtml#
打开MyEclipse新建一个WebService Project,为你的项目命名,我选择了Java EE5.0,项目在你的WorkSpace目录下。下一步:看到了这个界面
在这里Eclipse为你创建了webService的配置文件services.xml(主意文件名是有“s”的),并进行了Xfire的Servlet基本配置告诉项目你使用了Xfire改信息将体现在项目的web.xml文件中。继续下一步,加载Xfire相关的jar包
在这个项目里我勾选了Xfire1.2 Core Libraries;HTTP Client Libraries;XML Beans Libraries。
然后编写要发布的java 方法
首先编写一个接口IBankingService
package test;
public interface IBankingService {
public String transferFunds(String fromAccount,String toAccount,double amount,String currency);
}
接着实现这个接口BankingService
package test;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class BankingService implements IBankingService {
public BankingService(){}
public String transferFunds(String fromAccount, String toAccount,
double amount, String currency) {
String statusMessage = "";
//调用业务逻辑执行操作.
//建立并返回状态信息.
try {
NumberFormat formatter = new DecimalFormat("###,###,###,###.00");
statusMessage = "COMPLETED: " + currency + " " + formatter.format(amount)+
" was successfully transferred from A/C# " + fromAccount + " to A/C# " + toAccount;
} catch (Exception e){
statusMessage = "BankingService.transferFunds(): EXCEPTION: " + e.toString();
}
return statusMessage;
}
}
你可以看到BankingService是一个普通的Java类,没有任何代码告诉我们它将会在Web Services中使用。只是要有默认的构造函数,类型是public。这是必须的。否则,XFire不能够初始化这个类。好的,这里我们不需要增加任何东西。我们所有的工作都在部署描述符里完成。
Web应用的部署描述符
在Java中,Web应用程序通常需要至少一个部署描述符(叫做web.xml)对其进行配置。XFire本身是一个基于servlet的应用程序。因此,我们需要增加必要的引用到描述符文件中。然后我们还必须配置将要创建的Web Services。我们使用一个称为services.xml的新文件来完成这件事。在使用Eclipse工具构建工程的时候我们已经完成了这项配置
接着就是要将这个写好的方法给发布出去,让别人调用,在services.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>Banking</name>
<namespace>myBank</namespace>
<serviceClass>test.IBankingService</serviceClass>
<implementationClass>test.BankingService</implementationClass>
</service>
</beans>
Web Services的定义包含在元素中,它还含有一些子元素。
第一个子元素是Banking,它可以是你提供任何的合法名字。这将会被客户端程序和其它需要定位你的服务的组件用到。例如,在服务准备好以后,你将在浏览器上使用这个名字来查看WSDL。
下一个子元素是。任何合法的XML名字都是可以的。用来唯一标识你的服务的各个参数。(注释@)
注释@:Namespace派什么用?namespace的作用是要避免命名冲突。如果我建立一项Web
Service,其中的WSDL文件包含一个名为"foo"的元素,而你想要使用我的服务与另一项服务连接作为补充,这样的话另一项服务的WSDL文件就不能包含名为"foo"的元素。两个服务器程序只有在它们在两个事例中表示完全相同的东西时,才可以取相同的名字。如果有了表示区别的namespace,我的网络服务里的"foo"就可以表示完全不同于另一个网络服务里"foo"的含义。在你的客户端里,你只要加以限制就可以引用我的"foo"。
元素包含了Java类的名字,它指定了方法签名。在我们的例子中,它是接口IBankingService。如果Java类没有实现任何接口,你就需要把类的名字放在这里。在你的Java类或者接口中可能有几个方法。只需要一个入口把它们全部发布为Web Services。
保存了实现方法的Java类名。这是一个可选元素。如果上一个元素包含了一个接口,那么相应的实现类必须在这里指定。
这样就基本搞定了,不过我们的试一下我们的程序发布成功没有。
将系统发布到tomcat下,然后在浏览器中输入
http://localhost:8080/项目名称/services/类名称(和services.xml中的name名称一致)?WSDL。
如果出现wsdl文件就算成功了。
结着我们可以写一个客户端来模拟调用一下,看是否正确,我的名称是BankingClient.java
package test;
import java.net.MalformedURLException;
import org.codehaus.xfire.XFire;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
public class BankingClient {
public static void main(String[] args) {
// TODO Auto-generated method stub
BankingClient bc= new BankingClient();
try {
bc.callWebService("张三", "李四", 250.00, "EUR");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String callWebService(
String fromAccount, String toAccount, double amount, String currency)
throws MalformedURLException, Exception {
//Create a metadata of the service 创建一个service的元数据
Service serviceModel = new ObjectServiceFactory().create(IBankingService.class);
//Create a proxy for the deployed service 为XFire获得一个代理工厂对象
XFire xfire = XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xfire);
//得到一个服务的本地代理
String serviceUrl = "http://localhost:8080/xfire/services/Banking";
IBankingService client = null;
try {
client = (IBankingService) factory.create(serviceModel, serviceUrl);
} catch (MalformedURLException e) {
System.out.println("WsClient.callWebService(): EXCEPTION: " + e.toString());
}
//Invoke the service 调用服务 返回状态结果信息
String serviceResponse = "";
try {
serviceResponse = client.transferFunds(fromAccount, toAccount, amount, currency);
} catch (Exception e){
serviceResponse = e.toString();
}
System.out.println("WsClient.callWebService(): status=" + serviceResponse);
//Return the response
return serviceResponse;
}
}
我做项目一直也写webservice,不过一直是知其然不知其所以然,很是不爽,反了些资料弄明白了。附上自己跑的小例子供大家参考。
分享到:
相关推荐
【标题】"用xfire开发webservice实例(原稿)"所涉及的知识点主要集中在使用XFire框架创建和实现Web服务的实践中。XFire是Apache CXF的前身,它是一个轻量级的Java Web服务框架,允许开发者快速地构建和部署SOAP服务。...
本文将介绍如何在MyEclipse环境中利用XFire框架开发Web服务。XFire是一个开源的Java SOAP框架,其特点是轻量级且高效,它利用STAX处理SOAP信息,支持多种Web服务标准,包括Spring整合、JBI、JAXB、XMLBeans、Java 5...
### XFire Java SOAP框架概述 XFire是一款开源的Java SOAP框架,主要特点包括: ...这不仅有助于理解SOAP WebService的工作原理,还能实际操作并掌握如何使用MyEclipse与XFire框架来构建完整的WebService应用。
在这个实例中,`MyEclipse下XFire开发Webservice实例.doc`文件应该包含了详细的步骤说明和源码示例,帮助读者更好地理解和实践这个过程。通过阅读文档和动手操作,开发者可以快速掌握XFire的使用技巧,从而在实际...
XFire是一个开源的Java SOAP框架,它的设计目标是提供一个轻量级、高效的信息处理模块,以简化Web服务的开发。XFire利用STAX(Streaming API for XML)来处理SOAP消息,STAX是一种基于事件的XML解析器,能够以流式...
本实例将深入探讨如何利用XFire来实现Web服务。 一、XFire简介 XFire是Apache CXF项目的前身,它提供了一个轻量级、高性能的框架,用于创建和调用Web服务。XFire通过简化编程模型和强大的注解支持,使得开发者能够...
【XFire建立Webservice实例详解】对于初学者来说,理解并构建一个Web Service是一个重要的学习步骤,而XFire作为一款曾经流行的开源框架,提供了一种简单的方法来创建和部署Web Service。本文将详细介绍如何利用...
xfire简单实例发布webservice,引用到2个jar包的简单例子
用java通过xfire框架实现ws,实现正向生成wsdl文件,并由wsdl逆向生成java ws客户端代码 测试输入:http://localhost:8080/webservice-xfire/services/CalculatorService?wsdl
【JAVAEE利用XFIRE创建WEBSERVICE实例】 Java EE(Java Platform, Enterprise Edition)是用于构建企业级Web应用的标准框架,而Web服务是Java EE中一个重要的组成部分,它允许应用程序通过网络进行通信。Xfire是一...
XFire 建立 Webservice 实例 XFire 是一个基于 Java 的开源 Web 服务框架,它提供了一个简单、灵活和高效的方式来创建和消费 Web 服务。在本篇文章中,我们将详细介绍如何使用 XFire 建立一个 Webservice 实例,并...
【XFire建立Webservice实例详解】 XFire是一个早期流行的Java Web Service框架,它允许开发者轻松地创建和消费Web服务。本文将详细介绍如何使用XFire在MyEclipse环境中创建和部署一个简单的Web服务。 一、创建Web...
XFire Webservice是一个基于Java的开源工具,它简化了创建、部署和消费Web服务的过程。在深入探讨这个完整实例之前,我们首先需要了解Web服务的基本概念。Web服务是一种通过网络进行通信的应用程序接口(API)。它们...
《Xfire Webservice实例详解与应用》 Xfire是一款强大的Java Web服务框架,它简化了创建、部署和消费Web服务的过程。在这个实例中,我们将会深入探讨如何利用Xfire快速构建一个可运行的Web服务,并了解其核心概念和...