tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Micael Padraig Og mac Grene" <caraun...@harbornet.com>
Subject Re: OKAY: HERE GOES. THIS IS GETTING INTERESTING. Re: Tomcat 4.0/JDBC driver configuration?
Date Fri, 30 Nov 2001 17:20:57 GMT
Did you get my messages?
-----Original Message-----
From: Mark <markd@bellsouth.net>
To: Tomcat Users List <tomcat-user@jakarta.apache.org>
Date: Thursday, November 29, 2001 2:20 PM
Subject: Re: OKAY: HERE GOES. THIS IS GETTING INTERESTING. Re: Tomcat
4.0/JDBC driver configuration?


>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>
>
>


--
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