tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mehdi.Ne...@bluewave.com
Subject RE: JNDI Datasource is null, again
Date Fri, 25 Oct 2002 16:20:42 GMT

i cant see any descrepency between my own and yours..

only diff i see is the was you do your lookup in one step

      Context initContext = new InitialContext();
      Context envContext  = (Context)initContext.lookup("java:/comp/env");
      DataSource ds = (DataSource)envContext.lookup("jdbc/w2k");

ta,

m


                                                                                         
                         
                      "Short, Dave"                                                      
                         
                      <dave.short@pfize        To:       "'Tomcat Users List'" <tomcat-user@jakarta.apache.org>
   
                      r.com>                   cc:                                    
                            
                                               Subject:  RE: JNDI Datasource is null, again
                       
                      25/10/2002 17:06                                                   
                         
                      Please respond to                                                  
                         
                      "Tomcat Users                                                      
                         
                      List"                                                              
                         
                                                                                         
                         
                                                                                         
                         




In the past, I've found that I received this type of exception when any of
my connection parameters were wrong (username/password, driver name ,
etc.).
I'd suggest you review connection parameters carefully to make sure that
isn't the problem.

You do have your JDBC diver class jar file loaded in your tomcat\common\lib
directory, correct?

-----Original Message-----
From: "Steltner, Jörn HTC/DE/ESS" [mailto:Joern.Steltner@hochtief.de]
Sent: October 25, 2002 9:00 AM
To: 'Tomcat Users List'
Subject: RE: JNDI Datasource is null, again


sorry, doesn't work!

-----Original Message-----
From: Short, Dave [mailto:dave.short@pfizer.com]
Sent: Freitag, 25. Oktober 2002 17:56
To: 'Tomcat Users List'
Subject: RE: JNDI Datasource is null, again


I noticed you have the following code in your server.xml file within your
w2k context:

<Resource name="jdbc/w2k" auth="Container" type="javax.sql.DataSource"/>

I don't have this in mine.  Not sure if it's needed.  I can connect just
fine without it.  Take it out and see if it works.

-----Original Message-----
From: "Steltner, Jörn HTC/DE/ESS" [mailto:Joern.Steltner@hochtief.de]
Sent: October 25, 2002 8:38 AM
To: 'tomcat-user@jakarta.apache.org'
Subject: JNDI Datasource is null, again


Hallo,

I read that the problem was described many times here, but I cecked all
solutions and got the error again. Please may someone give me a hint.
Attached my config and the exception print. I don't know where I should
look
...

I use Tomcat 4.1.12 and J2SDK 1.4.1_01.


my code:

/*
 * dbGetInvoices.java
 *
 * Created on 12. August 2002, 15:14
 */
import javax.naming.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.*;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.text.*;
/**
 *
 * @author  steltner
 * @version
 */


public class dbGetInvoices extends HttpServlet {

    public void init(ServletConfig config) throws ServletException
    {
        super.init(config);
    }

    /** Destroys the servlet.
     */
    public void destroy() {
    }

    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "dbGetInvoices";
    }

    /** Processes requests for both HTTP <code>GET</code> and
<code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
    throws ServletException, java.io.IOException {
        response.setContentType("text/html");
        java.io.PrintWriter out = response.getWriter();
        out.close();
    }

    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse
response)
    throws ServletException, java.io.IOException
    {
       PrintWriter out     = response.getWriter();
       HttpSession session = request.getSession(true);

       String  no_user = (String)session.getAttribute("logon.isUserNo");
       String  no_role = (String)session.getAttribute("logon.isRole");

       if ((null == no_user) || (null == no_role))
       {
          out.println("<p><strong>Sie sind zur Zeit nicht angemeldet!");
       }
       else
       {
           // wenn Projektteam Mitglied
           if ( 0 == no_role.compareTo("3"))
               GetInvoices( out, no_user );
       }
       out.println("</body></html>");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse
response)
    throws ServletException, java.io.IOException {
        processRequest(request, response);
    }

    protected void GetInvoices( PrintWriter out, String no_user )
    {
       ....................
       GetInvoiceContents(out,no_user);
       ......................
    }

    protected void GetInvoiceContents( PrintWriter out, String no_user )
    {
       try
       {
          Context initCtx = new InitialContext();
          DataSource ds =
(DataSource)initCtx.lookup("java:comp/env/jdbc/w2k");


          // at this point ds is equal null :-((

          if (null != ds)
          {
             Connection conn = ds.getConnection();

             if (null != conn)
             {
                 Statement st = conn.createStatement();
                 ResultSet rs = st.executeQuery("select description from
price_comparison where no_price_comparison=1");

                 String    s  = "<tr bgcolor=#f0f0f0>";
                 int       i  = 0;
                 double    d  = 0.0;

                 // number formating
                 Locale       myLocale    = new Locale("de", "Germany");
                 NumberFormat myFormatter =
NumberFormat.getNumberInstance(myLocale);
                 myFormatter.setGroupingUsed( true );
                 myFormatter.setMinimumFractionDigits(2);
                 myFormatter.setMaximumFractionDigits(2);

                 while (rs.next())
                 {
                     // do something
                 }

                 st.close();
                 conn.close();
             }
          }

       }
       catch(Exception e) {
            e.printStackTrace();
       }

    }

}



my server.xml

        <!-- Tomcat w2k Context -->
        <Context path="" docBase="w2k" debug="9" reloadable="true"
crossContext="true">
          <Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_w2k_log." suffix=".txt" timestamp="true"/>
          <Resource name="jdbc/w2k" auth="Container"
type="javax.sql.DataSource"/>

          <ResourceParams name="jdbc/w2k">
           <parameter>
             <name>factory</name>
             <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
           </parameter>

           <!-- Maximum number of dB connections in pool. Make sure you
configure your mysqld max_connections large enough to handle
all of your db connections. Set to 0 for no limit.
           -->
           <parameter>
             <name>maxActive</name>
             <value>100</value>
           </parameter>

           <!-- Maximum number of idle dB connections to retain in pool.
Set to 0 for no limit.
           -->
           <parameter>
             <name>maxIdle</name>
             <value>30</value>
           </parameter>

           <!-- Maximum time to wait for a dB connection to become
available
                in ms, in this example 10 seconds. An Exception
is thrown if
                this timeout is exceeded.  Set to -1 to wait
indefinitely.
           -->
           <parameter>
             <name>maxWait</name>
             <value>10000</value>
           </parameter>

           <!-- MySQL dB username and password for dB connections  -->
           <parameter>
             <name>username</name>
             <value>web</value>
           </parameter>
           <parameter>
             <name>password</name>
             <value>access</value>
           </parameter>

           <!-- Class name for mm.mysql JDBC driver -->
           <parameter>
             <name>driverClassName</name>
             <value>org.gjt.mm.mysql.Driver</value>
           </parameter>

           <!-- The JDBC connection url for connecting to your MySQL dB.
The autoReconnect=true argument to the url makes sure that
the
mm.mysql JDBC Driver will automatically reconnect if mysqld
closed the
connection.  mysqld by default closes idle connections after
8 hours.
-->
           <parameter>
             <name>url</name>

<value>jdbc:mysql://localhost:3306/w2k?autoReconnect=true</value>
           </parameter>

           <parameter>
             <name>removeAbandoned</name>
             <value>true</value>
           </parameter>

           <parameter>
             <name>removeAbandonedTimeout</name>
             <value>60</value>
           </parameter>

           <parameter>
             <name>logAbandoned</name>
             <value>true</value>
           </parameter>
          </ResourceParams>
        </Context>



my web.xml

<!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>
  <display-name>w2k-Projektdokumentation</display-name>
  <description>w2k-Projektdokumentation</description>
  <context-param>
    <param-name>J. Steltner</param-name>
    <param-value>joern@steltner.com</param-value>
    <description>
      Please send a mail.
    </description>
  </context-param>


  <servlet>
    <servlet-name>dbGetInvoices</servlet-name>
    <description>Print table with all invoices.</description>
    <servlet-class>dbGetInvoices</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>dbGetInvoices</servlet-name>
    <url-pattern>/dbGetInvoices</url-pattern>
  </servlet-mapping>

  <session-config>
     <session-timeout>30</session-timeout>
  </session-config>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/w2k</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>

</web-app>


my catalina.out:

java.sql.SQLException: Cannot load JDBC driver class 'null'
             at
org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.jav

a:529)
             at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:3

12)
             at dbGetInvoices.GetInvoiceContents(dbGetInvoices.java:149)
             at dbGetInvoices.GetInvoices(dbGetInvoices.java:127)
             at dbGetInvoices.doGet(dbGetInvoices.java:71)
             at
javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
             at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
             at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application

FilterChain.java:247)
             at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh

ain.java:193)
             at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja

va:260)
             at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok

eNext(StandardPipeline.java:643)
             at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
             at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
             at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja

va:191)
             at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok

eNext(StandardPipeline.java:643)
             at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
             at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
             at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
             at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180

)
             at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok

eNext(StandardPipeline.java:643)
             at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.

java:170)
             at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok

eNext(StandardPipeline.java:641)
             at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172

)
             at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok

eNext(StandardPipeline.java:641)
             at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
             at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
             at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java

:174)
             at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok

eNext(StandardPipeline.java:643)
             at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
             at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
             at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
             at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
             at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
ction(Http11Protocol.java:380)
             at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
             at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav

a:533)
             at java.lang.Thread.run(Thread.java:536)



Regards Joern




--
To unsubscribe, e-mail:
<mailto:tomcat-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail:
<mailto:tomcat-user-help@jakarta.apache.org>

--
To unsubscribe, e-mail:
<mailto:tomcat-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail:
<mailto:tomcat-user-help@jakarta.apache.org>

--
To unsubscribe, e-mail:
<mailto:tomcat-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail:
<mailto:tomcat-user-help@jakarta.apache.org>

--
To unsubscribe, e-mail:   <
mailto:tomcat-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <
mailto:tomcat-user-help@jakarta.apache.org>






--
To unsubscribe, e-mail:   <mailto:tomcat-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-user-help@jakarta.apache.org>


Mime
View raw message