Using DODS with javax.sql.DataSource

DODS can use separate ConnectionAllocator implementation to support javax.sql.DataSource as database connections source for connection allocation (see "ConnectionAllocator" and "ConnectionFactory" parameters reference).

In case that DODS is configured to use DataSource then connection level parameters "Url", "User" and "Password" are sufficient. Parameters named "ClassType" and "JdbcDriver" are not mandatory (DODS will try collect this information's directly from DataSource and internal dodsConf.xml file) but this information's can be useful in situations when DODS don''t recognize specific driver/database.

DataSource is defined externally to DODS by some environment dependent mechanism (eg. inside Servlet/JSP Container ..) and DODS use JNDI api to access this object. DODS references DataSource by name that is defined in application configuration parameter called DataSourceName (see reference for "DataSourceName").

eg.

DatabaseManager.DB.<database_id>.Connection.DataSourceName = jndi:<DataSourceName>

Example of full configuration:

#-------------------------------------------------------------------
# Database Manager Configuration
#-------------------------------------------------------------------
DatabaseManager.Databases[]     = "<database_id>"
DatabaseManager.DefaultDatabase = "<database_id>"
DatabaseManager.Debug = "false"
DatabaseManager.DB.<database_id>.ClassType  = "<dbTypeName>"
DatabaseManager.DB.<database_id>.JdbcDriver = "<JdbcDriverClassName>"

DatabaseManager.DB.<database_id>.ConnectionAllocator 
                   = com.lutris.appserver.server.sql.datasource.DataSourceConnectionAllocator
DatabaseManager.DB.<database_id>.Connection.ConnectionFactory 
                   = com.lutris.appserver.server.sql.DataSourceDBConnectionFactory
DatabaseManager.DB.<database_id>.Connection.DataSourceName = jndi:<DataSourceName>

# not used with DataSource 
#   DatabaseManager.DB.<database_id>.Connection.Url = "jdbc:sybase:Tds:<hostname>.sybase.com:7100"
#   DatabaseManager.DB.<database_id>.Connection.User = "<name>"
#   DatabaseManager.DB.<database_id>.Connection.Password = "<password>"
# not used with DataSource 

DatabaseManager.DB.<database_id>.Connection.MaxPoolSize = "2"
DatabaseManager.DB.<database_id>.Connection.AllocationTimeout = "2"
DatabaseManager.DB.<database_id>.Connection.Logging = "true"
DatabaseManager.DB.<database_id>.Connection.MaxPreparedStatements = "2"
DatabaseManager.DB.<database_id>.ObjectId.CacheSize = 2
DatabaseManager.DB.<database_id>.ObjectId.MinValue = 1