【问题标题】:How to bind a JDBC datasource to JNDI context "java:comp/env/jdbc" when not to use web.xml不使用 web.xml 时如何将 JDBC 数据源绑定到 JNDI 上下文“java:comp/env/jdbc”
【发布时间】:2015-05-31 06:52:38
【问题描述】:

如何仅使用基于代码的方法将 JDBC 数据源绑定到 JNDI 上下文 java:comp/env/jdbc

我们需要在web.xml 中写入resource-ref 以将数据源绑定到JNDI 本地上下文java:comp/env/jdbc。 但我只想使用org.springframework.web.context.AbstractContextLoaderInitializer 而不是web.xml(旧方法)。

我们知道方法InitialContext#createSubcontext。但是一些应用服务器(例如Websphere)不接受编辑上下文java:comp/env/jdbc/

有什么解决办法吗?

版本:

  • 春季 4.0.7
  • Servlet 3.0

【问题讨论】:

  • 您已经发现有些容器不支持它。因此,这个问题没有答案。
  • @sndyuk 如果对您有用,请接受下面的答案

标签: java spring jndi servlet-3.0


【解决方案1】:

您可以使用 Spring 的 SimpleNamingContextBuilder 尝试完整的编程方法:

  SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
  DataSource ds = new DriverManagerDataSource(...);
  builder.bind("java:comp/env/jdbc/myds", ds); // you control the datasource
  builder.activate();

它主要用于测试目的。如果您选择使用它,那么您需要提供自己的连接池(例如 Apache 的 Jakarta Commons DBCP)。

我曾经在部署到 cloudbees 时用于测试。 see this blogpost

这适用于“普通”Tomcat。我没有要测试的 EE 服务器,但您可以尝试一下,看看会发生什么(我猜 JNDI 绑定名称对于服务器来说必须是唯一的)。

【讨论】:

    【解决方案2】:

    你的应用服务器是什么?

    看看这是否有帮助。

    How to use JNDI DataSource provided by Tomcat in Spring?

    【讨论】:

    • 我知道如何在 Spring 中使用数据源。我想知道如何将数据源绑定到java:comp/env/jdbc/..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 2011-03-27
    • 2011-05-17
    • 2014-04-01
    • 2019-06-16
    相关资源
    最近更新 更多