数据源中的 setClientProgramName
setClientProgramName in DataSource
在tomcat9
中有一个设置在context.xml
中:
<Resource name="jdbc/db2xx" auth="Container"
type="javax.sql.DataSource" driverClassName="com.ibm.db2.jcc.DB2Driver"
maxTotal="100" maxIdle="30"
maxWaitMillis="-1" username="xx" password="xx"
url="jdbc:db2://xxxx:xxx/dbname;" />
在Java
中是:
try {
Class.forName("com.ibm.db2.jcc.DB2SimpleDataSource");
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
com.ibm.db2.jcc.DB2SimpleDataSource ds = (com.ibm.db2.jcc.DB2SimpleDataSource) envContext.lookup("jdbc/db2xx");
ds.setClientProgramName("MyApplication");
conn = ds.getConnection();
}
但是我得到错误:
java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp2.BasicDataSource cannot be cast to com.ibm.db2.jcc.DB2SimpleDataSource
我必须改变吗
org.apache.tomcat.dbcp.dbcp2.BasicDataSource
在哪里?
重点是
ds.setClientProgramName("MyApplication");
因为我想看
MyApplication
在 APPLICATION_NAME
当我运行
SELECT APPLICATION_NAME FROM TABLE(MON_GET_CONNECTION(CAST(NULL AS BIGINT),-2))
或者还有其他方法吗?
如果我使用 javax.sql.DataSource
程序可以,但我不能使用 setClientProgramName
。
在 maven pom 中:
<dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>jcc</artifactId>
<version>11.5.7.0</version>
</dependency>
Client info properties support by the IBM Data Server Driver for JDBC and SQLJ.
ApplicationName
ClientAccountingInformation
ClientHostname
ClientUser
上面link中提到的这些属性不能用URL设置。
它们可以使用 JDBC 4 方法设置(使用 db2jcc4.jar
,而不是 db2jcc.jar
,后者是 JDBC 3 的实现) setClientInfo
only 如下所示:
conn = ds.getConnection();
conn.setClientInfo("ApplicationName", "MyApplication");
在tomcat9
中有一个设置在context.xml
中:
<Resource name="jdbc/db2xx" auth="Container"
type="javax.sql.DataSource" driverClassName="com.ibm.db2.jcc.DB2Driver"
maxTotal="100" maxIdle="30"
maxWaitMillis="-1" username="xx" password="xx"
url="jdbc:db2://xxxx:xxx/dbname;" />
在Java
中是:
try {
Class.forName("com.ibm.db2.jcc.DB2SimpleDataSource");
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
com.ibm.db2.jcc.DB2SimpleDataSource ds = (com.ibm.db2.jcc.DB2SimpleDataSource) envContext.lookup("jdbc/db2xx");
ds.setClientProgramName("MyApplication");
conn = ds.getConnection();
}
但是我得到错误:
java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp2.BasicDataSource cannot be cast to com.ibm.db2.jcc.DB2SimpleDataSource
我必须改变吗
org.apache.tomcat.dbcp.dbcp2.BasicDataSource
在哪里? 重点是
ds.setClientProgramName("MyApplication");
因为我想看
MyApplication
在 APPLICATION_NAME
当我运行
SELECT APPLICATION_NAME FROM TABLE(MON_GET_CONNECTION(CAST(NULL AS BIGINT),-2))
或者还有其他方法吗?
如果我使用 javax.sql.DataSource
程序可以,但我不能使用 setClientProgramName
。
在 maven pom 中:
<dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>jcc</artifactId>
<version>11.5.7.0</version>
</dependency>
Client info properties support by the IBM Data Server Driver for JDBC and SQLJ.
ApplicationName
ClientAccountingInformation
ClientHostname
ClientUser
上面link中提到的这些属性不能用URL设置。
它们可以使用 JDBC 4 方法设置(使用 db2jcc4.jar
,而不是 db2jcc.jar
,后者是 JDBC 3 的实现) setClientInfo
only 如下所示:
conn = ds.getConnection();
conn.setClientInfo("ApplicationName", "MyApplication");