Yah, you've moved along alright.
-----Original Message-----
From: Mark <[EMAIL PROTECTED]>
To: Tomcat Users List <[EMAIL PROTECTED]>
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 <[EMAIL PROTECTED]>
>>To: Tomcat Users List <[EMAIL PROTECTED]>
>>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 <[EMAIL PROTECTED]>
>>>>To: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
>>>>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:[EMAIL PROTECTED]>
>>>>>For additional commands: <mailto:[EMAIL PROTECTED]>
>>>>>Troubles with the list: <mailto:[EMAIL PROTECTED]>
>>>>>
>>>>>
>>>>
>>>>
>>>>--
>>>>To unsubscribe: <mailto:[EMAIL PROTECTED]>
>>>>For additional commands: <mailto:[EMAIL PROTECTED]>
>>>>Troubles with the list: <mailto:[EMAIL PROTECTED]>
>>>>
>>>>
>>>
>>>
>>>--
>>>To unsubscribe: <mailto:[EMAIL PROTECTED]>
>>>For additional commands: <mailto:[EMAIL PROTECTED]>
>>>Troubles with the list: <mailto:[EMAIL PROTECTED]>
>>>
>>>
>>
>>
>>--
>>To unsubscribe: <mailto:[EMAIL PROTECTED]>
>>For additional commands: <mailto:[EMAIL PROTECTED]>
>>Troubles with the list: <mailto:[EMAIL PROTECTED]>
>>
>>
>
>
>--
>To unsubscribe: <mailto:[EMAIL PROTECTED]>
>For additional commands: <mailto:[EMAIL PROTECTED]>
>Troubles with the list: <mailto:[EMAIL PROTECTED]>
>
>
--
To unsubscribe: <mailto:[EMAIL PROTECTED]>
For additional commands: <mailto:[EMAIL PROTECTED]>
Troubles with the list: <mailto:[EMAIL PROTECTED]>