您的位置:首页 > 其它

9.5 远程服务调用框架-远程服务调用协议-RPC基本协议配置

2010-03-20 08:28 711 查看
远程调用框架提供了几种协议来实现远程调用功能:jgroup,jms,mina,webservice(针对apache cxf webservice框架)。本节专门介绍这几种协议的使用方法。在介绍每种协议之前先介绍aop框架的rpc协议基本配置。

1.1.1 RPC基本协议配置

Aop框架的RPC基本协议配置在
/bbossaop/resources/org/frameworkset/spi/manager-rpc-service.xml文件中,并且通过这个文件导入通讯协议配置文件。manager-rpc-service.xml文件在aop框架的主文件
manager-provider.xml中导入:
<managerimport file="org/frameworkset/spi/manager-rpc-service.xml" />

manager-rpc-service.xml文件的内容说明如下:

1.1.1.1 远程调用处理服务组件

<property name="rpc.server_object" singlable="true"
class="org.frameworkset.spi.remote.DefaultRemoteHandler"/>

1.1.1.2 公用的服务请求处理类,处理所有协议的服务器端请求

<property name="rpc.request_handler" singlable="true"
class="org.frameworkset.spi.remote.RPCRequestHandler">
<construction>
<property name="serverobject"
refid="attr:rpc.server_object" />
</construction>
</property>

1.1.1.3 restful风格地址转换器 配置

<property name="rpc.restful.convertor" singlable="true"
class="org.frameworkset.spi.serviceid.RestfulServiceConvertorImplTest"/>

1.1.1.4 默认通讯协议

<property name="rpc.default.protocol"
value="jms"/>
一个完整的远程组件访问地址的实例如下:
(protocol::ip:port)/serviceid
如果应用程序没有指定protocol头,例如:
ip:port/serviceid
将使用rpc.default.protocol指定的协议

1.1.1.5 RPC服务启动模式

RPC协议服务启动模式配置
auto: 内嵌模式启动,框架将启动rpc.startup.protocols配置的协议
相关的服务,比如mina,jgroup
mannual:手动模式,配置成这种模式的话,需要应用显示地调用相关启动方法来启动服务。

<property name="rpc.startup.mode"
value="auto"/>
这个配置【rpc.startup.mode】控制方法行为:
org.frameworkset.spi.remote.RPCHelper.startServers();
如果rpc.startup.mode的值为auto,那么运行方法startServers()将启动,rpc.startup.protocols配置的RPC协议;为mannual时startServers()方法将不执行任何操作。
用户可以执行另外一个方法:
org.frameworkset.spi.remote.RPCHelper.startRPCServices();这个方法不受rpc.startup.mode属性的控制,将直接启动rpc.startup.protocols中配置的协议。

1.1.1.6 默认启动协议配置

rpc服务运行时需要启动的服务协议配置,多个协议用,号分隔
mina:启动mina
jgroup:表示启动jgroup
可以是mina、 jgroup、 jms中的任一种组合,同时启动多个服务时,用【,】号分隔。
Webservice服务不需要启动,因为其和应用服务器中的应用一起启动,通过在web应用的web.xml文件中配置以下servlet来发布和启动webservice rpc服务:
org.apache.cxf.transport.servlet. RPCCXFServlet
<property name="rpc.startup.protocols"
value="jms"/>

用户可以执行下述两个方法来启动rpc.startup.protocols中配置的协议:
org.frameworkset.spi.remote.RPCHelper.startServers();这个方法受rpc.startup.mode配置的启动模式的控制,只有auto时才生效。
org.frameworkset.spi.remote.RPCHelper.startRPCServices();

RPCHelper中提供了单独启动每个rpc协议的方法:
启动jgroup协议org.frameworkset.spi.remote.RPCHelper.startJGroupServer()
启动jms协议
org.frameworkset.spi.remote.RPCHelper.startJMSServer()
启动mina协议
org.frameworkset.spi.remote.RPCHelper.startMinaServer()

1.1.1.7 等待请求响应超时时间

请求响应超时时间,单位为秒,默认为60秒
<property name="rpc.request.timeout"
value="60"/>
如果请求发出60秒后没有接受到响应,那么rpc框架将抛出请求超时异常。

1.1.1.8 配置多播地址范围

<property name="rpc.all.servers" value="127.0.0.1:12347;127.0.0.1:12346"/>
多播静态地址列表配置,用于客服端广播远程调用时的请求范围,当客服端执行服务 (protocol::all)/serviceid调用时,请求将被分别发送到rpc.all.servers 中配置的服务器地址上去,例如:
server 127.0.0.1:12346和server 127.0.0.1:12347
发送过程是异步方式发送。rpc.all.servers的配置只适用于mina,jms,webservice协议,jgroup协议的多播地址在jgroup的协议配置文件中单独管理(udp协议根据组播地址来决定动态地址列表,tcp协议通过其自身配置的静态地址列表来决定)。不同的协议的地址格式不同,例如(这里只举例说明,含义在具体协议中再说明):
Ø Mina组播地址配置
<property name="rpc.all.servers" value="127.0.0.1:12347;127.0.0.1:12346"/>
Ø jms的组播地址配置
<property name="rpc.all.servers" value="server_uuid1;server_uuid2"/>

Ø webservice的组播地址配置

<property name="rpc.all.servers" value="http://ip:port/context/cxfservices;http://ip1:port/context/cxfservices"/>

1.1.1.9 远程服务调用请求和响应模式

客服端远程服务发送请求模式采用异步发送-同步等待处理结果的模式
服务器端处理模式基于rpc协议的处理模式,
jgroup(异步事件处理模式),
jms(异步事件处理模式),
mina(nio模式),
cxf webservice(高效的异步处理模式)

1.1.1.10 安全管理服务配置

system.securityManager提供aop框架的安全管理组件,提供了以下功能
认证
鉴权
加/解密
<property name="system.securityManager" singlable="true" class="org.frameworkset.spi.security.SecurityManagerImpl">
<construction>
<property name="securityconfig"
refid="attr:rpc.security" />
</construction>
</property>

1.1.1.11 认证、鉴权、加/解密插件配置

Aop框架提供了以下插件:
org.frameworkset.spi.remote.security.LoginModule
org.frameworkset.spi.remote.security.AuthorityModule
org.frameworkset.spi.security.EncryptModule
分别实现认证、鉴权、加/解密功能。系统中提供了相应的简单实现:
org.frameworkset.spi.security.SimpleLoginModule
org.frameworkset.spi.security.SimpleAuthorityModule
org.frameworkset.spi.security.SimpleEncryptModule

具体的描述可以参考【1.9.4安全管理】中的介绍。
<property name="rpc.security" >
<map>
<property name="rpc.login.module" enable="true" class="org.frameworkset.spi.security.SimpleLoginModule"/>
<property name="rpc.authority.module" enable="true" class="org.frameworkset.spi.security.SimpleAuthorityModule"/>
<property name="data.encrypt.module" enable="true" class="org.frameworkset.spi.security.SimpleEncryptModule"/>
</map>
</property>

1.1.1.12 jgroups集群协议配置

Ø 集群名称配置-cluster_name
<property name="cluster_name" value="Cluster"/>
Ø 集群通讯协议配置
<property name="cluster_protocol" value="tcp"/>
Ø 集群协议配置文件配置
<property name="cluster_protocol.tcp.configfile" value="etc/META-INF/replSync-service-aop-tcp.xml"/>
<property name="cluster_protocol.udp.configfile" value="etc/META-INF/replSync-service-aop.xml"/>
详情参考【1.9.5.2 JGroup协议】介绍。

1.1.1.13 webservice协议配置

<managerimport file="org/frameworkset/spi/manager-rpc-webservices.xml" />

1.1.1.14 导入jms服务配置

<managerimport file="org/frameworkset/spi/manager-rpc-jms.xml" />

1.1.1.15 导入mina服务配置

<managerimport file="org/frameworkset/spi/manager-rpc-mina.xml" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: