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



我正在尝试使用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:名称空间的正常方式。

最新更新