You can define a data source within your application, through annotations or in the deployment descriptor, as defined by the Java™ EE specification.
When defining a data source in an application, the JDBC driver must be made available to the application. This is accomplished by configuring a shared library in the server.xml for your application.
For example:
<application id="myApp" name="myApp" location="myApp.war" type="war">
<classloader commonLibraryRef="DB2Lib"/>
</application>
<library id="DB2Lib">
<fileset dir="C:/DB2/java" includes="db2jcc4.jar db2jcc_license_cisuz.jar"/>
</library>
Then, you can define a data source in your application either through annotations or in the deployment descriptor.
@DataSourceDefinition(
name = "java:comp/env/jdbc/db2",
className = "com.ibm.db2.jcc.DB2DataSource",
databaseName = "SAMPLEDB",
serverName = "localhost",
portNumber = 50000,
properties = { "driverType=4" },
user = "user1",
password = "pwd1"
)
public class MyServlet extends HttpServlet {
@Resource(lookup="java:comp/env/jdbc/db2")
DataSource ds;
<data-source>
<name>java:comp/env/jdbc/db2</name>
<class-name>com.ibm.db2.jcc.DB2DataSource</class-name>
<server-name>localhost</server-name>
<port-number>50000</port-number>
<database-name>SAMPLEDB</database-name>
<user>user1</user>
<password>pwd1</password>
<property><name>driverType</name><value>4</value></property>
</data-source>
Here is an example of two data sources using connection manager properties, variables, encoded passwords, and duration syntax.
@DataSourceDefinitions(value = {
@DataSourceDefinition(
name = "java:comp/env/jdbc/derby",
className = "org.apache.derby.jdbc.EmbeddedDataSource40",
databaseName = "${shared.resource.dir}/data/SAMPLEDB",
minPoolSize = 1,
maxPoolSize = 10,
maxIdleTime = 180,
properties = { "agedTimeout=10m", "connectionTimeout=30s", "createDatabase=create" }
),
@DataSourceDefinition(
name = "java:comp/env/jdbc/oracle",
className = "oracle.jdbc.pool.OracleDataSource",
url = "jdbc:oracle:thin:@//localhost:1521/SAMPLEDB",
user = "user1",
password = "{xor}Oz0vKDtt"
)
})