Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml ¿;为什么Spring安全配置在WebSphereApplicationServer上生成cvc复杂类型.2.4.c?_Xml_Spring Security_Configuration_Websphere - Fatal编程技术网

Xml ¿;为什么Spring安全配置在WebSphereApplicationServer上生成cvc复杂类型.2.4.c?

Xml ¿;为什么Spring安全配置在WebSphereApplicationServer上生成cvc复杂类型.2.4.c?,xml,spring-security,configuration,websphere,Xml,Spring Security,Configuration,Websphere,我已经为这个问题挣扎了几个星期。我有一些我最近从4迁移到Spring5的遗留代码。代码在localhost上运行良好,但在上载到WebSphereApplicationServer时会严重崩溃 错误如下所示: https\://www.springframework.org/schema/security/spring-security.xsd=org/springframework/security/config/spring-security-5.2.xsd https\://www.spr

我已经为这个问题挣扎了几个星期。我有一些我最近从4迁移到Spring5的遗留代码。代码在localhost上运行良好,但在上载到WebSphereApplicationServer时会严重崩溃

错误如下所示:

https\://www.springframework.org/schema/security/spring-security.xsd=org/springframework/security/config/spring-security-5.2.xsd
https\://www.springframework.org/schema/security/spring-security-5.2.xsd=org/springframework/security/config/spring-security-5.2.xsd
http\://www.springframework.org/schema/security/spring-security-5.1.xsd=org/springframework/security/config/spring-security-5.1.xsd
...
http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security.xsd
错误页面异常

SRVE0260E:服务器无法使用为应用程序指定的错误页面来处理下面打印的原始异常。

原始异常:

错误消息:javax.servlet.ServletException:Filter[springSecurityFilterChain]:无法初始化

错误代码:500

目标Servlet:main

错误堆栈:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:文件[/opt/IBM/WebSphere/AppServer/profiles/********/installedApps/***********/*****.ear/*****.war/WEB-INF/classes/spring/spring security.xml]中的xml文档第8行无效;嵌套异常为org.xml.sax.SAXParseException:cvc复杂类型。2.4.c:匹配的通配符是严格的,但找不到元素“http”的声明。

在堆栈等

我已经调查这件事一个星期了,我想我已经试过了所有的嫌疑犯

  • 我在Maven依赖项中使用相同版本(5.2.0)的所有Spring模块
  • 我确实有spring安全配置作为依赖项
  • 我已经检查了打包的应用程序。我的
    .ear
    包括我的
    .war
    ,它在其
    WEB-INF/lib
    文件夹中依次包括
    spring security config.jar
奇怪的是,我尝试从耳朵中删除spring-security-config.jar,但错误仍然是一样的。然后我开始怀疑spring-beans.xsd的定义。我已经编写了一个简单的脚本来输出我的第一级依赖项上的所有打包文件(没有可传递的dep),但是只有一个
springbean.xsd
和一个
springsecurity.xsd

因为这个问题只存在于WebSphereApplicationServer上,所以我尝试先将classloader配置为使用本地类,以防spring的某些服务器端版本弄乱了我的软件。这对结果没有任何影响

下面是我的
spring security.xml
config文件的样子:



任何帮助都将不胜感激。

在Spring Security 5.2.0版中,Spring Security config.jar/META-INF/Spring.schemas中描述的XSD模式转换如下:

https\://www.springframework.org/schema/security/spring-security.xsd=org/springframework/security/config/spring-security-5.2.xsd
https\://www.springframework.org/schema/security/spring-security-5.2.xsd=org/springframework/security/config/spring-security-5.2.xsd
http\://www.springframework.org/schema/security/spring-security-5.1.xsd=org/springframework/security/config/spring-security-5.1.xsd
...
http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security.xsd
新模式和无版本指针现在只能通过HTTPS寻址

我的问题的解决方案是将我的所有架构位置设置为如下所示:

https\://www.springframework.org/schema/security/spring-security.xsd=org/springframework/security/config/spring-security-5.2.xsd
https\://www.springframework.org/schema/security/spring-security-5.2.xsd=org/springframework/security/config/spring-security-5.2.xsd
http\://www.springframework.org/schema/security/spring-security-5.1.xsd=org/springframework/security/config/spring-security-5.1.xsd
...
http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security.xsd
第二部分指向一个
https
协议URL

这一点在随后的SpringSecurity版本中也有描述并得到了解决,但我花了一周时间才弄明白其中的微妙之处