【问题标题】:Cannot set WrapTypes using wlconfig for JDBCConnectionPool无法使用 wlconfig 为 JDBCConnectionPool 设置 WrapTypes
【发布时间】:2026-02-03 23:35:02
【问题描述】:

我使用 ant 脚本创建了 JDBC 连接池。

<target name="create-cmifs-connpool">
    <wlconfig username="${user}" password="${password}" url="${wls.url}">
        <query domain="${domain.name}" type="Server" name="${servername}" property="x" />
        <create type="JDBCConnectionPool" name="cmifsDBPool">
            <set attribute="CapacityIncrement" value="1"/>
            <set attribute="DriverName" value="oracle.jdbc.OracleDriver"/>
            <set attribute="InitialCapacity" value="1"/>
            <set attribute="MaxCapacity" value="10"/>
            <set attribute="Password" value="${env.DB_PWD}"/>
            <set attribute="Properties" value="user=${env.DB_USER}"/>
            <set attribute="RefreshMinutes" value="0"/>
            <set attribute="ShrinkPeriodMinutes" value="15"/>
            <set attribute="ShrinkingEnabled" value="true"/>
            <set attribute="TestConnectionsOnRelease" value="false"/>
            <set attribute="TestConnectionsOnReserve" value="false"/>
            <set attribute="TestTableName" value="DUAL"/>
            <set attribute="URL" value="jdbc:oracle:thin:@${env.MACHINE}:1521:NOTXE"/>
            <set attribute="Targets" value="${x}" />
        </create>

        <create type="JDBCDataSource" name="cmifsDBDS" >
            <set attribute="JNDIName" value="jdbc/cmifsDBDS"/>
            <set attribute="PoolName" value="cmifsDBPool"/>
            <set attribute="Targets" value="${x}" />
        </create>

    </wlconfig>
</target>

一切正常,直到我尝试从数据库中检索一个数组。我收到以下错误:

java.lang.ClassCastException: weblogic.jdbc.wrapper.Array_oracle_sql_ARRAY cannot be cast to oracle.sql.ARRAY

我在这个link 中得到了这个问题的解决方案,它说连接池的 Wrap Data Types 应该设置为 false。这解决了问题。 但是当我尝试将属性添加到我的 ant 脚本时

<set attribute="WrapTypes" value="false"/>

它不起作用。我收到以下错误:

Error invoking MBean command: java.lang.IllegalArgumentException: Property Name and value not valid for the MBean. Value false for parameter[WrapTypes].java.lang.IllegalArgumentException: Unable to find the attribute: WrapTypes in the attribute list of the class: JDBCConnectionPool

如何解决这个问题?

【问题讨论】:

    标签: weblogic11g


    【解决方案1】:

    在这种情况下,您似乎使用了通用接口并且脚本执行器不理解供应商特定的标志。尝试使用具体类型。可能是 weblogic.jdbc.common.internal.ConnectionPool 会对你有所帮助。

    【讨论】: