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

xjc与jaxws-maven-plugin新版中accessExternalSchema是否仍适用?

Spring Boot 3升级中JAX-WS Maven插件参数问题解答

我们在将Spring Boot项目升级至Spring Boot 3时,同步将JAX-WS Maven Plugin依赖更新为Eclipse基金会托管的版本,当前使用的插件配置如下:

<plugin>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>4.0.1</version>
    <configuration>
        <xjcArgs>
            <xjcArg>-mark-generated</xjcArg>
        </xjcArgs>
         <encoding>UTF-8</encoding>
         <extension>true</extension>
         <!-- Needed with JAXP 1.5 -->
         <vmArgs>
             <vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
         </vmArgs>
     </configuration>
 </plugin>

针对以下两个问题解答如下:

1. -Djavax.xml.accessExternalSchema=all是否仍具有相关性?

是的,该参数目前仍有相关性:

  • Spring Boot 3基于Jakarta EE 9+,虽然API命名空间从javax迁移到jakarta,但当前使用的jaxws-maven-plugin 4.0.1(Eclipse托管版本)仍兼容旧的javax前缀系统参数。
  • JAXP的安全限制默认会阻止外部Schema文件的访问,若你的项目XSD包含外部引用,构建过程中xjc工具加载这些外部XSD时必须通过该参数放宽限制,否则会抛出权限异常。
  • 即使项目已切换到Jakarta API,只要xjc工具在处理Schema时依赖的底层JAXP实现仍遵循旧的安全配置逻辑,该参数就依然需要。

2. 该参数是否会在未来迁移/重命名为-Djakarta.xml.accessExternalSchema=all?

是的,该参数必然会完成迁移:

  • 随着Jakarta EE生态的全面演进,所有原javax前缀的系统参数都会逐步迁移到jakarta命名空间下。
  • 目前Eclipse托管的JAX-WS/JAXB工具已经开始支持jakarta前缀的该参数,建议现在就切换使用-Djakarta.xml.accessExternalSchema=all,避免后续插件版本升级时出现兼容性问题,同时也符合Jakarta EE的规范方向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:12:50