Sorry for this response : please do not cross-post to dev and user.. Stick to 
the user list..

Mvgr,
Martin

Saeed wrote:
> Dear JAVA-DBCP-UNIX Experts,
>   I'm my all-life Cobol guy. I have recently started working on Java side. I 
> apologize if I use improper java terminologies/terms. Currently I'm trying to 
> bring Oracle data in my Cobol programs through Java objects on SCO UNIX. 
>     
>    Firstly, I have written set of test (cobol/java) programs using jdbc to 
> access oracle db, which is working perfectly. I've read accessing oracle db 
> through jdbc call, which creates new connection for each user is time 
> consuming and costly.    
>    So finally, I modified & implemented my test bed with DBCP "share pool" of 
> open connections. And this approach is also working fine, accessing database 
> in my Cobol program successfully.
>    
>   ******************MY ENVIRONMENT******************
>   I'm running Cobol & Java programs (using JDK 1.4) on SCO UNIX, trying to 
> access Oracle db located on Windows server. MOST IMPORTANTLY, THERE IS NOT 
> ANY KIND OF JAVA APPLICATION SERVER or WEB SERVER on my platform. That means 
> I'm using COBOL/JAVA/DBCP (pooling concept) in standalone mode under UNIX.
>   ******************MY ENVIRONMENT******************
>    
>   Questions -
>   1. How can I know this connection pooling concept is working on my Unix 
> environment? It looks like the program is creating connections on each user's 
> call to db?
>   2. I need a strategy (if possible some utility) to confirm connection 
> pooling in my environment? how can i test this?
>   3. Since I'm not using any kind of application & web server, is this thing 
> fits under standalone platform like the one i described above? Am I using in 
> a right way?
>   4. When do you think I should call shutdownDataSource method?
>    
>   Your great help will be appreciated.
>   Best regards, Sayeed
>    
>   my config file ---
>   <properties>
>  <entry key="driverClassName">oracle.jdbc.driver.OracleDriver</entry>
>  <entry key="username">usernm</entry>
>  <entry key="password">usrpswd</entry>
>  <entry key="url">jdbc:oracle:thin:@host:1521:dbsid</entry>
>  <entry key="maxActive">50</entry>
>  <entry key="initialSize">5</entry>
>  <entry key="maxIdle">1</entry>
>  <entry key="maxWait">3000</entry>
>  <entry key="testOnBorrow">true</entry>
>  <entry key="validationQuery">select * from dual</entry> 
> </properties>
>    
>   my java file ...
>    
>   import java.io.IOException;
> import java.sql.Connection;
> import java.sql.ResultSet;
> import java.sql.SQLException;
> import java.sql.Statement;
> import java.util.Iterator;
> import java.util.List;
> import java.util.Properties;
>   import javax.sql.DataSource;
>   import org.apache.commons.dbcp.BasicDataSource;
> import org.jdom.Attribute;
> import org.jdom.Document;
> import org.jdom.Element;
> import org.jdom.JDOMException;
> import org.jdom.input.SAXBuilder;
> import org.xml.sax.helpers.DefaultHandler;
>   public class DataSourceTest {
>     // DefaultHandler contain no-op implementations for all SAX events.
>   // This class should override methods to capture the events of interest.
>   static class MyHandler extends DefaultHandler {
>   }
>     public static void main(String[] args) throws IOException, Exception {
>      // First we set up the BasicDataSource.
>       // Normally this would be handled auto-magically by
>       // an external configuration, but in this example we'll
>       // do it manually.
>       //
>       System.out.println("Setting up data source.");
>       DataSource dataSource = getDataSource();
>       System.out.println("Done.");
>       
>       System.out.println("Print Data Source Statistics.");
>       printDataSourceStats(dataSource);
>       //
>       // Now, we can use JDBC DataSource as we normally would.
>       //
>       Connection conn = null;
>       Statement stmt = null;
>       ResultSet rset = null;
>         try {
>           System.out.println("Creating connection.");
>           conn = dataSource.getConnection();
>           System.out.println("Creating statement.");
>           stmt = conn.createStatement();
>           System.out.println("Executing statement.");
>          // rset = stmt.executeQuery(args[1]);
>           rset = stmt.executeQuery("SELECT desc from tabdesc");
>           System.out.println("Results:");
>           int numcols = rset.getMetaData().getColumnCount();
>           while(rset.next()) {
>               for(int i=1;i<=numcols;i++) {
>                   System.out.print("\t" + rset.getString(i));
>               }
>               System.out.println("");
>           }
>           System.out.println("Print Data Source Statistics after open 
> connection.");
>           printDataSourceStats(dataSource);
>       } catch(SQLException e) {
>           e.printStackTrace();
>       } finally {
>           try { rset.close(); } catch(Exception e) { }
>           try { stmt.close(); } catch(Exception e) { }
>           try { conn.close(); } catch(Exception e) { }
>       }
>       System.out.println("Print Data Source Statistics after closing 
> connection.");
>       printDataSourceStats(dataSource);
>       System.out.println("Print Data Source Statistics after closing data 
> source.");
>       shutdownDataSource(dataSource);
>       printDataSourceStats(dataSource);
>       
>   }
>     public static DataSource getDataSource()throws IOException, Exception{
>       BasicDataSource bds = new BasicDataSource();
>       Properties datasourceProperties=new Properties();
>       DefaultHandler handler = new MyHandler();
>       parseConfigFile(datasourceProperties, "datasource-config.xml", handler, 
> false);
>       
> bds.setDriverClassName(datasourceProperties.getProperty("driverClassName"));
>       bds.setUsername(datasourceProperties.getProperty("username"));
>       bds.setPassword(datasourceProperties.getProperty("password"));
>       bds.setUrl(datasourceProperties.getProperty("url"));
>       bds.setMaxActive(new 
> Integer(datasourceProperties.getProperty("maxActive")).intValue());
>       bds.setInitialSize(new 
> Integer(datasourceProperties.getProperty("initialSize")).intValue());
>       bds.setMaxIdle(new 
> Integer(datasourceProperties.getProperty("maxIdle")).intValue());
>       bds.setMaxWait(new 
> Integer(datasourceProperties.getProperty("maxWait")).intValue());
>       bds.setTestOnBorrow(new 
> Boolean(datasourceProperties.getProperty("testOnBorrow")).booleanValue());
>       
> bds.setValidationQuery(datasourceProperties.getProperty("validationQuery"));
>       System.out.println("MAXActive: " + bds.getMaxActive());
>       System.out.println("MAXIdle: " + bds.getMaxIdle());
>         System.out.println("NumActive: " + bds.getNumActive());
>       System.out.println("NumIdle: " + bds.getNumIdle());
>       return bds;
>   }
>   public static void parseConfigFile(Properties datasourceProperties, String 
> filename, DefaultHandler handler, boolean validating) throws JDOMException, 
> IOException {
>    Document incomDoc =null;
>    SAXBuilder builder=null;
>    List childList=null; 
>     Element propItem=null;
>     String propItemKey=null;
>     String propItemVal=null;
>  Attribute attribute = null;
>       try {
>        builder = new SAXBuilder(false);
>        incomDoc = builder.build(filename);
>     
>     Element rootElement = incomDoc.getRootElement();
>     childList = rootElement.getChildren();
>       for (Iterator i = childList.iterator();i.hasNext();) {
>           propItem  = (Element)i.next();
>           attribute=propItem.getAttribute("key");
>     propItemKey = attribute.getValue();
>        propItemVal=propItem.getText();
>        datasourceProperties.setProperty(propItemKey, propItemVal);            
>  
>              }
>       } catch(Exception e)
>    {
>    e.printStackTrace();
>    }
>   }
>     public static void printDataSourceStats(DataSource ds) throws 
> SQLException {
>       BasicDataSource bds = (BasicDataSource) ds;
>       System.out.println("NumActive: " + bds.getNumActive());
>       System.out.println("NumIdle: " + bds.getNumIdle());
>   }
>     public static void shutdownDataSource(DataSource ds) throws SQLException {
>       BasicDataSource bds = (BasicDataSource) ds;
>       bds.close();
>   }
> }
> 
>    
> 
>        
> ---------------------------------
> Ahhh...imagining that irresistible "new car" smell?
>  Check outnew cars at Yahoo! Autos.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to