tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark <ma...@bellsouth.net>
Subject Re: OKAY: HERE GOES. THIS IS GETTING INTERESTING. Re: Tomcat 4.0/JDBC driver configuration?
Date Thu, 29 Nov 2001 22:23:43 GMT
To answer your question, yes I understand what a servlet's init() method is
and when it's called.   You've provided valuable information and I
basically understand it, providing jdbc setup info through init-params in
web.xml.  I'll definitely plan on looking closer at javax.jdbc - I've only
used the (as you put it) 'kiddy' jdbc stuff in the past.

However, my question is about the physical location of the jdbc driver .jar
file.  In other environments I've worked with, including the location of
the .jar in the CLASSPATH was sufficient.  With Tomcat, does one have to
copy the driver to ../common/lib?  If so, that doesn't seem like a very
good situation to be in especially in a production environment.  I tried to
modify CLASSPATH in the startup scripts to see if that'd work, but
everything went haywire after that under Win2k - *nothing* worked even
after backing out the simple change (even had to reboot to get things in
working order again).  

I suspect I'm again missing/not understanding something.  

Thanks again for your help...
Mark
 

At 10:17 AM 11/29/2001 -0800, you wrote:
>Hi, Mark,
>
>Moving on, I see.  Great!  Here is a bunch of junk to look at and maybe
>learn from.  (I don't mind ending sentences prepositions with.)  First is
>this little way to get a connection from a PostgreSQL driver using
>DataSource.  I assume you will be using DataSource and not the kiddies
>version of jdbc, i.e. you will be using the jdbc extension, I assume.  If
>not, you should.  I don't want to bother talking about the kiddy version,
>which is well-covered in Sun tutorials.  If I seem to talk about the kiddy
>version with disdain, that is the correct impression. ///;-)
>
>Once you have the industrial strength jdbc set up with DataSource, the rest
>should be somewhat obvious.  There is nothing really tricky or special about
>Tomcat in this regard.
>
>What I definitely like to do is to get all the database "parameters" as you
>say established with start up in Tomcat, so I put it all in a StartUp
>servlet that has an init() method.  Before I go on, I will stop and ask if
>you know what an init() method with a servlet does?
>
>
>NOTICE THAT THE jdbcURL, etc. used in the start up servlet come from the
>web.xml specification that is for the start up servlet and ServletConfig,
>i.e. are for init() parameters in web.xml.
>
>Also note the resource reference in the web.xml at the bottom.  You are
>beginning to get into a bit more complicated area.  You have to include your
>jar or classes for a driver just like you do any classes or jars.  Jars are
>jars and classes are classes and they all are found in the same way.  I also
>use Tomcat in the context of an application server, running in the same JVM,
>so I have not shown a lot I do in relation to JMX specifications and MBeans
>and MLET classes which pop all I show here into a JNDI context.  But, that
>should not be a problem.
>
>Please do not fail to stop and learn the DataSource and jdbc extension
>stuff.  You have to get an advanced driver when you do this.  The kiddy
>drivers do not work with or have DataSource implementations.  You need to do
>some scouting and reading on this, if you are not already up to speed.  When
>I find out how much you know about this, then I can point you better.
>
>Micael
>
>Below are:
>
>   1.  A little made up class to get a DataSource connection or Connection
>object.
>
>    2.   A more developed web.xml than I have shown you before.
>
>    3.  A StartUp servlet which is fairly sophisticated.
>
>Have fun and let me know how it goes, if you would.  I have an interest in
>seeing how you progress with all this, because we all have to train people
>new at things.
>
>Micael, again
>
>///;-)
>
>
>
>///////////////////////////////////////////////////
>
>public class PostgresqlConnection {
>    private Connection conn;
>    private String     user;
>    private String     password;
>
>    public Connection getConnection(String user, String password) throws
>ClassNotFoundException, SQLException {
>        Class.forName("org.postgresql.Driver");
>        PostgresqlDataSource dataSource = new PostgresqlDataSource();
>  conn = dataSource.getConnection(user, password);
>        return conn;
>    }
>}
>
>//////////////////////////////////////////////////
>
><?xml version="1.0" encoding="ISO-8859-1"?>
>
><!DOCTYPE web-app
>    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
>    "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
>
><web-app>
>  <servlet>
>   <servlet-name>authenticate</servlet-name>
>   <servlet-class>AppAuthenticateServlet</servlet-class>
>  </servlet>
>
>  <servlet>
>   <servlet-name>action</servlet-name>
>   <servlet-class>ActionServlet</servlet-class>
>   <init-param>
>     <param-name>action-mappings</param-name>
>     <param-value>actions</param-value>
>   </init-param>
>  </servlet>
>
>  <servlet>
>   <servlet-name>setup</servlet-name>
>   <servlet-class>SetupServlet</servlet-class>
>   <init-param>
>     <param-name>jdbcDriver</param-name>
>    <param-value>org.postgresql.Driver</param-value>
>   </init-param>
>
>   <init-param>
>    <param-name>jdbcURL</param-name>
>    <param-value>
>     jdbc:postgresql://localhost:5432/db
>    </param-value>
>   </init-param>
>
>   <init-param>
>    <param-name>jdbcUser</param-name>
>    <param-value>db</param-value>
>   </init-param>
>
>   <init-param>
>    <param-name>jdbcPwd</param-name>
>    <param-value>yobyor</param-value>
>   </init-param>
>
>   <load-on-startup/>
>     </servlet>
>
>     <servlet-mapping>
>            <servlet-name>action</servlet-name>
>            <url-pattern>*.do</url-pattern>
>     </servlet-mapping>
>
>     <servlet-mapping>
>            <servlet-name>authenticate</servlet-name>
>            <url-pattern>/authenticate</url-pattern>
>     </servlet-mapping>
>
>    <welcome-file-list>
>                <welcome-file>index.jsp</welcome-file>
>    </welcome-file-list>
>
>    <taglib>
>        <taglib-uri>utilities</taglib-uri>
>        <taglib-location>/WEB-INF/tlds/utilities.tld</taglib-location>
>    </taglib>
>
>    <taglib>
>        <taglib-uri>application</taglib-uri>
>        <taglib-location>/WEB-INF/tlds/app.tld</taglib-location>
>    </taglib>
>
>    <taglib>
>        <taglib-uri>i18n</taglib-uri>
>        <taglib-location>/WEB-INF/tlds/i18n.tld</taglib-location>
>    </taglib>
>
>    <taglib>
>        <taglib-uri>security</taglib-uri>
>        <taglib-location>/WEB-INF/tlds/security.tld</taglib-location>
>    </taglib>
>
>    <taglib>
>        <taglib-uri>database</taglib-uri>
>        <taglib-location>/WEB-INF/tlds/database.tld</taglib-location>
>    </taglib>
>
>    <taglib>
>        <taglib-uri>html</taglib-uri>
>        <taglib-location>/WEB-INF/tlds/html.tld</taglib-location>
>    </taglib>
>
>    <taglib>
>        <taglib-uri>logic</taglib-uri>
>        <taglib-location>/WEB-INF/tlds/logic.tld</taglib-location>
>    </taglib>
>
>    <taglib>
>        <taglib-uri>dom</taglib-uri>
>        <taglib-location>/WEB-INF/tlds/dom.tld</taglib-location>
>    </taglib>
>
>    <taglib>
>        <taglib-uri>xslt</taglib-uri>
>        <taglib-location>/WEB-INF/tlds/xslt.tld</taglib-location>
>    </taglib>
>
>    <taglib>
>        <taglib-uri>regions</taglib-uri>
>        <taglib-location>/WEB-INF/tlds/regions.tld</taglib-location>
>    </taglib>
>
>    <taglib>
>        <taglib-uri>xpath</taglib-uri>
>        <taglib-location>/WEB-INF/tlds/xpath.tld</taglib-location>
>    </taglib>
>
>    <taglib>
>        <taglib-uri>tokens</taglib-uri>
>        <taglib-location>/WEB-INF/tlds/tokens.tld</taglib-location>
>    </taglib>
>
>    <resource-ref>
>     <description>Primary database</description>
>  <res-ref-name>PostgresDS</res-ref-name>
>  <res-type>javax.sql.DataSource</res-type>
>  <res-auth>CONTAINER</res-auth>
>     </resource-ref>
>
>     <security-constraint>
>      <web-resource-collection>
>       <web-resource-name>Credit Card Page</web-resource-name>
>       <url-pattern>/WEB-INF/jsp/createAccount/content.jsp</url-pattern>
>      </web-resource-collection>
>      <user-data-constraint>
>       <transport-guarantee>CONFIDENTIAL</transport-guarantee>
>      </user-data-constraint>
>     </security-constraint>
>
></web-app>
>
>////////////////////////////////////////////////////////
>
>SETUP SERVLET
>import java.sql.Connection;
>import java.sql.ResultSet;
>import java.sql.ResultSetMetaData;
>import java.sql.Statement;
>import java.sql.SQLException;
>
>import javax.servlet.ServletConfig;
>import javax.servlet.ServletContext;
>import javax.servlet.ServletException;
>import javax.servlet.http.HttpServlet;
>
>import beans.app.User;
>import beans.app.Users;
>import beans.jdbc.DbConnectionPool;
>
>public class SetupServlet extends HttpServlet implements
>beans.app.Constants, tags.jdbc.Constants {
>   private DbConnectionPool pool;
>
>   public void init(ServletConfig config) throws ServletException{
>      super.init(config);
>
>      ServletContext ctx = config.getServletContext();
>      createDbConnectionPool(config, ctx);
>
>      try {
>         ctx.setAttribute(USERS_KEY, loadUsers(ctx));
>      } catch(SQLException ex) {
>         throw new ServletException(ex);
>      }
>   }
>
>   public void destroy() {
>      ServletContext ctx = getServletConfig().getServletContext();
>      ctx.removeAttribute(DBPOOL_KEY);
>      ctx.removeAttribute(USERS_KEY);
>
>      pool.shutdown();
>      pool = null;
>      super.destroy();
>   }
>
>   private void createDbConnectionPool(ServletConfig config, ServletContext
>ctx) {
>      pool = new DbConnectionPool(
>                  config.getInitParameter("jdbcDriver"),
>                  config.getInitParameter("jdbcURL"),
>                  config.getInitParameter("jdbcUser"),
>                  config.getInitParameter("jdbcPwd"));
>      ctx.setAttribute(DBPOOL_KEY, pool);
>   }
>
>   private Users loadUsers(ServletContext ctx) throws SQLException {
>      Connection conn = null;
>
>      if(pool != null) {
>         try {
>            // wait for a maximum of 10 seconds for a connection
>            // if pool is full
>               conn = (Connection)pool.getConnection(10000);
>         } catch(Exception ex) {
>            throw new SQLException(ex.getMessage());
>         }
>         Statement stmt = conn.createStatement();
>         ResultSet rs = stmt.executeQuery("SELECT * FROM USERS");
>         Users users = new Users(rs);
>
>         pool.recycleConnection(conn);
>         return users;
>      }
>      return null;
>   }
>}
>
>
>-----Original Message-----
>From: Mark <markd@bellsouth.net>
>To: tomcat-user@jakarta.apache.org <tomcat-user@jakarta.apache.org>
>Date: Thursday, November 29, 2001 8:58 AM
>Subject: Tomcat 4.0/JDBC driver configuration?
>
>
>>Can someone point me in the right direction or provide an example of
>>configuring an application to use JDBC under Tomcat 4.0?  I was able to use
>>both thin and OCI Oracle JDCB drover connections by copying the
>>classes12.zip to $CATALINA_HOME/common/lib directory and renaming it to
>>classes12.jar, but that's not a good long term solution.  I found having
>>the driver in the CLASSPATH doesn't work.
>>
>>I suspect web.xml and/or server.xml is the place to configure the
>>deployment details.  Any examples or references to examples would be
>>greatly appreciated.
>>
>>Mark
>>
>>
>>--
>>To unsubscribe:   <mailto:tomcat-user-unsubscribe@jakarta.apache.org>
>>For additional commands: <mailto:tomcat-user-help@jakarta.apache.org>
>>Troubles with the list: <mailto:tomcat-user-owner@jakarta.apache.org>
>>
>>
>
>
>--
>To unsubscribe:   <mailto:tomcat-user-unsubscribe@jakarta.apache.org>
>For additional commands: <mailto:tomcat-user-help@jakarta.apache.org>
>Troubles with the list: <mailto:tomcat-user-owner@jakarta.apache.org>
>
>


--
To unsubscribe:   <mailto:tomcat-user-unsubscribe@jakarta.apache.org>
For additional commands: <mailto:tomcat-user-help@jakarta.apache.org>
Troubles with the list: <mailto:tomcat-user-owner@jakarta.apache.org>


Mime
View raw message