lichaoyue888 发表于 2017-2-14 12:20:59

WebLogic RMI 编程(六)


应用程序设计的最佳实践

以下部分讨论使用 RMI 和 IIOP 上的 RMI 编程时建议使用的设计模式。


[*]
使用 java.rmi
[*]
使用 PortableRemoteObject
[*]
使用 WebLogic 工作区域
[*]
使用 RMI 超时的准则





使用 java.rmi

BEA 建议 RMI 用户使用 java.rmi。尽管 WebLogic API 包含 weblogic.rmi API,但是已不赞成使用,仅将其作为兼容性 API 提供。为实现兼容性而提供的其他 WebLogic API 还有:


[*]
weblogic.rmi.registry
[*]
weblogic.rmi.server
[*]
weblogic.rmi.extensions





使用 PortableRemoteObject

为保持代码的可移植性,在转换 Home 接口时应始终使用 PortableRemoteObject。例如:


Propshome home = (PropsHome)



PortableRemoteObject.narrow(



ctx.lookup( "Props" ),



PropsHome.class );


为了保证使用 WebLogic 类,请实现 weblogic.rmi.extensions.PortableRemoteObject。



使用 WebLogic 工作区域

Work Context 允许 J2EE 开发人员将属性作为应用程序上下文定义,它隐式跟踪远程请求并使下游组件能够在发出调用的客户端的上下文中工作。Work Context 使开发人员无需将属性包含在远程调用中即可传递它们。Work Context 随每个远程调用而传播,以便所调用的组件能够添加或修改 Work Context 中定义的属性;类似地,发出调用的组件也可以访问 Work Context,以便获取新的或更新的属性。
Work Context 简化了要求将信息传递给远程组件的实现和维护功能的处理过程,例如,诊断监视、应用程序事务以及应用程序负载平衡。Work Context 还是为第三方组件提供信息的一种有用的机制。
Work Conext 可将用户定义的属性传播到 WebLogic Server 支持的所有请求范围,Work Context 可提供给请求范围中存在的所有对象,包括 RMI 调用。有关详细信息,请参阅使用 WebLogic Server 开发应用程序。



使用 RMI 超时的准则

此功能为需要异步调用行为但尚未实现此行为的旧式系统提供了一个解决办法。BEA 建议旧式系统在可能的情况下实现更适合的技术,例如:


[*]
异步 RMI 调用
[*]
JMS 和消息驱动 Bean (MDB)
[*]
HTTP Servlett 应用程序



如果需要为旧式系统使用 RMI 超时,请阅读以下准则:


[*]
只有在同时满足下列三个条件的情况下,才应使用 RMI 超时:

[*]
方法调用是幂等的,或者不带来任何状态更改
[*]
方法调用为非事务型
[*]
调用中未涉及任何 JMS 资源




[*]
当请求出现超时时,没有到另一个群集节点的透明故障转移。RequestTimeOutException 始终传播至调用程序。
[*]
服务器会持续处理已超时的请求。客户端需要在重试调用前检查服务器上请求的状态。
[*]
如果服务器超时,客户端有能力在客户端群集引用中将服务器标记为无法访问。这可在指定的时间内避免将调用定向至加标记的服务器。
页: [1]
查看完整版本: WebLogic RMI 编程(六)