我正在尝试使用JNDI apprach连接到数据库服务器。但我不想使用任何jndi.properties文件或web.xml文件中的任何更改作为参数。
我有一个属性的hashMap要连接到数据库服务器,我想做一些类似的事情
HashMap map = new HashMap();
Hashtable<String, String> authEnv = new Hashtable<String, String>();
authEnv.put(Context.INITIAL_CONTEXT_FACTORY, "javax.sql.DataSource");
authEnv.put(Context.PROVIDER_URL, "jdbc:oracle:thin:@xyz.corporate.test.com:9822:mydb");
authEnv.put(Context.SECURITY_PRINCIPAL, "testuser");
authEnv.put(Context.SECURITY_CREDENTIALS, "testpass");
ctx = new InitialContext(authEnv);
ctx.bind("myjndi", "jdbc:oracle:thin:@xyz.corporate.test.com:9822:mydb");
System.out.println("Context is " + ctx);
ds = (DataSource) ctx.lookup("myjndi");
但是我的上下文没有初始化。这就是为什么我没有得到任何数据源对象。我创建了一个对象"myjndi",并试图用它来命名我的上下文。但它不起作用。请帮我弄清楚如何才能连接到数据库。
这从头到尾都是完全错误的。
javax.sql.DataSource
不能用作JNDI初始上下文工厂- "jdbc:oracle:shin:@xyz.corporate.test.com:9822:mydb"不是JNDI提供程序URL
- 将数据库URL放入JNDI也很奇怪
你不能边走边编。您应该只使用JDBC API,或容器的java:
名称空间的正常方式。