J2EE业务层模式--服务器定位器

问题:

考虑要以一种统一的、透明的方式定位业务组件和业务服务。

J2EE应用系统的客户端需要定位、访问业务层的组件和服务。比如,如果表现层的一个业务代表需要访问业务层的一个会话门面,这个业务代表就首先要执行对这个会话门面的EJBHome的寻址,然后调用home的create方法,或者一个会话门面实例。于此类似,当一个JMS客户端要获得一个JMS Connection连接或者jms Session连接的时候,他首先也要执行JMS对象的寻址,然后再通过这个工厂获得Connection或者session对象。

在J2EE应用系统中,业务层组件比如EJB组件和集成层组件比如JDBC数据源和JMS组件通常都要在一个中央注册表中注册。客户端使用JNDI:JAVA命名和目录接口API来与这个注册表交互,获得一个InitialContext(初始化上下文)对象,该对象中装载着组件的名称/对象绑定信息。而为客户端的实现寻址机制的时候,也要对付好几个问题,分别跟复杂性、代码重复、性能恶化和厂商依赖性有关。

使用JNDI API和InitialContext(初始化上下文)可能相当的复杂,因为这可能要包括重复使用InitialContext对象、寻址操作、强制类型转化操作以及对底层异常和超时的处理操作。应用系统客户端需要从这种负责性中隔离出来。不然,在多种不同的客户端中就会重复JNDI代码,因为所有访问一个有jndi管理的服务/组件的客户端都要执行同样的寻址。创建一个JNDI InitialContext对象、执行EJB home对象的寻址可能是一种代价很高的操作,如果反复执行这样的操作,可能会引起系统的性能恶化。

另一个问题是:InitialContext和JNDI注册表中注册的其他Context工厂都是厂商提供的实现,如果应用系统客户端直接访问以上对象的这些特殊实现,那么就会给应用系统引入厂商的依赖性,是代码难以移植。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值