Glassfish jdbc /数据库查找失败

我希望我不是因为我无法找到答案而问一个重复的问题。 我收到此错误:

javax.naming.NamingException:SerialContext中的’jdbc / osclassDB’查找失败

这就是我所做的:我设置了一个JDBC连接池和一个指向该池的JDBC资源 (都在Glassfish中)。

然后我告诉我的web.xml有一个JDBC资源:

 jdbc/osclassDB javax.sql.DataSource Container Shareable  

然后我尝试在Servlet中使用该资源

  Connection connection = null; try { InitialContext initialContext = new InitialContext(); //Context dbContext = (Context) initialContext.lookup("java:comp/env"); DataSource dataSource = (DataSource) initialContext.lookup("jdbc/osclassDB"); connection = dataSource.getConnection(); if (connection == null) { throw new SQLException("Error establishing connection!"); } // some queries here } // catch and finally close connection 

但是,当我调用Servlet它会抛出NamingException并告诉我, Lookup failed for 'jdbc/osclassDB' in SerialContext

我在这做错了什么? 是web.xml吗? 我错过了什么? 感谢您的帮助!

解决了这个问题:

首先添加一个sun-web.xml ,它将web.xml中的资源引用链接到一个实际的jndi-name (我在Glassfish上设置的那个)。 通常情况下,这不应该是必要的(说Oracle),但我还是做了[编辑:事实certificate,这真的没有必要! ]

第二节我遗漏了“ jdbc ”。 在servlet中web.xmlsun-web.xml现在只称为“osclassDB”(我的资源名称),而不是“jdbc / osclassDB”

现在它看起来像这样:

web.xml中

  osclassDB javax.sql.DataSource Container Shareable  

sun-web.xml中

  osclassDB osclassDB  

在servlet中

 Context dbContext = (Context) initialContext.lookup("java:comp/env"); DataSource dataSource = (DataSource) dbContext.lookup("osclassDB"); connection = dataSource.getConnection(); 

[编辑:] sun-web.xml真的没必要