您的位置:首页 > 理论基础 > 计算机网络

httpInvoker提供远程服务调用总结(二)

2013-04-24 16:30 393 查看
以下实例在只需在客户端部署一个JAR包,JAR中包含共同接口,传送的对象类,对象解析bfo类、包含可外调用信息的配置文件及文件解析类。其中配置文件包含的调用信息包括名称、类型(bean类或静态类)、类名或者Bean名、方法名、参数个数及类型。客户端通过指定配置文件中的名称,传入参数就可以随意调用配置文件中定义好的接口。当然服务器端接收传送过来的类名或者beean名、方法名、参数类型、参数值就可以执行产生结果返回给客户端。客户端获取对象解析并自行处理。

服务器端:

对外服务接口

public interface RideService {

/**
* 多个方法调用时,如果某个方法调用出错,则继续调用其他方法.
*/
int IEC = 0;

/**
* 多个方法调用时,如果某个方法调用出错,则停止调用其他方法.
*/
int IES = 1;

/**
* 客户端远程调用的方法.
* @param service 服务
* @param params 参数
*
* @return 方法返回值
*/
Object invoke(RemoteService service, Object[] params);

/**
* 多个方法调用.
* @param services 每个元素是一个RemoteService.
* @param flag 控制标志
* @return
*/
Object invokeM(List services, int flag);
}

对外服务接口实现RideServiceImpl提供调用服务的执行,并提供返回对象。

客户端

提供给客户端接口,用于远程调用

public interface HttpService {
/**
* 客户端远程调用的方法.
* @param serviceName 服务名(方法名)
* @param params 方法的参数
* @return 方法返回值
*/
RemoteRes invoke(String serviceName, Object[] params);

/**
* 远程调用多个方法.
* @param services multi services names
* @param params each element is a Object[] parameter
* @return list
*/
public List invokeM(String[] services, Object[][] params);
}

提供给客户端接口的实现,包括解析配置文件获取调用信息及发出远程调用请求(如rideService. invokeM(serviceList, RideService.IES))

public
class
HttpServiceImpl implements
HttpService

包含远程调用服务相关信息的配置文件

<remote-services>

<!-- admin -->
<service name="admin_getSessionData" type="0"><!-- a spring bean's method -->
<bean>applicationData</bean>
<method-name>getSession</method-name>
<param-count>1</param-count>
<param-list>
<value>java.lang.String</value>
</param-list>
</service>

<service name="admin_flushAllMenuInfo" type="2"><!-- class's static method -->
<bean>cn.ccb.ride.admin.util.context.ContextFactory</bean>
<method-name>flushAllMenuInfo</method-name>
<param-count>0</param-count>
</service>

</remote-services>

配置文件解析类RemoteServiceConfig

当然以上介绍的是最主要的类,其他接收对象类等,本文暂且不予说明。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐