tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Richards <Paul.Richa...@Sun.COM>
Subject Re: Tomcat and DataSource JNDI
Date Tue, 13 Apr 2004 21:45:33 GMT
On Tue, 2004-04-13 at 15:38, Parsons Technical Services wrote:
> Paul,
> 
> Everything looks okay until here:
> >
> >     DataSource ds = null;
> >     try {
> >         Context ctx = new InitialContext();
> >         ds =
> > (DataSource)ctx.lookup("java:comp/env/jdbc/PhoenixDB");
> >         if (ds == null)
> >             throw new Exception("DS was null");
> >         ds.getConnection("phoenix", "ashes").close();
> >     } catch (Exception e) {
> >         out.println("JNDI lookup failed");
> >         e.printStackTrace(out);
> >         MysqlConnectionPoolDataSource dsi = new
> > com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource();
> >         dsi.setURL("jdbc:mysql://drusilla.central/phoenix");
> >         ds = dsi;
> >     }
> >
> >     Connection con =  ds.getConnection("phoenix", "ashes");
> >     out.println("Created connection to database.");
> 
> This line is trying to close the connection you just tried to get.
> >         ds.getConnection("phoenix", "ashes").close();
> 

This is deliberate.  This is to test that the DataSource I get actually
works.

> This needs to be inside the catch block.
> >     Connection con =  ds.getConnection("phoenix", "ashes");
> 

Em no.. If the JNDI test fails then the catch block gets the Mysql
datasource manually.

The code after the try/catch executes using the DataSource set by
whichever method worked.  It should work no matter where the DataSource
came from.


> 
> Try this code:
> 
>      DataSource ds = null;
>      Connection con = null;
>      try {
>          Context ctx = new InitialContext();
>          ds = (DataSource)ctx.lookup("java:comp/env/jdbc/PhoenixDB");
>          if (ds == null)
>              throw new Exception("DS was null");
>         con = ds.getConnection();
>      } catch (Exception e) {
>          out.println("JNDI lookup failed");
>          e.printStackTrace(out);
>          MysqlConnectionPoolDataSource dsi = new
>  com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource();
>          dsi.setURL("jdbc:mysql://drusilla.central/phoenix");
>          ds = dsi;
>      con =  ds.getConnection("phoenix", "ashes");
>      }
> 
>      out.println("Created connection to database.");
> 
> 
> See if it give you a connection. Also note that you were not getting a DS
> was null exception, which is what you should have got if the ctx.lookup
> failed.
> 
> 

Yes I know this.  This is why I said in my previous emails that I didn't think the JNDI binding
was failing.  I suspect that it is more to do with the parameters being passed incorrectly
from the server.xml..



-- 
Paul Richards <Paul.Richards@Sun.COM>


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


Mime
View raw message