【发布时间】:2023-08-04 05:04:01
【问题描述】:
在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 in 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>
【问题讨论】:
-
请编辑您的问题以指定您正在使用的 db2jcc*.jar 的确切版本,以及 DB2 服务器上
db2level命令的纯文本输出。当前版本支持连接属性ApplicationName字符串(最多 255 个字符) -
db2level: command not found `` `` db2ls Install Path Level Fix Pack Special Install Number Install Date Installer UID -------------------- -------------------------------------------------- ----------------------------------------------------------- /opt/ xxx/db2/V11.1 11.1.1.1 1 周五 8 月 23 日 xx:xx:xx 2019 CEST 0
标签: java db2 datasource tomcat9 db2-luw