Osc*_*Ryz 6 coldfusion tomcat jndi datasource tomcat6
是否可以以编程方式将DataSource绑定到Tomcat的6 JNDI?
我想动态创建一个DataSource,然后通过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);
}
Run Code Online (Sandbox Code Playgroud)
但我得到了这个例外:
javax.naming.OperationNotSupportedException: Context is read only
Run Code Online (Sandbox Code Playgroud)
有工作吗?
嗯,这是不可能的,因为 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
Run Code Online (Sandbox Code Playgroud)
为了与 ColdFusion 进行绑定,我们首先以编程方式创建数据源,然后将其绑定到上下文:
DataSource ds = ...
Context c = new InitialContext();
c.bind( "jdbc/my/blah/"+var , ds );
...
Run Code Online (Sandbox Code Playgroud)
然后使用 CF admin api,我们仅使用 jndiname 创建一个 JNDI 类型的 CF 数据源
| 归档时间: |
|
| 查看次数: |
2367 次 |
| 最近记录: |