不使用 web.xml 时如何将 JDBC 数据源绑定到 JNDI 上下文“java:comp/env/jdbc”
Posted
技术标签:
【中文标题】不使用 web.xml 时如何将 JDBC 数据源绑定到 JNDI 上下文“java:comp/env/jdbc”【英文标题】:How to bind a JDBC datasource to JNDI context "java:comp/env/jdbc" when not to use web.xml 【发布时间】: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 如果对您有用,请接受下面的答案 【参考方案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/..
。以上是关于不使用 web.xml 时如何将 JDBC 数据源绑定到 JNDI 上下文“java:comp/env/jdbc”的主要内容,如果未能解决你的问题,请参考以下文章