|
-- [ Picked text/plain from multipart/alternative ] I'm not David but I'll tell ya what I did and maybe it will help. I created the JNDI stuff, using Richard's code as a starting point.I named it "StatementPoolingDataSource" I then created a servlet that is loaded at startup of Tomcat. This servlet does the JNDI lookup int the init method. I have public method getDataSource() that returns the static DataSource that I looked up in the init method to any other servlet or Java bean that needs a connection. . Here is my init in the load-at-startup servlet: public void init(ServletConfig config) throws ServletException { super.init(config); try { Context ctx = new InitialContext(); dataSource = (DataSource) ctx.lookup("StatementPoolingDataSource"); } catch (Exception e) { System.out.println(e); } } Here is my getDataSource() method in the load-at-startup servet: public static DataSource getDataSource() { return dataSource; } Hope that helps, PLA Alex Pinsky wrote: >Hi David, >I'm trying to replace our home written ConnectionPool class to manage JDBC >connections with the UDBConnectionPoolDataSource as explained by Richard >Dettinger in his January 2002 article in iSeries magazine. Right now we create >ConnectionPool in our Login servlet init() method (being called when Tomcat is >started) and place a reference to that object into ServletContext for future >reference by every servlet that needs a database connection. We have a static >class Pool with method getConnection() which performs a lookup for given >attribute name in a ServletContext for reference to the ConnectionPool object, >gets connection from the pool and return it to the requester. After use >servlet calls Pool.freeConnection(Connection con) which returns given >connection back to the pool. >I want to create UDBConnectionPoolDataSource and use it as a connection >factory with the statement pooling. The problem that I see is that I have to >create ConnectionPoolDataSource first and than create standard data source to >reference it and I don't know how to do this without JNDI as shown in >Richard's example: > // Create a ConnectionPoolDataSource implementation > UDBConnectionPoolDataSource cpds = new UDBConnectionPoolDataSource(); > cpds.setDescription("Connection Pooling DataSource object with Statement >pooling"); > cpds.setMaxStatements(10); > > // Establish a JNDI context and bind the connection pool data source > Context ctx = new InitialContext(); > ctx.rebind("StatementSupport", cpds); > > > // Now create a standard datasource that references it. > UDBDataSource ds = new UDBDataSource(); > ds.setDescription("DataSource supporting statement pooling"); > ds.setDataSourceName("StatementSupport"); > ctx.rebind("StatementPoolingDataSource", ds); > >I don't want to use JNDI because it is an expensive operation but it seems the >only way how to reference one type of object to another... Maybe you can help >me to figure-out this? >By the way - after proper tuning (as you recommended) I got Tomcat4.1.12 >working fine, thanks... > >Alex Pinsky >Intranet developer >Aeropostale, Inc. > >-----Original Message----- >From: David Morris [mailto:David.Morris@plumcreek.com] >Sent: Friday, December 13, 2002 2:04 PM >To: java400-l@midrange.com >Subject: Re: JNDI on AS400 > > >What are you sharing this connection with? Using JNDI is great >if you have two components that don't know about each other, >but there is a lot of overhead involved. You might consider >creating your own cache for connections and putting a reference >to them into a static locator. You can wrap that around your >initial context if necessary to give you the best of both worlds. >If I were to guess, I would say in your second example you used >the wrong name in your lookup. > >David Morris > > > >>>>apinsky@aeropostale.com 12/13/02 10:30AM >>> >>>> >>>> >This is a multi-part message in MIME format. >-- >-- >[ Picked text/plain from multipart/alternative ] >Hi, >I'm trying to configure Tomcat to use UDBDConnectionPoolDataSource as >statement pooled connection factory and can't get JNDI to work. >Before run it under Tomcat I want to make sure that JNDI portion of the >code would work. The code is: > > > > >import java.sql.*; >import javax.naming.*; >import java.util.*; >import com.ibm.db2.jdbc.app.UDBDataSource; > > >public class UDBDataSourceExample1 >{ > public static void main(java.lang.String[] args) > throws Exception > { > UDBDataSource ds = new UDBDataSource(); > ds.setDescription("Basic DataSource"); > System.out.println("dataSource created"); > > > Context ctx = new InitialContext(); > > > ctx.rebind("BaseDataSource", ds); > } >} > >Error message when trying to rebind: >javax.naming.NoInitialContextException: >Need to specify class name in environment or system property, or as an >applet parameter, or in an application resource file: >java.naming.factory.initial >.... > >and if I'm running the same code with initial context set as: > >import java.sql.*; >import javax.naming.*; >import java.util.*; >import com.ibm.db2.jdbc.app.UDBDataSource; >public class UDBDataSourceExample1 >{ > public static void main(java.lang.String[] args) > throws Exception > { > UDBDataSource ds = new UDBDataSource(); > ds.setDescription("Basic DataSource"); > System.out.println("dataSource created"); > Hashtable env = new Hashtable(); > env.put(Context.INITIAL_CONTEXT_FACTORY, > "com.sun.jndi.fscontext.RefFSContextFactory"); > env.put(Context.PROVIDER_URL, "file:/jdbc/DataSources"); > System.out.println("envelope created"); > > // Establish a JNDI context. > Context ctx = new InitialContext(env); > System.out.println("Context created"); > ctx.rebind("BaseDataSource", ds); > } >} >javax.naming.NameNotFoundException; remaining name >'"/jdbc/DataSources"' > java/lang/Throwable.<init>()V+4 (Throwable.java:78) > java/lang/Exception.<init>()V+1 (Exception.java:29) > javax/naming/NamingException.<init>()V+1 >(NamingException.java:112) > javax/naming/NameNotFoundException.<init>()V+1 >(NameNotFoundException.java 44... > >We are running V5R1 with all latest PTF installed and I run second >example with fscontext.jar included in class path >_______________________________________________ >This is the Java Programming on and around the iSeries / AS400 (JAVA400-L) >mailing list >To post a message email: JAVA400-L@midrange.com >To subscribe, unsubscribe, or change list options, >visit: http://lists.midrange.com/cgi-bin/listinfo/java400-l >or email: JAVA400-L-request@midrange.com >Before posting, please take a moment to review the archives >at http://archive.midrange.com/java400-l. > >_______________________________________________ >This is the Java Programming on and around the iSeries / AS400 (JAVA400-L) >mailing list >To post a message email: JAVA400-L@midrange.com >To subscribe, unsubscribe, or change list options, >visit: http://lists.midrange.com/cgi-bin/listinfo/java400-l >or email: JAVA400-L-request@midrange.com >Before posting, please take a moment to review the archives >at http://archive.midrange.com/java400-l. > > > > > --
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.