config\controller 新建文件testcontroller.xml
《具体关键的配置下面红色字体标出》
内容如下:
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE C-JDBC-CONTROLLER PUBLIC "-//ObjectWeb//DTD C-JDBC-CONTROLLER 2.0.2//EN" "http://c-jdbc.objectweb.org/dtds/c-jdbc-controller-2.0.2.dtd">
<C-JDBC-CONTROLLER>
<!-- ipAddress为当前系统的ip port为jdbc监听的端口 两个必填-->
<Controller port="25322" ipAddress="192.168.3.149" backlogSize="11">
<Report hideSensitiveData="true" generateOnShutdown="true" generateOnFatal="true" enableFileLogging="true" />
<JmxSettings>
<HttpJmxAdaptor port="8088"/>
</JmxSettings>
<!-- configFile为下面新建虚拟数据库的文件名称 virtualDatabaseName 是jdbc连接中url的数据库名称-->
<VirtualDatabase configFile="oracle_test.xml" virtualDatabaseName="testDB" autoEnableBackends="true" checkpointName="Initial_test_oracle_recovery_log" />
</Controller>
</C-JDBC-CONTROLLER>
config\virtualdatabase 新建oracle_test.xml
内容如下:
<?xml version="1.0" encoding="UTF8"?>
<!DOCTYPE C-JDBC PUBLIC "-//ObjectWeb//DTD C-JDBC 2.0.2//EN" "http://c-jdbc.objectweb.org/dtds/c-jdbc-2.0.2.dtd">
<C-JDBC>
<!-- 这里的 name 必须和 控制文件的virtualDatabaseName 一致-->
<VirtualDatabase name="testDB" maxNbOfConnections="0" poolThreads="true" minNbOfThreads="0" maxNbOfThreads="0" maxThreadIdleTime="60" sqlDumpLength="60">
<AuthenticationManager>
<Admin>
<User username="admin" password="admin"/>
</Admin>
<!-- 这里的 VirtualUsers就是jdbc连接中的用户名和密码-->
<VirtualUsers>
<VirtualLogin vLogin="test" vPassword="test"/>
</VirtualUsers>
</AuthenticationManager>
<!-- DatabaseBackend 就是真实的数据库配置-->
<DatabaseBackend name="db_153" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@192.168.3.121:1521:orcl11g" connectionTestStatement="select * from dual">
<!-- 如果是oracle DatabaseSchema 是必须的 schemaName 必须是大写的用户名 小写的一定不行 -->
<DatabaseSchema gatherSystemTables="false" schemaName="LIAOMIN" dynamicPrecision="table">
</DatabaseSchema>
<!--rLogin和rPassword表示真实的用户名和密码 vLogin 表示映射到上面VirtualUsers里面的vLogin-->
<ConnectionManager vLogin="test" rLogin="liaomin" rPassword="liaomin">
<RandomWaitPoolConnectionManager poolSize="40" timeout="30"/>
</ConnectionManager>
</DatabaseBackend>
<!--下面的同上面的配置 如果要集群 ConnectionManager 中的vLogin 都必须是一样的 表示相同的虚拟用户的操作会关联到这几个数据库中-->
<DatabaseBackend name="db_121" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@192.168.3.153:1521:orcl" connectionTestStatement="select * from dual">
<DatabaseSchema gatherSystemTables="false" schemaName="LIAOMIN" dynamicPrecision="table">
</DatabaseSchema>
<ConnectionManager vLogin="test" rLogin="liaomin" rPassword="liaomin">
<RandomWaitPoolConnectionManager poolSize="40" timeout="30"/>
</ConnectionManager>
</DatabaseBackend>
<!--
<DatabaseBackend name="db_101" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@192.168.10.101:1521:tian" connectionTestStatement="select * from dual">
<ConnectionManager vLogin="test" rLogin="liaomin" rPassword="liaomin">
<RandomWaitPoolConnectionManager poolSize="40" timeout="30"/>
</ConnectionManager>
</DatabaseBackend>
-->
<RequestManager>
<RequestScheduler>
<RAIDb-1Scheduler level="passThrough"/>
</RequestScheduler>
<RequestCache>
<MetadataCache/>
<ParsingCache/>
<ResultCache granularity="table" />
</RequestCache>
<LoadBalancer>
<RAIDb-1>
<WaitForCompletion policy="all"/>
<RAIDb-1-LeastPendingRequestsFirst/>
</RAIDb-1>
</LoadBalancer>
</RequestManager>
</VirtualDatabase>
</C-JDBC>
要确认数据库可以连接 否者会抛出
在cjdbc根目录新建批处理文件testrun.bat
内容如下 :
pushd %~dp0
set CJDBC_HOME=%CD%
set JAVA_HOME=E:\java\jdk6u30\jdk
%CD%/bin/controller.bat -f %CD%/config/controller/testcontroller.xml
将oracle连接的驱动 丢如 根目录/drivers下
运行testrun.bat
JAVA_HOME配置成jdk的路径
在java中连接字符的写法为
private static final String url = "jdbc:cjdbc://localhost:25322/testDB";
private static final String userName = "test";
private static final String pwd = "test";