Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258

    Cannot create JDBC driver of class '' for connect URL 'null'....soluzione?

    Salve ragazzi,
    mi è capitato questo strano problema e ho visto che su internet esistono migliaia di richieste quasi tutte senza una soluzione concreta.
    Sto realizzando un'applicazione in jsf che interagisce con Mysql 5.0 e uso Eclipse con server Tomcat. Mentre vado a fare l'upload di un file (premetto che il tutto funzioanava egregiamente senza pool di connessioni, ora ho provato ad utilizzare il pool e JNDI,ma ho questo errore) utilizzando le DBCP relative al server Tomcat è:
    codice:
    GRAVE: #{MyBean.carica}: javax.faces.el.EvaluationException: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    javax.faces.FacesException: #{MyBean.carica}: javax.faces.el.EvaluationException: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:78)
    	at javax.faces.component.UICommand.broadcast(UICommand.java:312)
    	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
    	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
    	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
    	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
    	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
    	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: javax.faces.el.EvaluationException: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    	at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:130)
    	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
    	... 34 more
    Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
    	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
    	at giu.MyBean.carica(MyBean.java:185)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126)
    	... 35 more
    Caused by: java.sql.SQLException: No suitable driver
    	at java.sql.DriverManager.getDriver(Unknown Source)
    	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
    	... 42 more
    L'errore mi manda completamente nel pallone e non so come risolverlo, nei forum ho trovato per ora solo mezze soluzioni,qualcuno sa aiutarmi?
    Vi posto parte del server.xml di Tomcat,cioè quella da me modificata secondo il JNDI Datasource How-To .La mia applicazione si chiama MicroArray e usa un database nomedb....Grazie mille

    codice:
          <Context docBase="SpectraWEB" path="/SpectraWEB" reloadable="true" source="org.eclipse.jst.j2ee.server:SpectraWEB"/><Context docBase="MicroArray" path="/MicroArray" reloadable="true" source="org.eclipse.jst.j2ee.server:MicroArray"/>
          
          <Resource name="jdbc/nomedb" auth="Container"
                type="javax.sql.DataSource"/>
      <ResourceParams name="jdbc/nomedb">
        <parameter>
          <name>username</name>
          <value>root</value>
        </parameter>
        <parameter>
          <name>password</name>
          <value>shevagol</value>
        </parameter>
        <parameter>
          <name>driverClassName</name>
          <value>com.mysql.jdbc.Driver</value>
        </parameter>
        <parameter>
          <name>url</name>
          <value>jdbc:apache:commons:dbcp:nomedb</value>
        </parameter>
        <parameter>
          <name>maxActive</name>
          <value>8</value>
        </parameter>
        <parameter>
          <name>maxIdle</name>
          <value>4</value>
        </parameter>
      </ResourceParams>
      
    
          
    
          <Context docBase="Bookstore" path="/Bookstore" reloadable="true" source="org.eclipse.jst.j2ee.server:Bookstore"/><Context docBase="Jsf-example2-1.0" path="/Jsf-example2-1.0" reloadable="true" source="org.eclipse.jst.j2ee.server:Jsf-example2-1.0"/></Host>
    
        </Engine>
    
      </Service>
    
    </Server>
    Il web.xml della mia applicazione è

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
                             "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
     <context-param>
      <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
      <param-value>client</param-value>
     </context-param>
     <filter>
      <filter-name>ExtensionsFilter</filter-name>
      <filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filter-class>
      <init-param>
       <param-name>uploadMaxFileSize</param-name>
       <param-value>100m</param-value>
      </init-param>
      <init-param>
       <param-name>uploadThresholdSize</param-name>
       <param-value>100k</param-value>
      </init-param>
     </filter>
     <filter-mapping>
      <filter-name>ExtensionsFilter</filter-name>
      <servlet-name>FacesServlet</servlet-name>
     </filter-mapping>
     <servlet>
      <servlet-name>FacesServlet</servlet-name>
      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
     </servlet>
     <servlet-mapping>
      <servlet-name>FacesServlet</servlet-name>
      <url-pattern>/faces/*</url-pattern>
     </servlet-mapping>
     <servlet-mapping>
      <servlet-name>FacesServlet</servlet-name>
      <url-pattern>*.faces</url-pattern>
     </servlet-mapping>
     <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>
     <resource-ref>
      <description>Resource reference to a factory for java.sql.Connection
        instances that may be used for talking to a particular
        database that is configured in the server.xml file.</description>
      <res-ref-name>jdbc/nomedb</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
     </resource-ref>
    </web-app>



    Il bean di interesse è MyBean e il metodo chiamato è carica(), le cui operazioni riguardanti il db sono
    codice:
    Context initCtx = new InitialContext();
                Context envCtx = (Context) initCtx.lookup("java:comp/env");
                DataSource ds = (DataSource)envCtx.lookup("jdbc/nomedb");
    
                Connection conn = ds.getConnection();
                PreparedStatement pst = conn.prepareStatement("INSERT INTO tbl(Data) VALUES (?)");
    // imposto i valori
             				// pst.setInt(1,1);
    
                pst.setBytes(1, data);
             	pst.executeUpdate();
             	pst.close();
             	conn.close();
    Grazie ancora...aiutando me aiuterete tantissime altre persone nella mia stessa situazione(così dicono i forum........)

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258
    sto davvero impazzendo con questo problema!!!
    Ma è il più famoso sul web!!!!Ognuno poi si inventa una soluzione e a
    me non funziona niente....
    cmq,ti illustro miei progressi..
    dopo un'immane fatica ,ecco il mio codice che dovrebbe fare l'upload di
    un array di byte in un campo blob.
    codice:
    try { 
    Context ctx = new InitialContext(); 
    
    
    if (ctx == null){ 
    
    
    throw new Exception("Boom - No Context"); 
    
    
    
    } 
    
    
    Context envCtx = (Context) ctx.lookup("java:comp/env"); 
    k=9; 
    DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/nomedb"); 
     //"java:comp/env/jdbc/nomedb" 
    k=10; 
    if (ds != null) { 
    k=11; 
    Connection conn = ds.getConnection(); 
    k=12; 
    if (conn != null) { 
    
    PreparedStatement pst = null; 
    pst = conn.prepareStatement("INSERT INTO tbl(Data) VALUES (?)"); 
    
    
    // pst.setInt(1,1); 
    
    
    pst.setBytes(1, data); 
    pst.executeUpdate(); 
    pst.close(); 
    conn.close(); 
    
    
    
    } 
    } 
    } catch (Exception e) { 
    
    
    e.printStackTrace(); 
    
    
    }
    Purtroppo il codice funziona fino a k=11, interrompendosi magicamente
    su

    codice:
    Connection conn = ds.getConnection();
    Le eccezioni generate sono

    codice:
    org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver 
    of class '' for connect URL 'null' 
            at 
    org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.ja_va:780) 
            at 
    org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:_554) 
            at giu.MyBean.carica(MyBean.java:198) 
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
            at java.lang.reflect.Method.invoke(Unknown Source) 
            at 
    com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126) 
            at 
    org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListe_nerImpl.java:63) 
            at javax.faces.component.UICommand.broadcast(UICommand.java:312) 
            at 
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267) 
            at 
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381) 
            at 
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPha_se.java:75) 
            at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200) 
            at 
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90) 
            at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197) 
            at 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio_nFilterChain.java:237) 
            at 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC_hain.java:157) 
            at 
    org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter_.java:144) 
            at 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio_nFilterChain.java:186) 
            at 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC_hain.java:157) 
            at 
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.j_ava:214) 
            at 
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveConte_xt.java:104) 
            at 
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
            at 
    org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContex_tValve.java:198) 
            at 
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.j_ava:152) 
            at 
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveConte_xt.java:104) 
            at 
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
            at 
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:13_7) 
            at 
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveConte_xt.java:104) 
            at 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:11_8) 
            at 
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveConte_xt.java:102) 
            at 
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
            at 
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.jav_a:109) 
            at 
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveConte_xt.java:104) 
            at 
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
            at 
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) 
            at 
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) 
            at 
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
            at 
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConn_ection(Http11Protocol.java:705) 
            at 
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
            at 
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.ja_va:683) 
            at java.lang.Thread.run(Unknown Source) 
    Caused by: java.sql.SQLException: No suitable driver 
            at java.sql.DriverManager.getDriver(Unknown Source) 
            at 
    org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.ja_va:773) 
            ... 42 more
    Ti posto il server.xml di Tomcat(la parte da me modificata)
    codice:
    <Logger className="org.apache.catalina.logger.FileLogger" 
    directory="logs" prefix="localhost_log." suffix=".txt" 
    timestamp="true"/> 
    
    
          <Context docBase="SpectraWEB" path="/SpectraWEB" 
    reloadable="true" source="org.eclipse.jst.j2ee.server:SpectraWEB"/> 
    
    
          <Context docBase="Bookstore" path="/Bookstore" reloadable="true" 
    source="org.eclipse.jst.j2ee.server:Bookstore"/><Context 
    docBase="Jsf-example2-1.0" path="/Jsf-example2-1.0" reloadable="true" 
    source="org.eclipse.jst.j2ee.server:Jsf-example2-1.0"/><Context 
    docBase="MicroArray2" path="/MicroArray" reloadable="true" 
    source="org.eclipse.jst.j2ee.server:MicroArray2"/> 
          <Resource name="MysqlJNDI" type="javax.sql.DataSource"/> 
    
    
    <ResourceParams name="MysqlJNDI"> 
    <parameter> 
      <name>maxWait</name> 
      <value>5000</value> 
    </parameter> 
    <parameter> 
      <name>maxActive</name> 
      <value>4</value> 
    </parameter> 
    <parameter> 
      <name>username</name> 
      <value>root</value> 
    </parameter> 
    <parameter> 
      <name>password</name> 
      <value>shevagol</value> 
    </parameter> 
    <parameter> 
      <name>url</name> 
      <value>jdbc:mysql://localhost:3306/nomeDB</value> 
    </parameter> 
    <parameter> 
      <name>driverClassName</name> 
      <value>com.mysql.jdbc.Driver</value> 
    </parameter> 
    <parameter> 
      <name>maxIdle</name> 
      <value>2</value> 
    </parameter> 
    
    
    </ResourceParams> 
          </Host> 
    
    
        </Engine> 
    
    
      </Service> 
    
    
    </Server> 
    
    
    e il web.xml della mia applicazione 
    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web 
    Application 2.3//EN" 
                             "http://java.sun.com/dtd/web-app_2_3.dtd"> 
    <web-app> 
     <context-param> 
      <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
      <param-value>client</param-value> 
     </context-param> 
     <filter> 
      <filter-name>ExtensionsFilter</filter-name> 
    
    
    <filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filt_er-class> 
      <init-param> 
       <param-name>uploadMaxFileSize</param-name> 
       <param-value>100m</param-value> 
      </init-param> 
      <init-param> 
       <param-name>uploadThresholdSize</param-name> 
       <param-value>100k</param-value> 
      </init-param> 
     </filter> 
     <filter-mapping> 
      <filter-name>ExtensionsFilter</filter-name> 
      <servlet-name>FacesServlet</servlet-name> 
     </filter-mapping> 
     <servlet> 
      <servlet-name>FacesServlet</servlet-name> 
      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
      <load-on-startup>1</load-on-startup> 
     </servlet> 
     <servlet-mapping> 
      <servlet-name>FacesServlet</servlet-name> 
      <url-pattern>/faces/*</url-pattern> 
     </servlet-mapping> 
     <servlet-mapping> 
      <servlet-name>FacesServlet</servlet-name> 
      <url-pattern>*.faces</url-pattern> 
     </servlet-mapping> 
     <welcome-file-list> 
      <welcome-file>index.jsp</welcome-file> 
     </welcome-file-list> 
     <resource-ref> 
      <description>DB Connection</description> 
      <res-ref-name>jdbc/nomedb</res-ref-name> 
      <res-type>javax.sql.DataSource</res-type> 
      <res-auth>Container</res-auth> 
     </resource-ref> 
    </web-app>
    Il mio database si chiama nomedb e l'applicazione
    MicroArray2.........ti prego puoi andarmi un aiuto.............non ce
    la faccio+...................

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258
    problema risolto!!!
    si trattava di passare la stringa corretta all'invocazione del DataSource...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    1

    problema pool connection

    Ciao ti volevo chiedere come avevi risolto il tuo problema, anche io ho un problema simile:
    ho seguito le indicazioni del jndi how to... ma... non funge (ho tomcat 4.1 mysql 5)
    mi da l'errore

    org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null', cause:
    java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.jav a:243)
    ecc...

    ho provato con il driver mysql-connector-java-3.1.13-bin.jar
    l'ho messo in common/lib
    ma niente


    te hai usato questo oppure
    mm.mysql 2.0.14 (JDBC Driver) che è vecchio (mi sembra) è quello con il quale fa l'esempio...

    è da un po' che ci stò imazzendo non riesco ad uscirne...
    grazie

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    Originariamente inviato da sfano
    Ciao ti volevo chiedere come avevi risolto il tuo problema, anche io ho un problema simile
    Mi pare che l'errore dal quale ha origine il problema sia diverso; in ogni caso, non intervenire in discussioni esistenti per porre un nuovo problema, ma apri una nuova discussione, a meno che una discussione esistente non fornisca già una soluzione valida.

    Ad esempio, abbiamo parlato del tuo problema specifico in questa discussione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.