javax.xml.parsers.FactoryConfigurationError : Provider org. 找不到 apache.xerces.jaxp.DocumentBuilderFactoryImpl

标签 java weblogic wso2 wso2-identity-server

我在我的项目中使用 WSO2 身份服务器进行身份验证和授权。

问题:

在 Tomcat(所有版本)中一切正常,但在 Weblogic 中,我遇到了问题。我能够成功部署并按预期运行,但是当需要更新 Weblogic 中的 war 文件时,将抛出以下异常。为了成功更新,要么我必须停止托管服务器,部署并启动应用程序,要么我需要在更新后重新启动服务器。每次都重新启动托管服务器似乎不可行。

错误堆栈跟踪(来自 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) 在pom中添加了xerces

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 创建了共享库。但它又会与另一个应用程序产生问题,因为它将应用部署在同一托管服务器中的所有 Web 应用程序。

我尝试了所有可能的方法,但没有成功。

有人已经覆盖了 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 然后构建命令来检查其构建与否)

3) 直接从记事本中随意更改代码。

4)第二步

您将在 .m2 文件夹中获取更新的 jar。

希望对您有所帮助。

关于javax.xml.parsers.FactoryConfigurationError : Provider org. 找不到 apache.xerces.jaxp.DocumentBuilderFactoryImpl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56575645/

相关文章:

java - 混淆代码不起作用

java - 在嵌入式 Jetty 实例上运行的 JSP 页面中未解析 JSTL

java - java中的简单线程问题

java - 如何打开包并仅要求依赖于测试范围模块以进行 JUnit 测试

wso2 - 如何删除 WSO2 Identity Server 中的租户?

servlets - Weblogic 12.2.1.2 - websocket 端点 - 对此请求禁用异步支持

weblogic - 在 Weblogic JVM 中设置的自定义参数

java - Weblogic - 无法打开安装程序?

oauth-2.0 - 将 LDAP 组映射到本地 wso2 角色

http - 无法获取 http header