Java 尝试在tomcat中执行数据源JNDI查找时获取空指针异常
我试图通过DatabaseSource JNDI查找建立数据库连接 我将资源添加到server.xmlJava 尝试在tomcat中执行数据源JNDI查找时获取空指针异常,java,jakarta-ee,Java,Jakarta Ee,我试图通过DatabaseSource JNDI查找建立数据库连接 我将资源添加到server.xml <Resource name="jdbc/myDB" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/myDB"> <parameter> <name>factory</name> &
<Resource name="jdbc/myDB" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/myDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@111.111.111.111:1234:DBNME</value>
</parameter>
<parameter>
<name>username</name>
<value>Dobby</value>
</parameter>
<parameter>
<name>password</name>
<value>pwd</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
我得到了这个错误
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at com.sample.XML.doGet(XML.java:39)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(Unknown Source)
at java.sql.DriverManager.getDriver(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
... 21 more
我的tomcat库中有OJDBC14.jar
我在stackoverflow中发现了相同的问题,但那里提供的解决方案对我不起作用。这就是我再次发布该问题的原因。尝试:
datasource = (DataSource) initialContext.lookup( "java:/comp/env/jdbc/myDB" );
当您的资源名声明为jdbc/myDB时,您可以尝试将xml
<resource-ref>
<description>
</description>
<res-ref-name></res-ref-name>
<res-type></res-type>
<res-auth></res-auth>
</resource-ref>
在tomcat Server.xml中标记,然后重新启动服务器,看看这是否解决了您的问题?您能检查一个混淆-资源引用中的jdbc/mydb和数据源中的GMEDB吗?很抱歉,这是错误的。以前我只试过使用mydb。仍然有错误。为什么要在代码中添加pic?请添加您的代码,这样更容易帮助您:)您找到解决方案了吗?没有,我再次遇到相同的异常
datasource = (DataSource) initialContext.lookup( "java:/comp/env/jdbc/myDB" );
<resource-ref>
<description>
</description>
<res-ref-name></res-ref-name>
<res-type></res-type>
<res-auth></res-auth>
</resource-ref>