`
sillycat
  • 浏览: 2551875 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

xfire的client的JAVA调用方式

    博客分类:
  • SOA
阅读更多
xfire的client的JAVA调用方式

平时我们调用xfire都是实现了spring的FactoryBean接口,写了一个工具类,将xfire的client bean配置在spring容器中管理并使用的。但是今天遇到一个特殊的场景。
BPS流程引擎在流程的某一个节点触发一个事件的时候,配置的包名+类名+方法名+参数,估计是直接new出类型,然后invoke某个方法的,所以根本得不到spring的相关配置的依赖。
所以这里需要把这个xfire的client调用修改为直接用java的application去启动的方式,而不是依赖于spring容器。

参考了xfire的文档,其实主要还是用到了xfire的基类,写了一个工具类,需要传递web service服务端的URI和接口的名称,就可以返回我们所要调用的service了。单元测试中调用方式如下:
public void testGetUserFromObjectAndURI() throws ClassNotFoundException {
String interfaceName =                 "com.sillycat.core.webservice.interfaces.UserService";
String url = "http://localhost:8088/easyserver/services/UserService";
UserService userService = (UserService) XFireClient.getClient    (interfaceName, url);
IUser iuser = userService.get(null);
System.out.println("fromObjectAndURI: " + iuser.getName());
System.out.println("fromObjectAndURI: " + iuser.getEmail());
}
需要提供了接口名称(包名写全),同时服务端地址;就可以返回UserService的服务了,直接调用其get方法。

工具类代码如下,主要参考xfire的文档写的,这里只是记录一下,备用:
package com.sillycat.core.commons.plugins.webservice.xfire;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
public class XFireClient {
private static final Log log = LogFactory.getLog(XFireClient.class);
private static ObjectServiceFactory objectServiceFactory = new ObjectServiceFactory();
private static XFireProxyFactory xfireProxyFactory = new XFireProxyFactory();
public static Object getClient(String interfaceName, String url) {
   Service serviceModel = null;
   try {
    serviceModel = objectServiceFactory.create(Class
      .forName(interfaceName));
   } catch (ClassNotFoundException e) {
    log.error(e.getMessage(), e);
    return null;
   }
   String serviceURL = url;
   Object service = null;
   try {
    service = xfireProxyFactory.create(serviceModel, serviceURL);
   } catch (Exception e) {
    log.error(e.getMessage(), e);
    throw new RuntimeException(e);
   }
   return service;
}
}

至于工具类里面的
private static ObjectServiceFactory objectServiceFactory = new ObjectServiceFactory();
private static XFireProxyFactory xfireProxyFactory = new XFireProxyFactory();
我觉得写成类变量比在方法中new要更节约效率的,但是也不是很确信,呵呵。其实JAVA基础还是要多多去验证的。有空再去验证吧。呵呵。
分享到:
评论

相关推荐

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

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

    XFireClient客户端

    XFireClient是一款由个人开发的客户端程序,作为一个小型的DEMO,它展示了如何构建一个基本的客户端应用。在深入探讨XFireClient的知识点之前,我们首先理解一下什么是客户端。客户端是用户与服务器交互的软件,通常...

    xfire_client_jar

    标题中的“xfire_client_jar”指的是XFire的客户端JAR文件,这是一款早期流行的Java Web服务框架,用于创建和消费Web服务。XFire(后被Apache CXF项目吸收)提供了一个简单、高效的API,使得开发者能够快速地构建...

    xfire客户端jar包

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

    xfire客户端生成

    总结,XFire客户端生成是Java开发Web服务客户端的一种高效方式,通过自动化的代码生成,开发者可以快速地接入并调用Web服务,大大减少了手动编写客户端代码的工作量。在实际开发中,结合Spring等框架,可以构建出...

    Xfire的client.zip_Xfire客户端代码_webservice

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

    xfire+spring+webservice+client

    标题中的“xfire+spring+webservice+client”是一个关于集成XFire、Spring框架和Web服务客户端的专题,这涉及到Java开发中的一项重要技术——Web服务的消费与提供。在这个主题下,我们将深入探讨以下几个核心知识点...

    xfire web service调用代码

    在Java中,使用XFire调用Web服务的基本步骤如下: 1. 创建客户端代理:XFire使用WSDL文档生成客户端代理类。这个代理类提供了服务方法的直接访问,就像调用本地方法一样。可以使用XFire的wsdl2java工具自动生成这些...

    xfire_client

    7. **xfire-aegis-1.2.6.jar**:这是XFire的一个数据绑定模块,使用Aegis Databinding技术将Java对象与XML消息进行映射,简化了客户端和服务端之间的数据交换。 8. **stax-utils-20040917.jar**:这是一个STAX...

    XFire Java Web Service 客户端

    本文将深入探讨XFire Java Web Service客户端的使用和相关知识点。 一、XFire简介 XFire是Apache CXF项目的一个前身,它是一款高效的、开源的Java Web Service实现。XFire的目标是提供一个轻量级、快速且易于使用...

    java webservice基于xfire实例

    本教程将深入讲解如何使用XFire创建和消费Java Web服务。 一、Web服务基础 Web服务是基于开放标准的,允许应用程序之间进行通信。主要协议包括SOAP、WSDL(Web Services Description Language)和UDDI(Universal ...

    实现webServices接口调用demo

    本教程将深入讲解如何使用XFire在Java环境中实现Web服务接口的调用,包括内部和外部访问。 一、Web服务简介 Web服务是通过SOAP(Simple Object Access Protocol)协议,使用HTTP作为传输层,XML作为数据交换格式的...

    xfire接口项目(Server+Client)

    此外,为了提供友好的用户界面,Client端可能还会运用到GUI编程,如使用Java的Swing或.NET的Windows Forms框架。 在实际应用中,Xfire接口项目可以广泛应用于游戏社区的搭建,例如开发游戏内的社交功能,让玩家能够...

    xfire https

    在IT行业中,Web服务是一种广泛使用的接口调用方式,它允许不同的系统之间通过网络交换数据。其中,Web Service最常用的标准之一是SOAP(Simple Object Access Protocol),它基于XML格式进行通信。Xfire是一款古老...

    使用XFire实现SOAP的webservice数据传输源码(java)

    1. **定义服务接口**:使用Java编程语言定义服务接口,这些接口将代表可供远程调用的方法。 ```java public interface HelloWorldService { String sayHello(String name); } ``` 2. **实现服务接口**:为接口...

    Java使用XFire调用WebService接口.docx

    Java 使用 XFire 调用 WebService 接口是一个常见的技术场景,特别是在集成不同系统或者构建分布式服务时。XFire 是一个 Java 框架,它允许开发者快速、容易地创建和消费 Web 服务。本篇文章将详细讲解如何在 Java ...

    java利用 xfire实现 webservices 服务端与客户端

    public class XFireClient { public static void main(String[] args) { HelloWorldService service = new HelloWorldServiceProxy("http://localhost:8080/helloworld?wsdl"); String response = service....

    Xfire开发webservice与javaweb集成实例

    1. **获取服务代理**:使用Xfire的Client或ProxyFactory创建服务代理,代理对象就像本地对象一样调用远程服务。 2. **设置服务地址**:指定Web服务的URL,通常包含WSDL文档的地址。 3. **调用服务方法**:通过代理...

    XFire_lib.jar

    1. **Web服务提供者**:通过XFire,Spring可以轻松地将Java方法暴露为Web服务,开发者只需简单地在方法上添加相应的注解,XFire会自动处理服务的发布和调用。 2. **Web服务消费者**:同样,Spring可以通过XFire来...

    xfire 使用方法

    XFire还提供了一个强大灵活的接口,用于支持JSR-181规范,可以使用注解的方式来定义Web服务的接口。它的客户端和服务器端代码都可以通过XFire自动生成,大大提升了开发效率。 在XFire的配置中,需要特别注意的是...

Global site tag (gtag.js) - Google Analytics