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