在J2EE 1.3中消除服务定位器实现中的缓存 - 编程入门网
冲突(参见 参考资料中的 J2EE 1.2 和 1.3 规范)。
这意味着两个组件可以指向相同的资源名,而在实际运作当中却被绑定去访问两个不 同的容器资源。可以认为这是 重载资源名。在两个不同的组件中相同的资源名实际上是 映射到两个不同的容器资源。因此,要了解重载名是引用哪个资源,两组件中的一个也必 须了解使用重载名的那个组件,并且知道那个组件是如何被映射到容器名的。 在J2EE 1.3中消除服务定位器实现中的缓存(3)时间:2011-04-02 IBM Bobby Woolf重载名举例 例如,应用程序可以包含两个会话 bean: EmployeeBean:允许用户(公司雇员)访问多个客户的账户及其他有关账户的机密信 息。 CustomerBean: 允许用户(客户)访问他们个人账户。 简单的说,两个 bean 都可以使用资源名 jdbc/AccountDB,这是因为他们都使用客户 账户数据库。管理员为访问数据库会定义一个数据源,称为 jdbc/AccountDS,然后在部 署时期将两个组件中的 jdbc/AccountDB 绑定到 jdbc/AccountDS。 表 3
此时,资源名 jdbc/AccountDB 还没有重载,因为它总是映射到相同的容器资源。资 源名是共享的,因为它被多个组件所使用,但是它没有被重载。 现在,让我们讨论一下已经需要我们来考虑的管理问题。客户可以访问并甚至能改变 在账户数据库中的机密数据,而这些数据应当只能由公司的雇员来更改。业务需求指出, 特定的数据库表应当只能由雇员来操作而不是被顾客操作。为了实施这一点,数据库管理 员创建两个分离的登录,一个是雇员使用的,一个是顾客使用的。顾客登录不能访问存储 机密数据的表,而只有对特定表的只读权限;雇员登录拥有全部的访问权限。通过这种方 式,即使 Java 应用程序有错误发生,允许顾客访问这些表,数据库也会阻止顾客的这种 访问。 为支持这个新的需求,使用这些新的数据库登录,部署者在容器中配置两个分离的数 据源,分别对应两个登录。这两个数据源分别称作: jdbc/AccountEmployeeDS 和 jdbc/AccountCustomerDS。在部署时期,部署者分别对应的绑定资源名: 表 4
应用程序资源名 jdbc/AccountDB 现在已经是重载的名称了。它所引用的资源,雇员 访问的数据源或顾客访问的数据源,要使用哪个数据源取决于是哪个组件在使用资源名。 以这种方式,部署者可以改变应用程序的选项来满足新的需求而不用改变代码,他只 需改变容器配置及改变现有代码的部署。 同样地,这种重载资源映射可以用来使不同组件使用几个不同类型的资源: 不同的数据库,可能包含各自的一套数据,可能在不同的提供商处运行为产品。 不同的 JMS 消息系统,对业务模式来说可能是一个内部的也可能是一个外部的,可能 在不同的提供商处运行为产品。 相同 Web 服务的多次部署,可能提供不同质量的服务。 重载是 J2EE 1.3 应用程序资源名的一种能力,因为他们是组件范围的。J2EE 1.2 的 全局应用程序资源名是没有这种能力的。 在J2EE 1.3中消除服务定位器实现中的缓存(4)时间:2011-04-0 |
||||||||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |