我们开始看到我们的一个应用程序出现问题,错误跟踪如下。
"org. xml. sax. SAX解析异常:模式参考4:读取架构文档""失败,因为1)找不到该文档;2)文件无法读取;3)文档的根元素不是xsd:schema。"
由堆栈跟踪引起的为:
"导致原因:java. io.文件未找到异常:http://www.springframework.org/schema/security/spring-security.xsd"
虽然在config/code/infra级别没有部署任何变更,但在xml文件中声明了spring-security. xsd,该文件多年来一直以这种方式运行,突然服务无法启动,并出现上述错误。
http://www.springframework.org/schema/securityhttp://www.springframework.org/schema/security/spring-security.xsd
当转到位置http://www.springframework.org/schema/security时,我们发现不存在没有版本的spring-security. xsd,我们通过将URL更新为版本来修复此问题。但我们不确定为什么今天在没有任何应用程序更改的情况下突然出现此问题,spring是否从http://www.springframework.org/schema/security中删除了spring-security. xsd或我们遗漏的其他内容?如果是,它可能会影响任何此类应用程序访问非版本安全xsd通过url.
注:如果我们检查其他模块,如mvc、http://www.springframework.org/schema/mvc/,我们可以看到非版本化xsd也存在http://www.springframework.org/schema/mvc/spring-mvc.xsd以及版本。可以看到安全模块在2023年2月20日更新http://www.springframework.org/schema/security/,但正在寻找关于停止/删除非版本化spring-security xsd的任何通知/公告。还可以看到2月19日归档快照包含此xsd https://web.archive.org/web/20230218090058/http://www.springframework.org/schema/security/
1条答案
按热度按时间nzrxty8p1#
Spring Security 5.2的早期版本存在一个问题,其打包的架构缺少http版本。请更新您的Spring Security版本或更新您的xml以声明https版本https://www.springframework.org/schema/security/spring-security.xsd
然后它将从应用程序中的jar正确加载。
https://github.com/spring-projects/spring-security/pull/7623