我最近使用我的tomcat项目跟踪了一个使用JNDI数据源的问题,发现我使用了错误的类型。 context.xml包括以下内容:
<Resource name="jdbc/myDataSource" type="org.apache.commons.dbcp.BasicDataSource" ...
什么时候应该使用:
<Resource name="jdbc/myDataSource" type="javax.sql.DataSource" ...
我在这个简单的问题上浪费了5个小时,因为我没有看到与问题相关的有用错误消息。我在Spring中引用了资源:
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/myDataSource" />
..我收到的唯一反馈是
SEVERE: Servlet /myServlet threw load() exception
javax.naming.NamingException: Cannot create resource instance
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:146)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
at org.apache.naming.NamingContext.lookup(NamingContext.java:843)
at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
...
我真的很好奇调试此类问题的最佳方法。我已经在context.xml中声明了这个资源创建了一个空的Tomcat实例,但是没有记录错误,并且/ manager / text / resources似乎没有显示myDataSource的正确版本或不正确版本。< / p>