我正在尝试使用JNDI apporach连接到数据库服务器。但我不想使用任何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”并尝试用它来竞争我的上下文。但它不起作用。 请帮我解释一下,我该如何与数据库建立这种连接。
答案 0 :(得分:0)
从开始到结束都是完全错误的。
javax.sql.DataSource
无法用作JNDI初始上下文工厂你不能随便补上。您应该以正常方式使用JDBC API或容器的java:
命名空间。