c2中oracle数据源连接并修改数据
第一步:修改tongweb.xml
<transaction-service name="UserTransaction" type="com.atomikos.icatch.jta.UserTransactionImp" transaction-factory="com.atomikos.icatch.jta.UserTransactionFactory"> <property name="transactionTimeout" value="300"/> </transaction-service> <jdbc-connection-pool link-name="jdbc/DataSource" name="jdbc/DataSource" is-xa="true" > <xa type="com.atomikos.jdbc.AtomikosDataSourceBean" listener="com.atomikos.tongweb.AtomikosLifecycleListener"> <property name="uniqueResourceName" value="jdbc/DataSource"/> <property name="xaDataSourceClassName" value="oracle.jdbc.xa.client.OracleXADataSource"/> <property name="xaProperties.user" value="liyin"/> <property name="xaProperties.password" value="liyin"/> <property name="maxPoolSize" value="200"/> <property name="xaProperties.URL" value="jdbc:oracle:thin:@10.10.87.13:1521:xe"/> <property name="factory" value="com.atomikos.tongweb.EnhancedTongWebAtomikosBeanFactory"/> </xa> </jdbc-connection-pool>
如下为完整实例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <tongweb> <apps> <web-app delegate="true" vs-names="localhost" context-root= "/webdemo" app-root="webdemo.war" caching-allowed="true" cache-ttl="5000" cache-object-max-size="1" cache-max-size="2000" deploy-order="100" session-cookie-path="/"> </web-app> </apps> <server shutdown-port="8006"> <web-container> <virtual-host name="localhost" accesslog-enabled="false" app-base="autodeploy" auto-deploy="true"> <!-- <valve clazz="com.tongweb.container.valves.RemoteIpValve">--> <!-- <property name="trustedProxies" value="0:0:0:0:0:0:0:1|::1"/>--> <!-- </valve>--> </virtual-host> <!-- <http-listener name="https" port="8443" io-mode="nio" ssl-enabled="true" http2-enabled="true"> <ssl keystore-file="conf/ssl/tongweb.keystore" keystore-pass="xxxxxx" keystore-type="JKS" client-auth="false" truststore-file="conf/ssl/tongweb.keystore" truststore-pass="xxxxxx" truststore-type="JKS" /> </http-listener>--> <!-- <http-listener name="https" port="8444" io-mode="nio" ssl-enabled="true"> <ssl ssl-protocol="GMSSLv1.1" keystore-type="PKCS12" keystore-file="conf/ssl/sm2.enc.pfx" keystore-pass="xxxxxx" truststore-file="conf/ssl/sm2.sig.pfx" truststore-pass="xxxxxx" truststore-type="PKCS12" /> </http-listener>--> <http-listener port="8088" io-mode="nio"> </http-listener> </web-container> <monitor-service monitoring-enabled="false"> <monitor-config name="Memory" monitoring-enabled="false"/> <monitor-config name="JVMMemoryPool"/> <monitor-config name="GarbageCollector"/> <monitor-config name="JVMThread"/> <monitor-config name="Compilation"/> <monitor-config name="ClassLoading"/> <monitor-config name="Runtime"/> <monitor-config name="OperatingSystem"/> <monitor-config name="TWServer"/> <monitor-config name="ConnectorAndThreadPool"/> <monitor-config name="DataSource"/> <monitor-config name="WebModule"/> <monitor-config name="SessionManager"/> <monitor-config name="Loader"/> <monitor-config name="ResourceCache"/> <monitor-config name="Request"/> </monitor-service> <transaction-service name="UserTransaction" type="com.atomikos.icatch.jta.UserTransactionImp" transaction-factory="com.atomikos.icatch.jta.UserTransactionFactory"> <property name="transactionTimeout" value="300"/> </transaction-service>
< <jdbc-connection-pool link-name="jdbc/DataSource" name="jdbc/DataSource" is-xa="true" > <xa type="com.atomikos.jdbc.AtomikosDataSourceBean" listener="com.atomikos.tongweb.AtomikosLifecycleListener"> <property name="uniqueResourceName" value="jdbc/DataSource"/> <property name="xaDataSourceClassName" value="oracle.jdbc.xa.client.OracleXADataSource"/> <property name="xaProperties.user" value="liyin"/> <property name="xaProperties.password" value="liyin"/> <property name="maxPoolSize" value="200"/> <property name="xaProperties.URL" value="jdbc:oracle:thin:@10.10.87.13:1521:xe"/> <property name="factory" value="com.atomikos.tongweb.EnhancedTongWebAtomikosBeanFactory"/> </xa> </jdbc-connection-pool> <!-- <transaction-service name="UserTransaction" type="com.atomikos.icatch.jta.UserTransactionImp" transaction-factory="com.atomikos.icatch.jta.UserTransactionFactory"> <property name="transactionTimeout" value="300"/> </transaction-service> <jdbc-connection-pool link-name="jdbc/DS_MYSQL1" name="jdbc/DS_MYSQL1" is-xa="true" > <xa type="com.atomikos.jdbc.AtomikosDataSourceBean" listener="com.atomikos.tongweb.AtomikosLifecycleListener"> <property name="uniqueResourceName" value="jdbc/DS_MYSQL1"/> <property name="xaDataSourceClassName" value="com.mysql.cj.jdbc.MysqlXADataSource"/> <property name="xaProperties.databaseName" value="test1"/> <property name="xaProperties.serverName" value="localhost"/> <property name="xaProperties.port" value="3306"/> <property name="xaProperties.user" value="root"/> <property name="xaProperties.password" value="root"/> <property name="maxPoolSize" value="200"/> <property name="xaProperties.url" value="jdbc:mysql://localhost:3306/test1?characterEncoding=UTF8"/> <property name="factory" value="com.atomikos.tongweb.EnhancedTongWebAtomikosBeanFactory"/> </xa> </jdbc-connection-pool> <jdbc-connection-pool link-name="jdbc/DS_MYSQL2" name="jdbc/DS_MYSQL2" is-xa="true" > <xa type="com.atomikos.jdbc.AtomikosDataSourceBean" listener="com.atomikos.tongweb.AtomikosLifecycleListener"> <property name="uniqueResourceName" value="jdbc/DS_MYSQL2"/> <property name="xaDataSourceClassName" value="com.mysql.cj.jdbc.MysqlXADataSource"/> <property name="xaProperties.databaseName" value="test2"/> <property name="xaProperties.serverName" value="localhost"/> <property name="xaProperties.port" value="3306"/> <property name="xaProperties.user" value="root"/> <property name="xaProperties.password" value="root"/> <property name="maxPoolSize" value="200"/> <property name="xaProperties.url" value="jdbc:mysql://localhost:3306/test2?characterEncoding=UTF8"/> <property name="factory" value="com.atomikos.tongweb.EnhancedTongWebAtomikosBeanFactory"/> </xa> </jdbc-connection-pool>--> <!-- <jdbc-connection-pool link-name="jdbc/test_global" name="jdbc/test"--> <!-- jdbc-driver="com.mysql.cj.jdbc.Driver"--> <!-- jdbc-url="jdbc:mysql://xxxx:3306/xxxx?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai"--> <!-- user-name="xxxxx" password="xxxxx"--> <!-- initial-size="10" max-active="100" min-idle="10" max-wait-time="30000"--> <!-- validation-query="SELECT 1" validation-query-timeout="5" test-on-borrow="false"--> <!-- test-on-connect="false" test-on-return="false" test-while-idle="false"--> <!-- time-between-eviction-runs="60000" min-evictable-idle-time="60000" remove-abandoned="true"--> <!-- remove-abandoned-timeout="2"/>--> <!-- <security-service>--> <!-- <auth-realm name="defaultRealm" type="File" lock-enabled="true" failure-count="5" lock-out-time="300" cache-size="1000">--> <!-- <property name="UsersFile" value="twusers.properties"/>--> <!-- <property name="GroupsFile" value="twgroups.properties"/>--> <!-- </auth-realm>--> <!-- <auth-realm name="defaultRealm" type="SQL" lock-enabled="true" failure-count="5" lock-out-time="300" cache-size="1000">--> <!-- <property name="jdbcURL" value="jdbc:mysql://127.0.0.1:3306/test"/>--> <!-- <property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver"/>--> <!-- <property name="jdbcUser" value="root"/>--> <!-- <property name="jdbcPassword" value="123456"/>--> <!-- <property name="userSelect" value="SELECT user_name, user_pass FROM users WHERE user_name = ?"/>--> <!-- <property name="groupSelect" value="SELECT user_name, role_name FROM user_roles WHERE user_name = ?"/>--> <!-- </auth-realm>--> <!-- </security-service>--> </server> </tongweb>
第二部分 测试代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.sql.*" %> <%@ page import="javax.sql.DataSource" %> <%@ page import="javax.naming.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>tomcat数据源</title> </head> <body> <% Connection conn = null; DataSource ds = null; Statement stmt = null; Context context = null; ResultSet rs = null; try{ if(context==null){ context = new InitialContext(); } //检索对象 ds = (DataSource)context.lookup("java:comp/env/jdbc/DataSource"); //创建数据库连接 conn = ds.getConnection(); conn.setAutoCommit(false); //创建statment对象用来将sql语句送入数据库 stmt = conn.createStatement(); Statement stmt2 = conn.createStatement(); stmt2.executeUpdate("update TESTDATA set FOO=8888 where ID=1"); conn.commit(); String sql = "SELECT * from TESTDATA"; //执行sql语句 out.append("<table>"); //执行sql语句 rs = stmt.executeQuery(sql); //打印结果 while( rs.next() ) { out.append("<tr><td>").append(rs.getInt("id")+"").append("</td><td>") .append(rs.getString("FOO")).append("</td><td>") .append(rs.getString("BAR")).append("</td></tr>"); } out.append("</table>"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if (stmt != null ) stmt.close(); if (rs != null ) rs.close(); if (conn != null ) conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } %> </body> </html>