org.apache.avalon.excalibur.datasource
Class InformixDataSource

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.avalon.excalibur.datasource.InformixDataSource
All Implemented Interfaces:
DataSourceComponent, org.apache.avalon.framework.component.Component, org.apache.avalon.framework.configuration.Configurable, org.apache.avalon.framework.logger.LogEnabled, org.apache.avalon.framework.thread.ThreadSafe

public class InformixDataSource
extends org.apache.avalon.framework.logger.AbstractLogEnabled
implements DataSourceComponent

The Informix implementation for DataSources in Excalibur. This uses the com.informix.jdbcx.IfxConnectionPoolDataSource object. It uses the following format for configuration (italics mark information you change):

   <informix>
     <pool-controller init="5" min="5" max="10"/>
     <dbname>dbname</dbname>
     <servername>servername</servername>
     <host port="2000">host</host>
     <user>user</user>
     <password>password</password>
     <tracing>
       <jdbc> file="filename" level="level"</jdbc>
       <sqli> file="filename" level="level"</sqli>
     </tracing>
   <informix>
 

Informix doesn't like the JdbcDataSource Component, so we gave it it's own. Do not use this datasource if you are planning on using your J2EE server's connection pooling.

You must have Informix's JDBC 2.2 or higher jar file, as well as the extensions jar file (ifxjdbc.jar and ifxjdbcx.jar). Also, this DataSource requires the Avalon Cadastre package because it uses the MemoryContext.

The tracing settings optionally enable Informix's tracing support within the jdbc driver. Note, for this to work, the ifxjdbc-g.jar and ifxjdbcx-g.jar jar files are required (the options have no effect when using the non -g jar files).

jdbc tracing enables general logging information about the driver itself. sqli tracing enables logging of native sqli messages sent between the jdbc driver and the database server.

The attribute file specifies where to write tracing information to, and level specifies the tracing level to be used, as documented in the Informix JDBC programmers guide.

Since:
4.0
Version:
CVS $Revision: 1.4 $ $Date: 2004/02/28 11:47:14 $
Author:
Avalon Development Team

Field Summary
private static boolean INIT_FACTORY
           
private  boolean m_autocommit
           
private  javax.sql.DataSource m_dataSource
           
 
Fields inherited from interface org.apache.avalon.excalibur.datasource.DataSourceComponent
ROLE
 
Constructor Summary
InformixDataSource()
          Set up the system property for the context factory if it hasn't been done already.
 
Method Summary
 void configure(org.apache.avalon.framework.configuration.Configuration conf)
          Set up the Informix driver for direct use.
private  void configureTracing(org.apache.avalon.framework.configuration.Configuration config)
          Helper method to enable tracing support in the Informix driver.
 java.sql.Connection getConnection()
          Return an Informix Connection object
private  java.lang.Object getInstance(java.lang.String className)
           
private  void setProperty(java.lang.Object obj, java.lang.String propertyName, java.lang.Object value)
           
 
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_dataSource

private javax.sql.DataSource m_dataSource

m_autocommit

private boolean m_autocommit

INIT_FACTORY

private static boolean INIT_FACTORY
Constructor Detail

InformixDataSource

public InformixDataSource()
Set up the system property for the context factory if it hasn't been done already. This is not done in a static initializer due to the existence of the J2eeDataSource.

Method Detail

getConnection

public java.sql.Connection getConnection()
                                  throws java.sql.SQLException
Return an Informix Connection object

Specified by:
getConnection in interface DataSourceComponent
Returns:
Connection a valid connection for you to use
Throws:
NoValidConnectionException - when there is no valid Connection wrapper available in the classloader.
NoAvailableConnectionException - when there are no more available Connections in the pool.
java.sql.SQLException

configure

public void configure(org.apache.avalon.framework.configuration.Configuration conf)
               throws org.apache.avalon.framework.configuration.ConfigurationException
Set up the Informix driver for direct use.

Specified by:
configure in interface org.apache.avalon.framework.configuration.Configurable
Throws:
org.apache.avalon.framework.configuration.ConfigurationException

configureTracing

private void configureTracing(org.apache.avalon.framework.configuration.Configuration config)
                       throws org.apache.avalon.framework.configuration.ConfigurationException
Helper method to enable tracing support in the Informix driver.

Parameters:
config - a Configuration value
Throws:
org.apache.avalon.framework.configuration.ConfigurationException - if an error occurs

getInstance

private java.lang.Object getInstance(java.lang.String className)
                              throws org.apache.avalon.framework.configuration.ConfigurationException
Throws:
org.apache.avalon.framework.configuration.ConfigurationException

setProperty

private void setProperty(java.lang.Object obj,
                         java.lang.String propertyName,
                         java.lang.Object value)
                  throws org.apache.avalon.framework.configuration.ConfigurationException
Throws:
org.apache.avalon.framework.configuration.ConfigurationException