我在项目中使用WSO2身份服务器进行身份验证和授权。
问题:
在Tomcat(所有版本)中,所有程序都工作正常,但是在谈到Weblogic时,我遇到了问题。我能够成功部署并按预期运行,但是当需要在Weblogic中更新war文件时,将引发以下异常。为了成功更新,我要么必须停止受管服务器,部署并启动应用程序,要么需要在更新后重新启动服务器。每次重新启动受管服务器似乎都不可行。
错误Stacktrace(来自Weblogic日志):
context_object_name = 'LR'
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”);
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
>
这是我猜出该问题的实际原因,但由于无法构建身份服务器的代码而无法注释/删除它
4)最后,我在Weblogic中为xerces创建了共享库。但是,它再次与另一个应用程序产生了问题,因为它将应用部署在同一托管服务器中的所有webapp。
我尽了一切可能,但没有运气。
任何人都已覆盖org.wso2.carbon.identity.sso.agent(1.2.0),或者知道如何执行此操作的任何来源?
据我所知,我猜这就是解决方案的方式。
答案 0 :(得分: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文件夹。
希望这会对您有所帮助。