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 19:18:26 GMT
Yah, you've moved along alright.
-----Original Message-----
From: Mark <markd@bellsouth.net>
To: Tomcat Users List <tomcat-user@jakarta.apache.org>
Date: Friday, November 30, 2001 10:03 AM
Subject: Re: OKAY: HERE GOES. THIS IS GETTING INTERESTING. Re: Tomcat
4.0/JDBC driver configuration?


>Yes, I saw your replies about the db jar files.  The company I work for
>uses various databases, and it seems unusual (to me) to have to copy each
>vendor's JDBC .jar files to other directories vs. being able to directly to
>them in their respective production install directories (eg.
>../oracle/jdbc/lib/classes12.jar).  That's a subjective opinion though.  In
>any case, I moved on to JSP taglibs with Tomcat and had absolutely no
>problems.
>
>I'm ramping up for a J2EE development project and very pleased with the
>progress I've made with Tomcat this week (after getting over my initial
>servlet mapping problems/ignorance).
>
>Next... I'll make my first attempt at using the Sun RI of Java Data
>Objects.  Anyone used JDO in conjuction with Tomcat?
>
>
>
>At 09:20 AM 11/30/2001 -0800, you wrote:
>>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>
>>
>>
>
>
>--
>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