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框架时遇到了参数无法正常传递到Web服务的情况。这可能涉及到多个方面,如编码问题、序列化错误、类型不匹配或者配置不正确等。以下是一些...
XFireClient是一款由个人开发的客户端程序,作为一个小型的DEMO,它展示了如何构建一个基本的客户端应用。在深入探讨XFireClient的知识点之前,我们首先理解一下什么是客户端。客户端是用户与服务器交互的软件,通常...
标题中的“xfire_client_jar”指的是XFire的客户端JAR文件,这是一款早期流行的Java Web服务框架,用于创建和消费Web服务。XFire(后被Apache CXF项目吸收)提供了一个简单、高效的API,使得开发者能够快速地构建...
在描述中提到的"Demo样板",通常是一个预配置的示例程序,用于演示如何使用xfire客户端来连接和调用Web服务。然而,由于每个Web服务都有其特定的WSDL(Web服务描述语言)文件,定义了服务的接口和操作,因此这个Demo...
总结,XFire客户端生成是Java开发Web服务客户端的一种高效方式,通过自动化的代码生成,开发者可以快速地接入并调用Web服务,大大减少了手动编写客户端代码的工作量。在实际开发中,结合Spring等框架,可以构建出...
在本案例中,"Xfire的client.zip"是一个包含了Xfire客户端代码的压缩包,主要用于调用Web服务。 Xfire客户端代码是实现与Xfire服务器通信的代码库,它可能包含了多种语言的实现,如Java、C#或Python等。这些代码...
标题中的“xfire+spring+webservice+client”是一个关于集成XFire、Spring框架和Web服务客户端的专题,这涉及到Java开发中的一项重要技术——Web服务的消费与提供。在这个主题下,我们将深入探讨以下几个核心知识点...
在Java中,使用XFire调用Web服务的基本步骤如下: 1. 创建客户端代理:XFire使用WSDL文档生成客户端代理类。这个代理类提供了服务方法的直接访问,就像调用本地方法一样。可以使用XFire的wsdl2java工具自动生成这些...
7. **xfire-aegis-1.2.6.jar**:这是XFire的一个数据绑定模块,使用Aegis Databinding技术将Java对象与XML消息进行映射,简化了客户端和服务端之间的数据交换。 8. **stax-utils-20040917.jar**:这是一个STAX...
本文将深入探讨XFire Java Web Service客户端的使用和相关知识点。 一、XFire简介 XFire是Apache CXF项目的一个前身,它是一款高效的、开源的Java Web Service实现。XFire的目标是提供一个轻量级、快速且易于使用...
本教程将深入讲解如何使用XFire创建和消费Java Web服务。 一、Web服务基础 Web服务是基于开放标准的,允许应用程序之间进行通信。主要协议包括SOAP、WSDL(Web Services Description Language)和UDDI(Universal ...
本教程将深入讲解如何使用XFire在Java环境中实现Web服务接口的调用,包括内部和外部访问。 一、Web服务简介 Web服务是通过SOAP(Simple Object Access Protocol)协议,使用HTTP作为传输层,XML作为数据交换格式的...
此外,为了提供友好的用户界面,Client端可能还会运用到GUI编程,如使用Java的Swing或.NET的Windows Forms框架。 在实际应用中,Xfire接口项目可以广泛应用于游戏社区的搭建,例如开发游戏内的社交功能,让玩家能够...
在IT行业中,Web服务是一种广泛使用的接口调用方式,它允许不同的系统之间通过网络交换数据。其中,Web Service最常用的标准之一是SOAP(Simple Object Access Protocol),它基于XML格式进行通信。Xfire是一款古老...
1. **定义服务接口**:使用Java编程语言定义服务接口,这些接口将代表可供远程调用的方法。 ```java public interface HelloWorldService { String sayHello(String name); } ``` 2. **实现服务接口**:为接口...
Java 使用 XFire 调用 WebService 接口是一个常见的技术场景,特别是在集成不同系统或者构建分布式服务时。XFire 是一个 Java 框架,它允许开发者快速、容易地创建和消费 Web 服务。本篇文章将详细讲解如何在 Java ...
public class XFireClient { public static void main(String[] args) { HelloWorldService service = new HelloWorldServiceProxy("http://localhost:8080/helloworld?wsdl"); String response = service....
1. **获取服务代理**:使用Xfire的Client或ProxyFactory创建服务代理,代理对象就像本地对象一样调用远程服务。 2. **设置服务地址**:指定Web服务的URL,通常包含WSDL文档的地址。 3. **调用服务方法**:通过代理...
1. **Web服务提供者**:通过XFire,Spring可以轻松地将Java方法暴露为Web服务,开发者只需简单地在方法上添加相应的注解,XFire会自动处理服务的发布和调用。 2. **Web服务消费者**:同样,Spring可以通过XFire来...
XFire还提供了一个强大灵活的接口,用于支持JSR-181规范,可以使用注解的方式来定义Web服务的接口。它的客户端和服务器端代码都可以通过XFire自动生成,大大提升了开发效率。 在XFire的配置中,需要特别注意的是...