Sorry for creating the confusion. Actually I was seeing the connection
object to be null for long time. But at last moment I made those silly
changes to present it in a better way. Sorry about it. But now I
printing the connection object and finding it to be null. I cannot
understand, the reason for connection object to be null, even when
datasource object is not null. Is it because that I am not able to
connect to database? If yes what could be the reason. If I specify the
attributes, using Direct JDBC by using Class.forName() and
DriverManager.getConnection(), I can connect to data base and read all
the values. But the problem comes when I use Connection pooling. Where
shuld I look for correction??

------------------------------------------------------------------
Part of my code and JSP o/p
-----------------------------------------------------------------
public LinkedList selectCP(){
        LinkedList ll = new LinkedList();
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;
        DataSource dataSource = null;
        try{
            Context init = new InitialContext();
                Context ctx = (Context) init.lookup("java:comp/env");
            dataSource = (DataSource)ctx.lookup("jdbc/conversion");
            ll.add("dataSource object is");
            ll.add(dataSource);
         }
        
        catch(NamingException e){
            System.out.println("Exception thrown is"+e.getMessage());
            ll.add("Naming Exception thrown");
        } 
        finally{
            if(dataSource == null){
                        ll.add("DataSource object is null");
                    return ll;
                }
            else{
                ll.add("Data source object is not null");
 
                }
            }
        try{
                ll.add("Inside try.");
            ll.add("con is");
            ll.add(con);
            
            
           if(con == null){
                ll.add("Inside try. Connection object found to be
null");
                ll.add(con);
                return ll;
            }
                else{
                        ll.add("Connection object inside else is");
                ll.add(con);            }
           }
        }
        catch(SQLException e) {
            System.err.println("SQL EXCEPTION"+e.getMessage());
            ll.add("SQL Exception ");
            ll.add(e.getMessage());
        }
        catch(Exception e) {
            System.err.println(" class not found
exception"+e.getMessage());
            ll.add("Exception generated:");
            ll.add(e.getMessage());
        }
        finally{
            if(con == null)
                ll.add("Connection object is null");
        }
        try{
            stmt.close();
        }
        catch(Exception e){}
        try{
            rs.close();
        }
        catch(Exception e){}
        try{
            con.close();
        }
        catch(Exception e){}
         
        return ll;
}
---------------------------O/P------------------------------------------
---
I am pasting the ll obtained on browser--
 [dataSource object is, [EMAIL PROTECTED],
Data source object is not null, Inside try., con is, null, Inside try.
Connection object found to be null, null, Connection object is null]

-----Original Message-----
From: David Smith [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, May 04, 2004 1:35 PM
To: Tomcat Users List
Subject: Re: DB connection pool problem

Sorry about the last post.  It's been a looonnng day and I didn't read 
it very well :-(.

 From what I see, you're comparing conn to null before even attempting 
to get a connection.  Try comparing dataSource to null instead of conn 
in the second catch block.  Then do dataSource.getConnection() if 
dataSource != null.

--David

David Smith wrote:

> I'm a bit confused on your code:
>
>        try{
>            // load the driver class file
>            //Class.forName("com.mysql.jdbc.Driver").newInstance();
>            //establishing the connection
>            if(con == null){
>                ll.add("Inside 1st try. Connection object found to be
> null");
>
>
> Why are you doing a Class.forName call after getting a datasource 
> object?  I think you're mixing incompatible database access methods.  
> Try doing dataSource.getConnection() after getting a valid datasource 
> instead.  You'll be happier with the result.  Take a look at the 
> javadocs for javax.sql.DataSource for more info.
>
> --David
>
> Arora, Avinash wrote:
>
>> Hi friends,
>>          Thanks for your previous feedback. After adding several
>> logging statements in my code, I have found that connection object is
>> null. But dataSource object is not null. What can be reason for it??
>> Here is how I use it in my code--
>>     public LinkedList testFunction(){
>>       LinkedList ll = null;        Connection con = null;
>>        Statement stmt = null;
>>        ResultSet rs = null;
>>        DataSource dataSource = null;
>>        try{
>>            Context init = new InitialContext();
>>            Context ctx = (Context) init.lookup("java:comp/env");
>>            dataSource = (DataSource)ctx.lookup("jdbc/conversion");
>>            ll.add("dataSource object is");
>>            ll.add(dataSource);
>>       }
>>               catch(NamingException e){
>>            System.out.println("Exception thrown is"+e.getMessage());
>>            ll.add("Naming Exception thrown");
>>        }        finally{
>>            if(dataSource == null){
>>
>>                    ll.add("DataSource object is null");
>>                    return ll;
>>                }
>>            else{
>>                ll.add("Data source object is not null");
>>               // return ll;
>>                }
>>            }
>>        try{
>>            // load the driver class file
>>            //Class.forName("com.mysql.jdbc.Driver").newInstance();
>>            //establishing the connection
>>            if(con == null){
>>                ll.add("Inside 1st try. Connection object found to be
>> null");
>>            }
>>            else{
>>                ll.add("Inside 1st try. Connection object is not
nul");
>>                       con  = dataSource.getConnection();            
>>            stmt = con.createStatement();
>>            ....
>>     }
>>     finally{
>>            if(con == null){
>>                ll.add("Connection object is null");
>>             //   return ll;
>>                       }
>> ----------------------Here is the output that I can see on my jsp
page,
>> where I try to print out the linklist obtained from the function
above.
>>
>> elements of link list read from database are -[dataSource object is,
>> [EMAIL PROTECTED], Data source object is
>> not null, Inside 1st try. Connection object found to be null,
Connection
>> object is null]
>>
>>
>>     
>>
>> Thanks.
>> Avinash Arora
>>
>>
>> -----Original Message-----
>> From: Daxin Zuo [mailto:[EMAIL PROTECTED] Sent: Monday, May 03, 
>> 2004 3:34 PM
>> To: Tomcat Users List
>> Subject: RE: DB connection pool problem
>>
>>  I have just created a "pool" -- I hope it is really a pool. I used
>> jtds
>> jdbc driver to MS SQL Server on Windows. You may find some thing
>> similar.
>> Holp it helps.
>>
>> 1) bellow is the text in tomcat\conf\server.xml
>> <GlobalNamingResources>
>>  <Resource name="jdbc/DirectSQL" auth="Container"
>> type="javax.sql.DataSource"/>
>>   <ResourceParams name="jdbc/DirectSQL">
>>     <parameter>
>>       <name>factory</name>
>>       <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
>>     </parameter>
>>
>>     <parameter>
>>       <name>maxActive</name>
>>       <value>255</value>
>>     </parameter>
>>     <parameter>
>>       <name>maxIdle</name>
>>       <value>10</value>
>>     </parameter>
>>     <parameter>
>>       <name>maxWait</name>
>>       <value>10000</value>
>>     </parameter>
>>     <parameter>
>>      <name>username</name>
>>      <value>user1</value>
>>     </parameter>
>>     <parameter>
>>      <name>password</name>
>>      <value>passwd1</value>
>>     </parameter>
>>     <parameter>
>>        <name>driverClassName</name>
>>        <value>net.sourceforge.jtds.jdbc.Driver</value>
>>     </parameter>
>>     <parameter>
>>       <name>url</name>
>>       <value>jdbc:jtds:sqlserver://serverName:1433</value>
>>     </parameter>
>>   </ResourceParams>
>>  ...
>>
>> 2) bellow is the text in tomcat\conf\Catalina\localhost\ROOT.XML --I
>> create
>> this file by myself
>> <Context path="" docBase="ROOT" debug="0" privileged="true">
>>
>>  <!-- Link to the user database using dbc:jtds:sqlserver -->
>> <ResourceLink name="jdbc/DirectSQL" global="jdbc/DirectSQL"
>>                type="javax.sql.DataSource"/>
>> </Context>
>> This "name" is used in Java code. "global" is the name in xml file.
they
>> can
>> be different.
>>
>> 3) my test jsp file is in \tomcat\webapps\ROOT\zuo\
>>
>>         Context ctx = new InitialContext();
>>         if (ctx == null) {
>>             throw new Exception("Boom - No Context");
>>         }
>>         DataSource ds = (DataSource)
>> ctx.lookup("java:comp/env/jdbc/DirectSQL");
>>         if (ds != null)
>>         con = ds.getConnection();
>>         if (con != null){
>>             str = "select * from myTable";
>>             pStateSearch = con.prepareStatement(str,
>> ResultSet.TYPE_SCROLL_SENSITIVE,
>> ResultSet.CONCUR_READ_ONLY );
>>             rs = pStateSearch.executeQuery();
>>             ....
>>
>> That's all.
>>
>> -----Original Message-----
>> From: Arora, Avinash [mailto:[EMAIL PROTECTED]
>> Sent: Monday, May 03, 2004 3:10 PM
>> To: Tomcat Users List
>> Subject: DB connection pool problem
>>
>>
>> Hi,
>>   I am also having the problem with the connection pools. Since I am
>> writing an application first time by using connection pools, I
created a
>> test application DBTest. I edited my server.xml and web.xml (of my
>> application in following way--
>> #added to server.xml
>> <Context path="/DBTest" docBase="DBTest" debug="0"
>>                        reloadable="true">
>>            <ResourceParams name="jdbc/conversion">
>>                <parameter>
>>                    <name>username</name>
>>                    <value>ROOT</value>
>>                </parameter>
>>                <parameter>
>>                    <name>password</name>
>>                    <value>PASSWORD</value>
>>                </parameter>
>>                <parameter>
>>                    <name>driverClassName</name>
>>                    <value>com.mysql.jdbc.Driver</value>
>>                 </parameter>
>>                 <parameter>
>>                    <name>url</name>
>>                    <value>jdbc:mysql://localhost/DB</value>
>>                  </parameter>
>>              </ResourceParams>
>>           </Context>
>>
>> #web.xml
>> <web-app>
>>    <description>MySQL Test App</description>
>>  <resource-ref>
>>    <res-ref-name>jdbc/conversion</res-ref-name>
>>      <res-type>javax.sql.DataSource</res-type>
>>      <res-auth>Container</res-auth>
>>  </resource-ref>
>> </web-app>
>> And I added the following statements to my Java class, (which works
>> fine, when I use the connection objects by hardcoding the username
and
>> db).--
>>
>> Context init = new InitialContext();
>> Context ctx = (Context) init.lookup("java:comp/env");
>> DataSource dataSource = (DataSource)ctx.lookup("jdbc/conversion");
>>
>> But even after, making these changes, I cannot read any thing from
>> database. I was wondering what more changes I need to made. I also
tried
>> to run my JAVA class (DAO) from command line, but I get the following
>> exception--
>>
>> Need to specify class name in environment or system property, or as
an
>> applet parameter, or in an application resource file:
>> java.naming.factory.initial
>>
>> I tried to print outs the place where exception occurs in my code and
>> found that exception occurs at
>> dataSource = (DataSource)ctx.lookup("jdbc/conversion");
>>
>> Can any body please comment on whats going on wrong? When I run from
>> command line, is tomcat used, I don't think so? So where is the
problem?
>> Any ideas??
>> Avinash Arora
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>  
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to