db2 在数据源中设置客户端程序名称

jei2mxaa  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(162)

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");
因为我想看看
APPLICATION_NAME中的MyApplication
当我跑步时
SELECT APPLICATION_NAME FROM TABLE(MON_GET_CONNECTION(CAST(NULL AS BIGINT),-2))
还是有其他办法?
如果我使用javax.sql.DataSource程序工作,但我不能使用setClientProgramName
在美芬·庞:

<dependency>
        <groupId>com.ibm.db2</groupId>
        <artifactId>jcc</artifactId>
        <version>11.5.7.0</version>
    </dependency>
gj3fmq9x

gj3fmq9x1#

Client info properties support by the IBM Data Server Driver for JDBC and SQLJ

ApplicationName
ClientAccountingInformation
ClientHostname
ClientUser

以上链接中提到的这些属性不能用URL设置。
它们可以使用JDBC 4方法(使用db2jcc4.jar,而不是JDBC 3实现的db2jcc.jarsetClientInfo进行设置,如下所示:

conn = ds.getConnection();
conn.setClientInfo("ApplicationName", "MyApplication");

相关问题