[英]ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to javax.xml.parsers.DocumentBuilderFactory
[英]javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found
我在我的项目中使用WSO2身份服务器进行身份验证和授权。
问题:
在Tomcat(所有版本)中,一切都工作正常,但是谈到Weblogic时,我遇到了问题。 我能够成功部署并按预期运行,但是当需要在Weblogic中更新war文件时,将引发以下异常。 为了成功更新,我要么必须停止受管服务器,部署并启动应用程序,要么需要在更新后重新启动服务器。 每次重新启动受管服务器似乎都不可行。
错误Stacktrace(来自Weblogic日志):
javax.xml.parsers.FactoryConfigurationError: Provider
org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found
at javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:200)
at javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:152)
at javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:232)
at javax.xml.parsers.DocumentBuilderFactory.newInstance(DocumentBuilderF
actory.java:120)
at org.apache.beehive.netui.pageflow.internal.annotationreader.Processed
AnnotationParser.parse(ProcessedAnnotationParser.java:61)
Truncated. see log file for complete stacktrace
Caused By: java.lang.ClassNotFoundException:
org/apache/xerces/jaxp/DocumentBuilderFactoryImpl
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at javax.xml.parsers.FactoryFinder.getProviderClass(FactoryFinder.java:1
24)
at javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:188)
at javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:152)
Truncated. see log file for complete stacktrace
>
RND我所做的事情:(在我单独和一起尝试的步骤以下)
1)将软件包添加到weblogic.xml(org.apache。*)
2)将xerces添加到pom中
3)当我检查身份服务器的库时,发现了一个依赖关系,该依赖关系会导致问题,即org.wso2.carbon.identity.sso.agent版本1.2.0。 为此,当我调试所有类文件时,会发现:System.setProperty(“ javax.xml.parsers.DocumentBuilderFactory”,“ org.apache.xerces.jaxp.DocumentBuilderFactoryImpl”);
org.wso2.carbon.identity.sso.agent.saml.SAML2SSOManager.java (Line 719)
这是我猜出此问题的实际原因,但由于我无法构建身份服务器的代码而无法注释/删除它
4)最后,我在Weblogic中为xerces创建了共享库。 但是,它再次对另一个应用程序造成了问题,因为它将应用部署在同一托管服务器中的所有webapp。
我尝试了所有可能的方法,但是没有运气。
是否有人重写了org.wso2.carbon.identity.sso.agent(1.2.0),或者知道如何实现此目的?
据我所知,我猜这就是解决方案的方式。
您可以从github获取代码并执行以下步骤。
https://github.com/wso2-extensions/identity-agent-sso/tree/master/components
1)下载源代码
2)而不是与任何IDE集成(运行mvn clean然后使用build命令检查其构建)
3)直接从notpad更改代码,无论您想要什么。
4)步骤2
您将把更新的jar放入.m2文件夹。
希望这会帮助你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.