gpt4 book ai didi

java - InitialContext 工厂错误

转载 作者:行者123 更新时间:2023-12-01 14:25:04 25 4
gpt4 key购买 nike

我正在学习Managing database connections with JDBC由 IBM 出版。这是一些旧东西(2001)。他们正在使用 JNDI。当我尝试实现他们的代码时:

 try {
Hashtable env = new Hashtable();
env.put(
Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");

// Create the initial context

Context ctx = new InitialContext(env);

// Here we create the actual DataSource and then set the relevant
// parameters.

TdsDataSource ds = new TdsDataSource();

ds.setServerName(serverName);
ds.setPortNumber(portNumber);
ds.setDatabaseName(databaseName);
ds.setUser(login);
ds.setPassword(password);
ds.setDescription("JDBC DataSource Connection");

// Now we bind the DataSource object to the name we selected earlier.

ctx.bind(filePath, ds);
ctx.close();

// Generic Exception handler, in practice, this would be replaced by an
// appropriate Exception handling hierarchy.

} catch (Exception ex) {
System.err.println("ERROR: " + ex.getMessage());
}

但是我发现没有“com.sun.jndi.fscontext.RefFSContextFactory”文件系统服务提供者。然后我将代码更改如下(来自 Initialize Data Source Properties )。

OracleDataSource ods = new OracleDataSource();
ods.setDriverType("oci");
ods.setServerName("dlsun999");
ods.setNetworkProtocol("tcp");
ods.setDatabaseName("816");
ods.setPortNumber(1521);
ods.setUser("scott");
ods.setPassword("tiger");
Context ctx = new InitialContext();
ctx.bind("jdbc/sampledb", ods);

当我尝试执行此代码时,出现以下错误:

ERROR: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial

我认为它仍在请求 Context.INITIAL_CONTEXT_FACTORY。有什么解决办法吗?我从早上就开始寻找它。

最佳答案

尝试在创建 InitialContext 对象之前包含以下几行。它应该可以解决问题。

System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory");
System.setProperty(Context.URL_PKG_PREFIXES, "org.apache.naming");

这基本上告诉系统您正在使用哪个初始上下文库来存储数据源上下文。

关于java - InitialContext 工厂错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218852/

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