了解JNDI和ENC架构

时间:2014-03-06 13:59:46

标签: java java-ee jndi

我正在尝试学习Java EE并且我已经阅读了一段时间关于JNDI,但除了互联网上的一些基本示例,并且相同的定义从一个地方复制到另一个地方,我发现很少的信息真正解释了建筑。我需要知道我的理解是否正确,然后我有一些问题:

我的理解:

JNDI

  • JNDI是一个使用服务提供程序实现的API。
  • JNDI有几种实现:LDAP,文件系统,DNS等。此外,市场上的每个应用服务器都带有它自己的实现。例如JBoss带有JBossNS
  • 应用程序服务器使用的实现在属性文件中配置。我想默认每个服务器都使用它自己的JNDI实现。

JNDI ENC

  • ENC是先前提到的以某种方式用于访问本地名称的JNDI的包装器
  • 使用注释和/或xml文件配置ENC
  • 注入机制使用ENC来定位资源并将其注入

我的问题:

  1. 如果我有多个应用服务器,并且我使用应用服务器JNDI实现(来自JBossNS),我是否要配置所有其他服务器以使用该特定服务器的JNDI实现?我基本上对企业架构以及如何在服务器之间找到EJB感兴趣。

  2. 如何配置ENC以注入在另一个应用程序服务器(不同的虚拟机)中找到的远程对象。我是否使用“ejb-link”并使用全局命名空间来访问远程bean?

  3. 与答案相关,示例会很好,最终链接JNDI架构以及查找的方式将会有所帮助。

    谢谢

1 个答案:

答案 0 :(得分:3)

我会尝试回答我自己的问题,也许对某人有用。

首先,与JNDI有关,我的理解是正确的。我找到了一个非常好的链接(我不确定Java EE版本),但是这个详细解释了JNDI如何工作:

http://ejbvn.wordpress.com/category/week-1-enterprise-java-architecture/day-04-using-jndi-for-naming-services-and-components/

第二个问题与ENC有关。我部分正确,但是ENC是JNDI世界中的上下文(在JNDI的上下文定义中定义)。此上下文主要用作别名,无论容器是什么,都能够引用容器/模块/应用程序EJB。因此,无论何时从ENC引用某些内容,您都将被重定向到适当的资源,该资源可以驻留在另一个模块/应用程序/应用程序服务器中。另一个对我有用的链接是下面的链接。它包含几个链接,所以你可以确保全部阅读:

http://www.javacodegeeks.com/2011/08/ejb-programmatic-lookup.html

此致