Weblogic类加载器问题

huangapple 未分类评论71阅读模式
英文:

Weblogic classloader issue

问题

我在Weblogic类加载器方面遇到了问题。

当我尝试在WL 12.2.1.2.0上部署我的应用时,它失败了。
在我的服务器日志中,我看到:

java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal

这个类属于xml-apis库。该库通过另一个依赖项进入我的应用程序(因此是传递性依赖项)。xml-apis的版本是1.4.01。

之后,我在我的部署描述符中添加了异常:

<container-descriptor>
    <prefer-application-packages>
        <package-name>org.w3c.dom.*</package-name>
    </prefer-application-packages>
</container-descriptor>

然后进行了新的部署。关于org.w3c.dom.ElementTraversal的描述问题得到了解决。不再有关于缺少org.w3c.dom.ElementTraversal类的任何信息。

但是出现了一个新问题:
java.lang.ClassNotFoundException: org.w3c.dom.Document

经过分析,我发现org.w3c.dom.Document类来自JRE(jre/lib/rt.jar)。
所以在部署描述符中我说:

“如果我需要从org.w3c.dom.*包中获取内容,请从我的应用程序分发中加载”。现在存在这样的不一致性。

我曾想使用WL类加载器分析工具(CAT),但由于部署失败,这是不可能的。

从我的ear中排除xml-apisxerces库,我们在这里提到的方法没有帮助我。

有人有办法解决我的问题吗?

提前感谢您的回答。

英文:

I have a problem with Weblogic classloader.

When I try to deploy my app on WL 12.2.1.2.0 it fails.
In the logs on my server I see

java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal

The class belongs to xml-apis library. The library comes into my app with another dependency(so as transitive dependency). The version of xml-apis is 1.4.01.

After that I added exception in my deployment descriptor:

&lt;container-descriptor&gt;
    &lt;prefer-application-packages&gt;
        &lt;package-name&gt;org.w3c.dom.*&lt;/package-name&gt;
    &lt;/prefer-application-packages&gt;
&lt;/container-descriptor&gt;

And later a new deployment. The described issue with org.w3c.dom.ElementTraversal was solved. There is no any information about missing org.w3c.dom.ElementTraversal class anymore.

But there is a new issue:
java.lang.ClassNotFoundException: org.w3c.dom.Document

After analysis I figured out that org.w3c.dom.Document class comes from JRE(jre/lib/rt.jar).
So in deployment descriptor I've said:

"if I need something from org.w3c.dom.* package - please load it from my app distribution". And now there is such inconsistency.

I've had idea to use WL Classloader Analysis Tool(CAT) but it is impossible because the deploy was failed.

Excluding xml-apis and xerces libraries from my ear we mentioned here didn't help me.

Does anybody have idea how to solve my problem?

Thanks in advance for your answers.

答案1

得分: 0

从我的EAR中排除xercexImpl库,而不更改部署描述符,解决了我的问题。在新部署期间提到的类是从WL分发中加载的。

英文:

Excluding xercexImpl library from my EAR without changing the deployment descriptor was solved my problem. Mentioned classes during new deployment were loaded from WL distribution.

huangapple
  • 本文由 发表于 2020年4月10日 19:29:08
  • 转载请务必保留本文链接:https://java.coder-hub.com/61139350.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定