`
dragonboa
  • 浏览: 10912 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

xfire开发并调用webservice

阅读更多
Web Services使我们能够在网络上建立分布式系统,应用程序组件可以通过任何平台、任何语言和任何方式访问。无论应用程序如何开发,使用了什么语言,以及运行在什么操作系统平台上,只要它作为Web Service,并且为协同解决问题而设计,那么你的应用程序,以任何语言开发或在任何平台上,都可以利用它的服务。简而言之,就是说,你可以跨平台,你可以实用别人的数据,你可以调用现成的方法,你可以得到更多的便捷,在现实的开发中。



使用webservice之前,我们且不管你是否使用了现有的框架,或者你使用的是哪个框架,我们最好先了解它的规则和构成,比如,你想写个网页,那你得先晓得<html><title><head><body>它们是要有结束的,这是基本的前提。而使用webservice的前提则没那么多,第一,你该晓得,它是以xml形式作为默认的传递格式;第二,和http协议类似,它默认是以soap(Simple Object Access Protocol)协议,封装和交换信息的;第三,WSDL(Web Services Deion Language,Web Services描述语言),它是对webservice的一种详细描述,里面包含协议啊,服务地址啊,方法列表啊,参数啊等等之类的。它返回的xml是给我们处理的,而这个wsdl则是交给机器,交给客户端程序处理的。



ok,说完上面的,大体有个印象和看法了,我们开始webservice的最佳体验。这里,我首先用xfire框架来实现在javaweb项目中的webservice的开发和调用[非javaweb的项目步骤较容易,这里就不讲了],这个xfire也是我第一次接触webservice时所使用的开源框架,所以我打算好好写写[谁让我这么念旧呢(⊙o⊙)…]。axis,axis2,cxf之类的框架至于我打算后面再看能不能写写.....



第一步,新建一个接口,IBankingService.java,这个接口即是你将模拟对外发布的接口,代码如下:



Java代码 
1.package com.mybank.xfire.example;     
2.    
3.public interface IBankingService {       
4.    
5.     public String transferFunds(     
6.         String fromAccount, String toAccount, double amount, String currency);     
7.             
8.}  
package com.mybank.xfire.example;  
 
public interface IBankingService {    
 
     public String transferFunds(  
         String fromAccount, String toAccount, double amount, String currency);  
          
}  


第二步,实现这个接口,并实现里面的方法,方便后面看效果,代码如下:



Java代码 
1.package com.mybank.xfire.example;     
2.    
3.import java.text.NumberFormat;     
4.import java.text.DecimalFormat;     
5.    
6./** XFire WebServices sample implementation .    
7.*/    
8.public  BankingService implements IBankingService {     
9.         
10.      
11.     public BankingService(){         
12.     }     
13.         
14.       
15.     public String transferFunds(     
16.         String fromAccount, String toAccount, double amount, String currency){     
17.             
18.         String statusMessage = "";     
19.                           
20.         //Call business objects and other components to get the job done.     
21.         //Then create a status message and return.     
22.         try {     
23.             NumberFormat formatter = new DecimalFormat("###,###,###,###.00");            
24.             statusMessage = "COMPLETED: " + currency + " " + formatter.format(amount)+      
25.             " was successfully transferred from A/C# " + fromAccount + " to A/C# " + toAccount;     
26.         } catch (Exception e){     
27.             statusMessage = "BankingService.transferFunds(): EXCEPTION: " + e.toString();     
28.         }     
29.         return statusMessage;     
30.     }     
31.         
32.}    
package com.mybank.xfire.example;  
 
import java.text.NumberFormat;  
import java.text.DecimalFormat;  
 
/** XFire WebServices sample implementation .  
*/ 
public  BankingService implements IBankingService {  
      
   
     public BankingService(){      
     }  
      
    
     public String transferFunds(  
         String fromAccount, String toAccount, double amount, String currency){  
          
         String statusMessage = "";  
                        
         //Call business objects and other components to get the job done.  
         //Then create a status message and return.  
         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;  
     }  
      
}   



第三步,修改web.xml,加入关于xfire的相关配置,代码如下:



Xml代码 
1.<servlet>   
2.         <servlet-name>XFireServlet</servlet-name>   
3.         <display-name>XFire Servlet</display-name>   
4.         <servlet->org.codehaus.xfire.transport.http.XfireConfigurableServlet   
5.          </servlet->   
6.     </servlet>   
7. 
8.     <servlet-mapping>   
9.         <servlet-name>XFireServlet</servlet-name>   
10.         <url-pattern>/servlet/XFireServlet/*</url-pattern>   
11.     </servlet-mapping>   
12.      
13.     <servlet-mapping>   
14.         <servlet-name>XFireServlet</servlet-name>   
15.         <url-pattern>/services/*</url-pattern>   
16.     </servlet-mapping>  
<servlet>
         <servlet-name>XFireServlet</servlet-name>
         <display-name>XFire Servlet</display-name>
         <servlet->org.codehaus.xfire.transport.http.XfireConfigurableServlet
          </servlet->
     </servlet>

     <servlet-mapping>
         <servlet-name>XFireServlet</servlet-name>
         <url-pattern>/servlet/XFireServlet/*</url-pattern>
     </servlet-mapping>
   
     <servlet-mapping>
         <servlet-name>XFireServlet</servlet-name>
         <url-pattern>/services/*</url-pattern>
     </servlet-mapping> 



第四步,在web-inf文件夹新建xfire文件夹,在xfire文件夹下,新建services.xml,这个xml能规范你的接口的详细信息,是否公开,作用域等等,实际开发中,配置可能会相当复杂,具体详解请大家去参考官方文档,这里我们弄简单的,代码如下:



Xml代码 
1.<beans xmlns="http://xfire.codehaus.org/config/1.0">   
2.   <service>   
3.     <name>Banking</name>   
4.     <namespace>mybank</namespace>   
5.     <service>com.mybank.xfire.example.IBankingService</service>   
6.     <implementation>com.mybank.xfire.example.BankingService</implementation>   
7.   </service>    
8.</beans>  
<beans xmlns="http://xfire.codehaus.org/config/1.0">
   <service>
     <name>Banking</name>
     <namespace>mybank</namespace>
     <service>com.mybank.xfire.example.IBankingService</service>
     <implementation>com.mybank.xfire.example.BankingService</implementation>
   </service> 
</beans> 



第五步,当然就是对外,发布我们这个webservice了,发布后它将成为一个wsdl供外部调用,这里我贴一下lib下所需要的jar文件:

• activation-1.0.2.jar

• commons-codec-1.3.jar

• commons-httpclient-3.0.jar

• commons-logging-1.0.4.jar

• jaxen-1.1-beta-8.jar

• jdom-1.0.jar

• log4j-1.2.x.jar

• mail-1.3.3_01.jar

• spring-1.2.x.jar

• stax-api-1.0.jar

• wsdl4j-1.5.2.jar

• wstx-asl-2.9.jar

• xbean-2.1.0.jar

• xbean-spring-2.2.jar

• xfire-all-1.0.jar

• XmlSchema-1.0.jar



服务器启动后,我们在地址栏键入,http://localhost:8080/ws_xfire/services/Banking?wsdl,浏览器页面出现一堆xml,且可展开,说明发布成功;假使报错,请根据错误以及以上步骤,检查改正。



第六步,对外接口发布之后,我们模拟在本地客户端去调用它发布的方法,以此完结这篇文章。我们来实现调用的方法,代码如下:



Java代码 
1./* Call the Web service  
2.     *  
3.     */   
4.     public String callWebService(   
5.         String fromAccount, String toAccount, double amount, String currency)   
6.         throws MalformedURLException, Exception {   
7.          
8.         //Create a metadata of the service        
9.         Service serviceModel = new ObjectServiceFactory().create(IBankingService.);          
10.         log.debug("callSoapServiceLocal(): got service model." );   
11.     
12.         //Create a proxy for the deployed service   
13.         XFire xfire = XFireFactory.newInstance().getXFire();   
14.         XFireProxyFactory factory = new XFireProxyFactory(xfire);        
15.      
16.         String serviceUrl = "http://localhost:8080/websvc/services/Banking";   
17.          
18.         IBankingService client = null;   
19.         try {   
20.             client = (IBankingService) factory.create(serviceModel, serviceUrl);   
21.         } catch (MalformedURLException e) {   
22.             log.error("WsClient.callWebService(): EXCEPTION: " + e.toString());   
23.         }      
24.                 
25.         //Invoke the service   
26.         String serviceResponse = "";   
27.         try {   
28.             serviceResponse = client.transferFunds(fromAccount, toAccount, amount, currency);   
29.        } catch (Exception e){   
30.             log.error("WsClient.callWebService(): EXCEPTION: " + e.toString());                   
31.             serviceResponse = e.toString();   
32.         }          
33.         log.debug("WsClient.callWebService(): status=" + serviceResponse);                
34. 
35.         //Return the response   
36.         return serviceResponse;   
37.     }  
/* Call the Web service
     *
     */
     public String callWebService(
         String fromAccount, String toAccount, double amount, String currency)
         throws MalformedURLException, Exception {
       
         //Create a metadata of the service     
         Service serviceModel = new ObjectServiceFactory().create(IBankingService.);       
         log.debug("callSoapServiceLocal(): got service model." );
  
         //Create a proxy for the deployed service
         XFire xfire = XFireFactory.newInstance().getXFire();
         XFireProxyFactory factory = new XFireProxyFactory(xfire);     
   
         String serviceUrl = "http://localhost:8080/websvc/services/Banking";
       
         IBankingService client = null;
         try {
             client = (IBankingService) factory.create(serviceModel, serviceUrl);
         } catch (MalformedURLException e) {
             log.error("WsClient.callWebService(): EXCEPTION: " + e.toString());
         }   
              
         //Invoke the service
         String serviceResponse = "";
         try {
             serviceResponse = client.transferFunds(fromAccount, toAccount, amount, currency);
        } catch (Exception e){
             log.error("WsClient.callWebService(): EXCEPTION: " + e.toString());                
             serviceResponse = e.toString();
         }       
         log.debug("WsClient.callWebService(): status=" + serviceResponse);             

         //Return the response
         return serviceResponse;
     } 



当然,这个方法可以放在你的servlet的doGet()/doPost()里面,也能放到你的main()函数里面,反正都是测试看效果的,我这里因为是个web项目,所以我配置了一个servlet,请求如下,http://localhost:8080/ws_xfire/ws。为了尝试不同的输入,你可以试试另外一种,完整的输入方式,http://localhost:8080/ws_xfire/ws??from=11-2345&to=77-9876&amt=250.00&cur=EUR.



最后我们总结下,它的开发流程:





基本的Web Services开发步骤清单

这个清单总结了将一个Java方法发布为Web Service所必须的步骤:

1、 检查Java类的方法和默认构造函数确保为public

2、 增加XFire servlet相关条目到web.xml中

3、 创建services.xml,把它放到WEB-INF/es/META-INF/xfire目录下

4、 增加XFire和第三方包到你的Web应用的WEB-INF/lib文件夹中

这就是所有需要的步骤,是的,没那么容易也没那么的难。
分享到:
评论

相关推荐

    java使用XFire调用webService接口

    "Java 使用 XFire 调用 webService 接口" ...我们了解了服务端和客户端的开发步骤,并了解了使用 XFire 调用 webService 接口的优点。通过本文,我们可以更好地理解和应用 XFire 框架,提高 Web 服务的开发和集成效率。

    Xfire调用webservice无法传递参数问题

    标题“Xfire调用WebService无法传递参数问题”暗示了开发者在尝试使用Xfire框架时遇到了参数无法正常传递到Web服务的情况。这可能涉及到多个方面,如编码问题、序列化错误、类型不匹配或者配置不正确等。以下是一些...

    Java使用XFire调用WebService接口

    这篇博客“Java使用XFire调用WebService接口”显然是讨论如何利用XFire这个开源框架来与Web服务交互。 XFire是Apache CXF项目的前身,它提供了一种简单的方式来创建和消费SOAP Web服务。XFire的强项在于其轻量级和...

    xfire调用webservice

    xfire调用webservice xfire是一款基于Java的开源WebService框架,它提供了一个简单、灵活和高效的方式来开发和部署WebService。xfire可以与多种类型的WebService结合使用,如SOAP、REST、XML-RPC等。xfire还提供了...

    Xfire客户端调用webservice jar包

    在这个场景下,"Xfire客户端调用webservice jar包"是指Xfire客户端为了实现某些功能,如获取服务器数据或更新信息,需要调用Web服务的接口。这些接口通常以Java的jar包形式提供,方便开发者集成到他们的应用中。 ...

    xFire发布和调用WebService所用包少

    这个自己写的xFire发布WebService,包含发布和调用,可以用在企业中,而且所用的jar也比较少,不会出现很多jar的问题,一共才9个jar,[commons-codec-1.3.jar,commons-httpclient-3.0.jar,commons-logging-1.0.4.jar,...

    Java使用XFire调用WebService接口.docx编程资料

    ### Java使用XFire调用WebService接口 #### 一、引言 随着互联网技术的发展,不同系统之间的通信变得越来越重要。WebService作为一种重要的分布式计算技术,在跨平台、跨语言的服务交互方面发挥着重要作用。本文将...

    Xfire调用webservice无法接收到参数问题解决

    标题"Xfire调用webservice无法接收到参数问题解决"指出的核心问题是:当使用Xfire作为客户端调用Web服务时,服务端无法正确接收到传递的参数。这可能是由于多种原因引起的,如: 1. **XML序列化与反序列化问题**:...

    spring+xfire( 编写webservice完整配置+案例)

    在开始之前,确保你的开发环境中已经包含了XFire的库。你可以通过Maven或Gradle将其添加到项目的依赖中。然后,你需要在Spring配置文件中声明XFire的相关bean,例如`XFireConfigurer`和`XFireServiceExporter`,...

    springboot动态调用webservice接口

    最近项目中遇到需要去掉老系统的webservice服务中的insert方法,找了很久,发现这样最简单,实测有效!!!

    java xfire调用webservice

    Java XFire调用WebService是一种在Java应用程序中与远程服务交互的方式。XFire是Apache CXF项目的前身,它是一个用于构建和开发Web服务的框架。在本文中,我们将深入探讨如何使用Java XFire来调用本地及远程的...

    java用XFire开发调用webService例子知识.pdf

    在Java开发中,使用XFire框架可以轻松地创建和调用Web服务。XFire是由codeHaus组织提供的一个开源框架,它有效地连接了POJO(Plain Old Java Object)与SOA(Service-Oriented Architecture)之间的桥梁。其主要优势...

    xfire实现webservice实例

    XFire是Apache CXF项目的前身,它提供了一个轻量级、高性能的框架,用于创建和调用Web服务。XFire通过简化编程模型和强大的注解支持,使得开发者能够快速地将Java接口转换为符合SOAP标准的Web服务。 二、Web服务...

    java 调用webservice使用HttpClient和XFire两种方式

    在Java开发中,有时我们需要与外部服务进行交互,如发送短信、获取数据等,这时就会用到Web Service。本文将详细介绍如何使用...在处理短信接口这类服务时,理解并熟练掌握这两种工具,能有效提高开发效率和代码质量。

    使用xfire开发webservice的客户端需要的完整jar包

    本篇将深入探讨如何使用Xfire开发Web服务的客户端,并提供所需的关键jar包。 一、Xfire简介 Xfire是一个基于Apache CXF前身的轻量级框架,它提供了快速、简单地创建和部署Web服务的能力。Xfire支持SOAP、RESTful和...

    WebService之XFire开发文档和代码

    在“WebService之XFire开发文档和代码”压缩包中,包含了详细的开发文档,帮助开发者了解如何使用XFire创建、部署和测试WebService。同时,还提供了一些代码示例,可以帮助开发者快速上手实践。通过学习这些文档和...

    Xfire 开发webservice与客户端调用教程与实例

    相比Axis,Xfire的使用更加直观,使得开发者能更快地上手并进行Web服务的开发和调用。本教程将深入探讨Xfire如何实现Web服务的创建、部署以及客户端调用,同时提供实例代码供学习参考。 **1. Xfire简介** Xfire是...

    webservice xfire 客户端调用实现

    本篇文章将深入探讨如何使用XFire客户端调用Web服务,以及对象传递在Web服务开发中的应用。 首先,理解Web服务的基本概念至关重要。Web服务采用标准的协议如SOAP(Simple Object Access Protocol)进行通信,XML...

    用XFire开发WebService+Spring注解

    【标题】"用XFire开发WebService+Spring注解"涉及的主要知识点是利用XFire框架创建Web服务,并结合Spring框架的注解进行服务的管理和集成。XFire是一个强大的Java Web Service实现,它允许开发者轻松地创建和消费...

Global site tag (gtag.js) - Google Analytics