【问题标题】:Do all Java application servers support JNDI data sources?是否所有 Java 应用程序服务器都支持 JNDI 数据源?
【发布时间】:2015-11-22 21:46:56
【问题描述】:

是否某些 Java 应用服务器支持通过 JNDI 的 JDBC 数据源?

我知道他们这样做很常见。但由于它不是 Java EE 标准,因此无法保证它们都确实提供了支持。

我问的原因是调查我们正在制作的通用 Web 应用程序的系统要求的可行性。它应该可以部署在尽可能多的应用服务器上。

【问题讨论】:

  • 我一直认为支持 JNDI 和 JNDI 数据源对 JavaEE 容器的要求(即使对于“只是" 一个 servlet 容器)
  • JNDI 位于 JVM (javax.naming) 中。但是数据源、邮件会话等的使用不是 JEE 的一部分。好吧,至少我不知道。
  • @JanGoyvaerts 它肯定是 J2EE 的一部分。
  • 这是个好消息!我会在 JCP 上查找它。您有任何机会记住 JSR 编号吗? :-) @a_horse_wth_no_name 当然,问题是 JEE 是否关心资源的某些用途。

标签: jakarta-ee jdbc datasource jndi java-ee-6


【解决方案1】:

有趣的是,我使用容器管理的东西,比如数据源,以确保可能的应用程序是通用的,并且可以部署在尽可能多的应用程序服务器上。 Java EE 供应商可移植性的目标。

(我在公共部门咨询过客户,我用它来帮助他们在供应商之间移动并升级旧系统,这对我来说总是很有效。)

例如在 JSR 316 / Java EE 6 规范中讨论了许多领域的 JNDI,以及 EE.2.7.6 部分中的 JDBC 以及 EE.2.7.7 部分中的 JPA。

数据源本身是 Java SE 的一部分。如果假设应用服务器供应商不包含用于 JDBC 数据源的资源适配器,他们仍然必须提供 JPA 并且他们仍然必须提供 JCA,因此可以在市场后添加这样的资源适配器。

在早期的 Java EE 中,我通过添加资源适配器来配置 JMS,因为默认情况下没有安装它。但是供应商仍然提供了它,并且当时服务器实际上并没有获得 Java EE 许可。

【讨论】:

    【解决方案2】:

    是的,如果应用服务器是 Java EE 投诉,那么它支持使用 JNDI 查找数据源。

    Here is a link to all of the Java EE complaint app servers

    来源:
    Java EE7 规范的第 EE.15.19 节,描述了默认数据源的要求。

    Java EE 产品提供者必须使默认数据源可供应用程序以 JNDI 名称 java:comp/DefaultDataSource 访问。

    规范还提到了使用 JNDI 在许多其他地方查找数据源,EE.15.19 节只是我想到的第一个。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 2010-11-18
      相关资源
      最近更新 更多