`

Xfire客户端调用

    博客分类:
  • XML
阅读更多

使用XFire开发Web Service客户端分为如下两大类:
一、服务提供者告诉你interface,你可以使用如下三种方式来开发:
YourService即是服务提供者告诉给你的一个interface(当然,也可以根据WSDL的定义,自己定义一个同样的interface)。
1,简单的方式

Service serviceModel  =   new  ObjectServiceFactory().create(YourService. class );
YourService service 
=  (YourService)
    
new  XFireProxyFactory().create(serviceModel,  " http://your/remote/url " );

2,JSR 181注释的方式

Service serviceModel  =   new  AnnotationServiceFactory().create(YourService. class );
YourService client 
=  (YourService)
    
new  XFireProxyFactory().create(serviceModel,  " http://your/remote/url " );

3,混合方式

Service serviceModel  =
  
new  AnnotationServiceFactory(
   
new  Jsr181WebAnnotations(),
   XFireFactory.newInstance().getXFire().getTransportManager(),
   
new  AegisBindingProvider( new  JaxbTypeRegistry())).create(YourService. class );


二,通过WSDL创建一个动态的客户端,如下:

package  test;

import  java.net.MalformedURLException;
import  java.net.URL;

import  org.codehaus.xfire.client.Client;

public   class  DynamicClientTest  {
    
public   static   void  main(String[] args)  throws  MalformedURLException,
            Exception 
{
        Client client 
=   new  Client( new  URL(
                
" http://localhost:8080/xfiretest/services/TestService?wsdl " ));
        Object[] results 
=  client
                .invoke(
" sayHello " new  Object[]  " Firends "  } );
        System.out.println(results[
0 ]);

    }

}


三,使用ANT工具或命令行通过WSDL生成一个客户端:
1,使用ANT生成客户端,ANT脚本如下:

<? xml version = " 1.0 " ?>
< project name = " wsgen "   default = " wsgen "  basedir = " . " >
    
< path id = " classpathId " >
        
< fileset dir = " ./WebRoot/WEB-INF/lib " >
            
< include name = " *.jar "   />
        
</ fileset >
    
</ path >
    
< taskdef classpathref = " classpathId "  name = " wsgen "  classname = " org.codehaus.xfire.gen.WsGenTask " >
    
</ taskdef >
    
< target name = " wsgen "  description = " generate client " >
        
< wsgen outputDirectory = " ./src/ "  wsdl = " abc.wsdl "  binding = " xmlbeans "   package = "com.abc.p "  overwrite = " true "   />
    
</ target >
</ project >

请注意,脚本中有一个参数binding,可以指定如下两种不同的方式:
(1)jaxb(Java Architecture for XML Binding,https://jaxb.dev.java.net/ ):使用此种方式时,会自动生成更多的Request和Resopnse类。
(2)xmlbeans
调用方式如下:

AbcServiceClient client  =   new  AbcServiceClient();
String url 
=   " http://localhost:8080/xfireTest/services/TestService " ;
String result 
=  client.getAbcPort(url).sayHello( " Robin " );


2,使用命令生成客户端的命令如下:

gpath = xfire - all - 1.2 - SNAPSHOT.jar:ant - 1.6 . 5 .jar:jaxb - api - 2 .0EA3.jar:stax - api - 1.0 . 1 .jar:jdom - 1.0 .jar:jaxb - impl - 2 .0EA3.jar\
:jaxb
- xjc - 2.0 - ea3.jar:wstx - asl - 2.9 . 3 .jar:commons - logging - 1.0 . 4 .jar:activation - 1.1 .jar:wsdl4j - 1.5 . 2 .jar:XmlSchema - 1.0 . 3 .jar:xfire - jsr181 - api - 1.0 - M1.jar;

java 
- cp $gpath org.codehaus.xfire.gen.WsGen  - wsdl http: // localhost:8080/xfire/services/Bookservice?wsdl -o . -p pl.tomeks.client -overwrite true

其结果与ANT生成的一样。


四,参考资源:
1,XFire 1.2.6手册(http://xfire.codehaus.org/User%27s+Guide )
2,http://xfire.codehaus.org/Client+API
3,http://xfire.codehaus.org/Dynamic+Client

 

转自:http://www.blogjava.net/fastzch/archive/2008/08/28/225439.html

 

 

 

备注:

如果是采取传递对象的形式,则客户端用到的bean不仅内容要和服务器上的相同并且包名都必须是一样的!

常遇到的异常解决办法

1.java.io.FileNotFoundException: class path resource [org/codehaus/xfire/spring/xfire.xml] cannot be opened because it does not exist
没有找到org/codehaus/xfire/spring/xfire.xml。查看你的xfire所用的jar中是否包括了org/codehaus/xfire/spring/xfire.xml文件 
2.java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/xfire-servlet.xml]
查看项目的webroot下面是否有/WEB-INF/xfire-servlet.xml文件 
3.org.codehaus.xfire.XFireRuntimeException: Cannot create mapping for java.util.List, unspecified component type for return type of method findAllUser in interface com.devil13th.service.IUserService
发布的接口一定是有List或collection等返回类型,而且没有配置这些返回类型的.xml文件或是没有配置泛型的类型。查看【服务接口相关的xml】部分中的教程内容

 

plus:xfire client http authentic

 

        Client basicAuth = ((XFireProxy) Proxy.getInvocationHandler(service))
                .getClient();
        basicAuth.setProperty(Channel.USERNAME, "user");
        basicAuth.setProperty(Channel.PASSWORD, "pwd");

 

 

 

 

 

 

分享到:
评论

相关推荐

    Xfire客户端调用webservice jar包

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

    webservice xfire 客户端调用实现

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

    cxf_axis_xfire客户端调用的几种方法[收集].pdf

    在本文中,我们将重点关注CXF客户端调用Web服务的方法,特别是处理Map类型参数的问题。 首先,CXF客户端调用Web服务时,通常会通过服务接口类来实现。在给出的示例中,`TestService`接口定义了几个服务方法,如`...

    cxf_axis_xfire客户端调用的几种方法.docx

    【CXF、AXIS2、XFire 客户端调用方法详解】 在Web服务开发中,CXF、AXIS2和XFire是常见的Java API,用于构建和消费SOAP(简单对象访问协议)服务。这些框架提供了丰富的功能,使得开发者能够方便地创建和调用Web...

    xfire客户端生成

    ### XFire客户端调用 在生成Java客户端代码后,调用Web服务的流程通常如下: 1. **初始化客户端**:创建服务接口的代理类实例,通常需要提供Web服务的URL。 2. **设置认证和配置**:如果Web服务需要身份验证或...

    XFire客户端流程分析

    本文主要分析XFire客户端调用服务的基本流程。 1. 创建服务模型 在调用服务前,首先需要创建服务模型,它包含服务接口、操作信息和Binding信息等关键数据。服务模型由服务工厂ServiceFactory创建,用户需提供服务...

    xfire客户端应该具有的JAR

    7. **API实现**:如果Xfire客户端提供了API供其他程序调用,那么这些API的实现也会被封装在JAR文件中。 8. **加密和安全**:为了保护用户的隐私和安全,Xfire客户端可能使用了加密算法,这些算法的实现也可能包含在...

    Xfire的client.zip_Xfire客户端代码_webservice

    在本案例中,"Xfire的client.zip"是一个包含了Xfire客户端代码的压缩包,主要用于调用Web服务。 Xfire客户端代码是实现与Xfire服务器通信的代码库,它可能包含了多种语言的实现,如Java、C#或Python等。这些代码...

    xfire客户端eclipse插件

    XFire客户端Eclipse插件是开发人员在使用Eclipse IDE时用于集成XFire服务框架的工具。XFire,现在已被Apache CXF所吸收,是一款强大的Java Web服务框架,旨在简化创建和部署Web服务的过程。这款插件使得在Eclipse...

    spring xfire 客户端实例

    本文将详细介绍Spring XFire客户端的实例应用,以及如何利用它来实现Web服务的调用。 首先,我们需要理解Spring XFire的核心概念。Spring XFire是Spring框架的一个扩展,它整合了XFire(现已被Apache CXF合并)的...

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

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

    xfire客户端包含所需要的jar

    描述中提到的“xfire webserivce客户端 jar”是指XFire客户端部分的jar文件,它主要用于调用和消费Web服务。这些jar文件包含了客户端所需的API,使得开发者可以轻松地创建Web服务客户端,通过SOAP消息与远程服务进行...

    xfire客户端jar

    标题 "xfire客户端jar" 指的是XFire这一款基于Java开发的多玩家游戏平台的客户端组件。XFire是一款曾经流行的在线游戏社区软件,它允许玩家与朋友一起玩游戏、记录游戏时间、查看成就,以及参与游戏内的社交活动。在...

    调用xfire接口的客户端实现

    同时,下载XFire的客户端库,包括必要的jar包,这些在提供的压缩文件"xfire客户端调用及依赖包"中应该能找到。 2. **添加依赖**:将下载的jar包添加到你的项目类路径中,这些jar包通常包括XFire的核心库、XML处理库...

    使用Xfire构建JAVA的webService全过程(从服务端到客户端)

    1. **生成客户端代理类**:使用Xfire的工具(如`xfire-gen`)或在线工具,根据服务的WSDL(Web Service Description Language)文件生成客户端代理类。 2. **编写客户端代码**:实例化代理类并调用服务方法。 ```...

    xfire客户端jar包

    在描述中提到的"Demo样板",通常是一个预配置的示例程序,用于演示如何使用xfire客户端来连接和调用Web服务。然而,由于每个Web服务都有其特定的WSDL(Web服务描述语言)文件,定义了服务的接口和操作,因此这个Demo...

    webservice---xfire和spring整合

    6. **调用服务**:客户端可以通过SOAP请求或RESTful方式调用这些服务,实现跨系统的通信。 在实际应用中,`Demo`可能是一个包含整合示例代码的压缩包。解压后,你可以查看`Demo`中的代码文件,了解如何在Spring环境...

    java使用XFire调用webService接口

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

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

    本教程将深入探讨Xfire如何实现Web服务的创建、部署以及客户端调用,同时提供实例代码供学习参考。 **1. Xfire简介** Xfire是基于Java的Web服务框架,它提供了全面的WS-I(Web Services Interoperability)兼容性...

    xfire根据WSDL生成客户端代码

    4. **创建服务客户端**:在你的应用中,实例化由XFire生成的客户端代理类,然后调用其方法来执行Web服务操作。例如: ```java ServiceClient client = new ServiceClient(); client.setEndpoint(...

Global site tag (gtag.js) - Google Analytics