2011-03-01 18 views
5

हाय जब मैं JNDI का उपयोग कर डेटा स्रोत से कनेक्ट करने का प्रयास करें, मैं इस त्रुटि हो रही है:org.apache.tomcat.dbcp.dbcp.SQLNestedException: अशक्त '' कनेक्ट URL के लिए '' वर्ग के JDBC ड्राइवर नहीं बनाई जा सकती

[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 org.apache.roller.weblogger.business.DatabaseProvider.getConnection(DatabaseProvider.java:179) 
    at org.apache.roller.weblogger.business.DatabaseProvider.<init>(DatabaseProvider.java:141) 
    at org.apache.roller.weblogger.business.startup.WebloggerStartup.prepare(WebloggerStartup.java:171) 
    at org.apache.roller.weblogger.ui.core.RollerContext.contextInitialized(RollerContext.java:138) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) 
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079) 
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506) 
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.NullPointerException 
    at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:507) 
    at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:476) 
    at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307) 
    at java.sql.DriverManager.getDriver(DriverManager.java:253) 
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437) 
    ... 30 more] 

Context.xml

<Context path="/roller" docBase="c:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\roller" debug="0"> 
    <Resource name="jdbc/rollerdb" auth="Container" 
     type="javax.sql.DataSource" 
     driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://localhost:3306/rollerdb?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8-&amp;mysqlEncoding=utf8" 
     username="roller_user" 
     password="password" 
     maxActive="20" maxIdle="3" removeAbandoned="true" 
     maxWait="3000" 
    /> 
    <Resource name="mail/Session" 
     auth="Container" 
     type="javax.mail.Session" 
     username="[email protected]" 
     password="password" 
     mail.debug="false" 
     mail.user="[email protected]" 
     mail.password="password" 
     mail.smtp.from="[email protected]" 
     mail.transport.protocol="smtp" 
     mail.smtp.port="465" 
     mail.smtp.host="smtp.gmail.com" 
     mail.smtp.auth="true" 
     mail.smtp.starttls.enable="true" 
     mail.smtp.socketFactory.port="465" 
     mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory" 
     mail.smtp.socketFactory.fallback="false" 
    /> 
</Context> 

web.xml

<web-app .. > 
... 
    <!-- jndi resources --> 
    <resource-ref> 
     <res-ref-name>jdbc/rollerdb</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
    </resource-ref> 

    <resource-ref> 
     <res-ref-name>mail/Session</res-ref-name> 
     <res-type>javax.mail.Session</res-type> 
     <res-auth>Container</res-auth> 
    </resource-ref> 

</web-app> 
01 बिल्ला के lib diectory में

roller-custom.properties

installation.type=auto 
database.configurationType=jndi 
database.jndi.name=jdbc/rollerdb 
mail.configurationType=jndi 
mail.jndi.name=mail/Session 

मुझे मिल गया है mysql-कनेक्टर-जावा-5.1.15-bin.jar, activation.jar और mail.jar और वेब अनुप्रयोग टॉमकैट के वेबपैस फ़ोल्डर में रोलर।

मैं समझ नहीं पाया कि मैं यहां क्या कर रहा हूं। क्या कोई मुझे समझने में मदद कर सकता है कि मैं यहां क्या खो रहा हूं?

धन्यवाद।

धन्यवाद।

उत्तर

1

मुझे अभी भी एक ही त्रुटि मिली है और यह पता चला है कि मेरी context.xml फ़ाइल थोड़ा उलझन में थी। मुझे लगता है कि यह सबसे अधिक संभावना है जहां समस्या रहती है।

अपने आप को और आपके बीच context.xml फ़ाइलों की तुलना में मेरे सुझाव, मैं इस

driverClass 

कोशिश

driverClassName 
+1

मैंने बहुत बेवकूफी कुछ कर रहा था जब मैं उस त्रुटि हो रही थी। 'Context.xml' के बजाय' Context.xml' का उपयोग करने जैसा कुछ। – skip

0

के स्थान में मैं (इस समस्या को आयात संदर्भ बदलते समाधान कर लिया है में कहते हैं मेरे मामले) से:

import org.apache.tomcat.dbcp.dbcp.BasicDataSource; 

को
import org.apache.commons.dbcp.BasicDataSource; 

मेरी त्रुटि उत्पन्न हुई क्योंकि मैं हमेशा आयात संदर्भों के लिए सीआरटीएल + ओ का उपयोग करता हूं, और जब मैंने आयात किया तो मेरे संदर्भ में .jar नहीं था। मुझे आशा है कि यह दूसरों के लिए उपयोगी हो सकता है।

0

आप भी इस त्रुटि का सामना करना सकता है अपने बिलाव संस्करण अलग ..then उर context.xml अलग लग करने के लिए होता है अगर ... विस्तार के लिए इस पेज ..a करने के लिए जाना इस समस्या के लिए अवश्य पढ़ें:

APPLICATION_PATH में/WebContent/META_INF/संदर्भ: http://www.crazysquirrel.com/computing/java/connection-pooling.jspx

regs Karthic

0

मेरे मामले में निम्न परिवर्तन में मदद की।एक्सएमएल

पुराने कोड:

<resource name="jdbc/internships_db" auth="Container" type="javax.sql.DataSource"> 
    <param name="username" value="my_user" /> 
    <param name="password" value="my_password" /> 
    <param name="url" value="jdbc:mysql://localhost:3306/internships_db" /> 
</resource> 

नए कोड:

<Resource name="jdbc/internships_db" 
    auth="Container" 
    type="javax.sql.DataSource" 
    maxActive="100" 
    maxIdle="30" 
    username="my_user" 
    maxWait="10000" 
    driverClassName="com.mysql.jdbc.Driver" 
    password="my_password" 
    url="jdbc:mysql://localhost:3306/internships_db"/> 

JDBC-चालक वर्ग पथ के अंतर्गत रखा गया है /user_path/बिल्ला-instance_path/webapps/app_name/वेब-INF/lib/com.mysql.jdbc_5.1.5.jar