在我们的应用程序中,我们试图升级到Spring 2,我们使用的是SpringSecurity-saml2-core:1.0.4.RELEASE,在运行应用程序时我们得到了以下异常。看起来,在类路径上有两个JARxmltool1.4.6和opensaml 3.3.0,它们具有相同的文件default-config.xml。在本例中,类加载器碰巧将opensaml 3.3.0放在xmltool-1.4.6.jar之前,并且加载错误的default-config.xml。
<ObjectProviders>
<ObjectProvider qualifiedName="xt:DEFAULT">
<BuilderClass className="org.opensaml.core.xml.schema.impl.XSAnyBuilder"/>
<MarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyMarshaller"/>
<UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyUnmarshaller"/>
</ObjectProvider> </ObjectProviders>
java.lang.ClassCastException: org.opensaml.core.xml.schema.impl.XSAnyBuilder cannot be cast to org.opensaml.xml.XMLObjectBuilder
at org.opensaml.xml.XMLConfigurator.initializeObjectProviders(XMLConfigurator.java:236)
at org.opensaml.xml.XMLConfigurator.load(XMLConfigurator.java:182)
at org.opensaml.xml.XMLConfigurator.load(XMLConfigurator.java:166)
at org.opensaml.xml.XMLConfigurator.load(XMLConfigurator.java:143)
at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:203)
at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:186)
at org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:92)
at org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java:27)
at org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42).有人能帮上忙吗。请..。
发布于 2019-07-31 07:08:55
参考https://issues.shibboleth.net/jira/browse/OSJ-152
opensaml V2版本使用xmltooling.jar。
opensaml V3版本使用与xmltooling.jar不同的包名的opensaml-soap-impl.jar。
示例:
opensaml-soap-impl.jar使用-> org.opensaml.core.xml.XMLObjectBuilderxmltooling.jar使用-> org.opensaml.xml.XMLObjectBuilder根路径:您的类路径有v2和v3版本的opensaml。这就是classcast异常的原因。
解决方案:
理想情况下,您不需要同时拥有两个版本的opensaml。由于maven依赖关系管理,可能会意外发生这种情况。移除其中一个。
opensamlv2版本兼容,如果您不想升级,请将opesamlv3 jars排除如下。opensamlV2相关的jars。https://stackoverflow.com/questions/52557754
复制相似问题