gpt4 book ai didi

tomcat - 在tomcat中绑定(bind)JNDI数据源?

转载 作者:行者123 更新时间:2023-11-28 21:47:16 24 4
gpt4 key购买 nike

是否可以通过编程方式将数据源绑定(bind)到 Tomcat 的 6 JNDI?

我想即时创建一个数据源,然后通过 JNDI(例如 ColdFusion)使其可用。

这是我的:

public void bindToConext(DataSource dataSource) throws NamingException, SQLException {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
envContext.bind("jdbc/mydatasource", dataSource);
}

但是我遇到了这个异常:

javax.naming.OperationNotSupportedException: Context is read only

有变通办法吗?

最佳答案

嗯,这是不可能的,因为 tomcat 的上下文在启动后变为只读。

所以我们所做的是使用 SimpleJNDI,它是内存上下文(更像是美化的 HashMap)并且对我们有用。

它需要一个 jndi.properties 文件,该文件必须位于类路径中,您可以在其中定义查找资源的目录和初始上下文工厂

java.naming.factory.initial=org.osjava.sj.SimpleContextFactory
org.osjava.sj.root=some/relative/path
org.osjava.jndi.delimiter=/
org.osjava.sj.jndi.shared=true

为了与 ColdFusion 进行绑定(bind),我们首先以编程方式创建数据源,然后将其绑定(bind)到上下文:

DataSource ds = ...
Context c = new InitialContext();
c.bind( "jdbc/my/blah/"+var , ds );
...

然后使用 CF admin api 我们只使用 jndiname 创建一个 JNDI 类型的 CF 数据源

关于tomcat - 在tomcat中绑定(bind)JNDI数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13734391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com