1.普通数据源(javax.sql.DataSource)
在 context.xml 中,添加如下内容即可完成数据源创建:
<Resource
name="ctx_not_xa"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
type="javax.sql.DataSource"
username="user"
password="pwd"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@168.1.50.20:1521:orcl"
/>
注意,上述配置内容也可以添加到 server.xml 里面(在<GlobalNamingResources>节点下添加即可),如果是添加在 server.xml,则需要在 context.xml 中添加中转连接 <ResouceLink> 标签,此处省略,最后在应用中通过 jndi 服务使用配置的数据源:
Context ctx = new InitialContext();
Context envCtx = (Context) ctx.lookup("java:comp/env");
Object lookupDB = envCtx.lookup("ctx_not_xa");
DataSource ds = (DataSource) lookupDB;
Connection connection = ds.getConnection();
2.XA数据源(javax.sql.XADataSource)
在 context.xml 中,
添加如下内容即可完成 XA 数据源创建:
<Resource
name="ctx_xa"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
type="javax.sql.XADataSource"
username="user"
password="pwd"
dataSourceJNDI="real_XA_ds"
/>
<Resource
name="real_XA_ds"
factory="org.apache.tomcat.jdbc.naming.GenericNamingResourcesFactory"
type="oracle.jdbc.xa.client.OracleXADataSource"
URL="jdbc:oracle:thin:@168.1.50.20:1521:orcl"
/>
注意,上述 ctx_xa 资源,引用了 real_XA_ds 资源,注意此处使用的是 相对路径!!!
另外注意:此处 real_XA_ds 资源的 “URL”是大写的,因为我配置的oracle数据源的“oracle.jdbc.xa.client.OracleXADataSource”实现类要求的,所以这里的“URL”是与具体的数据库实现相关的,如果使用了不同的数据,这里的配置可能是不同的,请务必注意!!!
注意,上述配置内容也可以添加到 server.xml 里面(在<GlobalNamingResources>节点下添加即可),如果是添加在 server.xml,则需要在 context.xml 中添加中转连接 <ResouceLink> 标签,此处省略,最后在应用中通过jndi服务使用配置的数据源:
Context ctx = new InitialContext();
Context envCtx = (Context) ctx.lookup("java:comp/env");
Object lookupXADB = envCtx.lookup("ctx_xa");
XADataSource xa_ds = (XADataSource) lookupXADB;
XAConnection xaConnection = xa_ds.getXAConnection();
System.out.println(xaConnection);
Connection conn = xaConnection.getConnection();
结束!