JNDI,Spring和JMX之间的关系

时间:2012-08-15 14:03:42

标签: spring jndi jmx

我想知道JNDI和Spring之间的关系是什么? Spring是JNDI的高级版本吗?两者都用于从字符串名称创建对象。 我们可以说For JNDI是一个提供命名服务的应用服务器吗? 另一方面,对于Spring,我们可能不需要Application服务器,因此可以在Java SE中使用它?

最后我们可以将JMX放在JNDI和Spring之间的这种关系上吗?在低级别有一些共同的逻辑吗?

1 个答案:

答案 0 :(得分:5)

只是为了澄清一些定义:

  • Spring:Spring Framework是一个开源应用程序框架和Inversion of Control容器。
  • JNDI:Java命名和目录接口,一种用于目录服务的Java API,允许Java软件客户端通过名称发现和查找数据和对象。
  • JMX:Java Management Extensions(JMX)是一种Java技术,提供用于管理和监视应用程序,系统对象,设备(例如打印机)和面向服务的网络的工具。

JNDI主要是一组Java接口,用于定义命名系统应如何在Java中工作,以便将各种服务集合抽象为简单的JNDI接口。例如,文件系统,LDAP服务器和DNS服务器都可以作为JNDI服务进行访问。

Enterprise Java(Java EE)广泛使用JNDI将对象存储在公共地址中,其他服务可以通过名称找到它们。 JNDI不需要应用程序服务器,但Java EE应用程序服务器几乎总是需要(并提供)JNDI服务。

Spring不是JNDI实现,并且不需要 JNDI,但确实支持它,这意味着您可以在Spring容器中启动JNDI服务,访问基于JNDI的资源并使用Spring内置的JNDI支持类。

JMX定义了一个关于如何为Java应用程序提供管理接口,检测和运行时“透明性”的标准。 JNDI和JMX之间没有太多重叠,除了JMX远程连接器经常以java远程对象的形式构建并绑定到JNDI服务(以便远程客户端可以查找它们并连接到JMX托管应用程序)。

Spring不需要 JMX,但在其框架库中提供对它的支持,这经常被用作向Spring托管应用程序或服务添加基于JMX的服务的简化方法。

听起来并不像需要 JNDI,正如您所说,如果您的应用程序将基于Spring管理的Java SE,那么您将需要一些相当专业的要求来调用JNDI。 / p>

对于JMX,Spring确实可以很容易地将JMX“instrumentation”添加到Spring托管的Java SE应用程序中。 我的观点 :我觉得(并且可能是错的)你需要在解决这个问题之前提高一些专业知识,因为这可能是一个严重的偏见。