使用JNDI连接到数据库,但不使用任何属性文件

时间:2014-10-30 17:19:35

标签: java jndi

我正在尝试使用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”并尝试用它来竞争我的上下文。但它不起作用。 请帮我解释一下,我该如何与数据库建立这种连接。

1 个答案:

答案 0 :(得分:0)

从开始到结束都是完全错误的。

  • javax.sql.DataSource无法用作JNDI初始上下文工厂
  • &#34; JDBC:预言:瘦:@ xyz.corporate.test.com:9822:MYDB&#34;不是JNDI提供者URL
  • 将数据库URL放入JNDI也很奇怪。

你不能随便补上。您应该以正常方式使用JDBC API或容器的java:命名空间。