2012-01-21 6 views
9

でOracleとJNDIデータソースの設定:私はそれがこのようなエラーが生じ、Tomcatの7.0でJNDIから取得したデータソースから接続を取得するために動作させることができないのTomcat

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of cla 
ss '' for connect URL 'null' 

私は、次の多くの方法で行っていますドキュメントや他の人々の提案は、まだそれを修正することはできません。ここに私の設定です:web.xmlに

のcontext.xmlで
<resource-ref> 
    <description>MyDataSource</description> 
    <res-ref-name>jdbc/MyDataSource</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

<Context> 
    <Resource name="jdbc/MyDataSource" auth="Container" type="javax.sql.DataSource" 
       maxActive="100" maxIdle="30" maxWait="10000" 
       username="abc" password="abc" driverClassName="oracle.jdbc.OracleDriver" 
       url="jdbc:oracle:thin:@123.123.123.123:1521:xe"/> 
       <!-- // tried both driver class names but all not work driverClassName="oracle.jdbc.driver.OracleDriver" --> 
</Context> 

はまた、私はまた、

を動作しない、server.xmlでそれを入れてみました
<Resource name="jdbc/MyDataSource" auth="Container" type="javax.sql.DataSource" 
    driverClassName="oracle.jdbc.driver.OracleDriver" 
    url="jdbc:oracle:thin:@123.123.123.123:1521:xe" 
    servicename="MyDataSource" username="abc" password="abc" 
    maxActive="20" maxIdle="10" maxWait="20000"/> 

<ResourceParams name="jdbc/MyDataSource"> 
    <parameter> 
     <name>user</name> 
     <value>abc</value> 
    </parameter> 
    <parameter> 
     <name>password</name> 
     <value>abc</value> 
    </parameter> 
    <parameter> 
     <name>driverClassName</name> 
     <value>oracle.jdbc.driver.OracleDriver</value> 
    </parameter> 
</ResourceParams> 

Tomcat 7.0 \ libにclasses12.jarとojdbc14.jarを入れてください。

誰も私に正しい方法を教えてもらえますか?

私はその設定で非常に時間を無駄にしましたが、それでも動作させることはできません。前もって感謝します!以下のように

ジョン


スタックトレース:ここ

DS: [email protected] 
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 DBTest.doGet(DBTest.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    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:224) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) 
    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:987) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(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 

そして、コード、ds.getConnectionでは例外です。 (DSを入手する典型的な方法ではありません.BWZはWebSphereの方法と一致する必要があります...)

Properties env = new Properties(); 
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory"); 
initCtx = new InitialContext(env); 
DataSource ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/MyDataSource"); 
System.err.println("DS: " + ds.toString()); 
Connection conn = ds.getConnection(); 
+0

John、親切にStackTraceを投稿してください。 –

+0

@DarkRider、stacktrace add、またコードスニペット – John

答えて

2

同じシナリオの長いバックを経ていますか。

このリンクHere 私を助けました。

+0

をお手伝いいただきありがとうございます。私はそのリンクを前に読んでいますが、多くの提案に従っていますが、それと同じ問題です... – John

4

私はTOMCAT_HOME/conf/context.xmlとapplicationPath/META-INF/context.xmlに2回、リソースを2回定義したことに気付きました。 TOMCAT_HOME/conf/context.xmlからリソースを削除すると、すべてがうまくいった。

関連する問題