`
还有也许
  • 浏览: 169291 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

xfire开发WebService实例

阅读更多

参照文献: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开发webservice实例(原稿)"所涉及的知识点主要集中在使用XFire框架创建和实现Web服务的实践中。XFire是Apache CXF的前身,它是一个轻量级的Java Web服务框架,允许开发者快速地构建和部署SOAP服务。...

    MyEclipse下XFire开发Webservice实例

    本文将介绍如何在MyEclipse环境中利用XFire框架开发Web服务。XFire是一个开源的Java SOAP框架,其特点是轻量级且高效,它利用STAX处理SOAP信息,支持多种Web服务标准,包括Spring整合、JBI、JAXB、XMLBeans、Java 5...

    myeclipse xfire 开发webservice实例

    ### XFire Java SOAP框架概述 XFire是一款开源的Java SOAP框架,主要特点包括: ...这不仅有助于理解SOAP WebService的工作原理,还能实际操作并掌握如何使用MyEclipse与XFire框架来构建完整的WebService应用。

    用XFire开发Webservice简单实例

    在这个实例中,`MyEclipse下XFire开发Webservice实例.doc`文件应该包含了详细的步骤说明和源码示例,帮助读者更好地理解和实践这个过程。通过阅读文档和动手操作,开发者可以快速掌握XFire的使用技巧,从而在实际...

    MyEclipse下XFire开发Webservice实例.doc

    XFire是一个开源的Java SOAP框架,它的设计目标是提供一个轻量级、高效的信息处理模块,以简化Web服务的开发。XFire利用STAX(Streaming API for XML)来处理SOAP消息,STAX是一种基于事件的XML解析器,能够以流式...

    xfire实现webservice实例

    本实例将深入探讨如何利用XFire来实现Web服务。 一、XFire简介 XFire是Apache CXF项目的前身,它提供了一个轻量级、高性能的框架,用于创建和调用Web服务。XFire通过简化编程模型和强大的注解支持,使得开发者能够...

    XFire建立Webservice实例,入门级别,适合初学者

    【XFire建立Webservice实例详解】对于初学者来说,理解并构建一个Web Service是一个重要的学习步骤,而XFire作为一款曾经流行的开源框架,提供了一种简单的方法来创建和部署Web Service。本文将详细介绍如何利用...

    xfire发布webservice实例无需设置地址和端口号

    xfire简单实例发布webservice,引用到2个jar包的简单例子

    xfire发布webservice实例

    用java通过xfire框架实现ws,实现正向生成wsdl文件,并由wsdl逆向生成java ws客户端代码 测试输入:http://localhost:8080/webservice-xfire/services/CalculatorService?wsdl

    JAVAEE利用XFIRE创建WEBSERVICE实例

    【JAVAEE利用XFIRE创建WEBSERVICE实例】 Java EE(Java Platform, Enterprise Edition)是用于构建企业级Web应用的标准框架,而Web服务是Java EE中一个重要的组成部分,它允许应用程序通过网络进行通信。Xfire是一...

    XFire建立Webservice实例.docx

    XFire 建立 Webservice 实例 XFire 是一个基于 Java 的开源 Web 服务框架,它提供了一个简单、灵活和高效的方式来创建和消费 Web 服务。在本篇文章中,我们将详细介绍如何使用 XFire 建立一个 Webservice 实例,并...

    XFire建立Webservice实例

    【XFire建立Webservice实例详解】 XFire是一个早期流行的Java Web Service框架,它允许开发者轻松地创建和消费Web服务。本文将详细介绍如何使用XFire在MyEclipse环境中创建和部署一个简单的Web服务。 一、创建Web...

    xfire webservice 完整实例下载

    XFire Webservice是一个基于Java的开源工具,它简化了创建、部署和消费Web服务的过程。在深入探讨这个完整实例之前,我们首先需要了解Web服务的基本概念。Web服务是一种通过网络进行通信的应用程序接口(API)。它们...

    xfire-webservice实例(下载即可运行)

    《Xfire Webservice实例详解与应用》 Xfire是一款强大的Java Web服务框架,它简化了创建、部署和消费Web服务的过程。在这个实例中,我们将会深入探讨如何利用Xfire快速构建一个可运行的Web服务,并了解其核心概念和...

Global site tag (gtag.js) - Google Analytics