java xfire client_xfire的client的JAVA调用方式

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基础还是要多多去验证的。有空再去验证吧。呵呵。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值