You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Mule Runtime至4.6.9时遭遇javax.xml.parsers.ParserConfigurationException

解决方案:Mule升级后javax.xml.parsers.ParserConfigurationException处理

问题根源

Mule Runtime 4.6.x升级了底层XML解析器组件,默认JAXP实现(DocumentBuilderFactory/SAXParserFactory)与Oracle XMLType所需的解析器不兼容;同时Mule Maven Plugin(MMP)4.x的构建系统属性传递逻辑和3.x不同,原Studio中配置的系统属性未同步到Maven构建流程,导致XMLType存储过程调用时解析器初始化失败。

分步解决

1. 强制指定Oracle兼容的JAXP解析器系统属性

在Maven构建和运行时,必须显式设置JAXP解析器为Oracle提供的实现,确保XMLType处理的兼容性。在pom.xml的MMP配置中添加系统属性:

<plugin>
    <groupId>org.mule.tools.maven</groupId>
    <artifactId>mule-maven-plugin</artifactId>
    <version>4.3.0</version>
    <configuration>
        <systemProperties>
            <!-- 指定Oracle JAXP解析器实现 -->
            <property>
                <name>javax.xml.parsers.DocumentBuilderFactory</name>
                <value>oracle.xml.jaxp.JXDocumentBuilderFactory</value>
            </property>
            <property>
                <name>javax.xml.parsers.SAXParserFactory</name>
                <value>oracle.xml.jaxp.JXSAXParserFactory</value>
            </property>
            <!-- 启用Oracle JDBC XML解析支持 -->
            <property>
                <name>oracle.jdbc.parseXML</name>
                <value>true</value>
            </property>
        </systemProperties>
    </configuration>
</plugin>

2. 调整依赖排除冲突的XML解析器

Mule 4.6.x自带的XML解析器可能与Oracle的XML依赖包冲突,需在Oracle JDBC依赖中排除冲突组件:

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc11</artifactId>
    <version>对应你的Oracle版本</version>
    <exclusions>
        <exclusion>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
        </exclusion>
        <exclusion>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 确保引入Oracle XMLType所需的依赖 -->
<dependency>
    <groupId>com.oracle.database.xml</groupId>
    <artifactId>xdb6</artifactId>
    <version>对应你的Oracle版本</version>
</dependency>
<dependency>
    <groupId>com.oracle.database.xml</groupId>
    <artifactId>xmlparserv2</artifactId>
    <version>对应你的Oracle版本</version>
</dependency>

3. 配置Mule权限允许访问JAXP类

Mule 4.6.x的安全管理器会限制类访问权限,需在mule-artifact.json中添加特权访问配置:

{
  "privilegedAccess": [
    {
      "resource": "javax.xml.parsers.*",
      "permission": "read"
    },
    {
      "resource": "oracle.xml.jaxp.*",
      "permission": "read"
    },
    {
      "resource": "oracle.xdb.XMLType",
      "permission": "read"
    }
  ]
}

4. 验证Spring Bean配置

确保Spring存储过程Bean中XMLType参数的类型声明正确,且数据源配置未遗漏XML相关属性:

<bean id="oracleDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@//host:port/service"/>
    <property name="username" value="your-user"/>
    <property name="password" value="your-pass"/>
</bean>

<bean id="xmlProcessingProcedure" class="org.springframework.jdbc.object.StoredProcedure">
    <property name="dataSource" ref="oracleDataSource"/>
    <property name="procedureName" value="PKG_XML.PROCESS_XML_DATA"/>
    <declare-parameters>
        <declare-parameter name="p_input_xml" type="oracle.xdb.XMLType" mode="IN"/>
        <declare-parameter name="p_output_result" type="java.lang.String" mode="OUT"/>
    </declare-parameters>
</bean>

验证步骤

  1. 执行mvn clean package构建应用,确认无ParserConfigurationException错误
  2. 部署到Mule Runtime 4.6.9,调用存储过程接口,验证XMLType参数能正常处理

内容的提问来源于stack exchange,提问作者andersoal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 15:23:08