首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Weblogic类加载

Weblogic类加载
EN

Stack Overflow用户
提问于 2018-05-31 11:06:01
回答 2查看 1.3K关注 0票数 4

我们在类装载方面有一个很大的问题。

我们试图做一个简单的JNDI查找,我们看到了以下异常:

代码语言:javascript
复制
Caused By: java.lang.ClassNotFoundException: weblogic.rmi.internal.StubInfoIntf
        at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:1029)
        at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:990)
        at weblogic.utils.classloaders.GenericClassLoader.doFindClass(GenericClassLoader.java:611)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:543)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:496)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:473)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at weblogic.utils.classloaders.GenericClassLoader.defineClassInternal(GenericClassLoader.java:1113)
        at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:1046)
        at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:1038)
        at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:990)
        at weblogic.utils.classloaders.GenericClassLoader.doFindClass(GenericClassLoader.java:611)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:543)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:496)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:473)
        at weblogic.rmi.internal.StubGenerator.getStubClass(StubGenerator.java:821)
        at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:848)
        at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:843)
        at weblogic.rmi.extensions.StubFactory.getStub(StubFactory.java:73)
        at weblogic.rmi.internal.StubInfo.resolveObject(StubInfo.java:410)
        at weblogic.rmi.internal.StubInfo.readResolve(StubInfo.java:332)
        at sun.reflect.GeneratedMethodAccessor39.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1148)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2036)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
        at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.readObject(RemoteBusinessIntfProxy.java:231)
        at sun.reflect.GeneratedMethodAccessor2058.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2136)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2027)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2245)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2125)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2027)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
        at weblogic.rmi.extensions.server.CBVInputStream.readObject(CBVInputStream.java:64)
        at weblogic.jndi.internal.JNDIHelper.copyObject(JNDIHelper.java:42)
        at weblogic.jndi.WLSJNDIEnvironmentImpl.copyObjectViaSerialization(WLSJNDIEnvironmentImpl.java:57)
        at weblogic.jndi.internal.JNDIEnvironment$ProxyCopier.copyObject(JNDIEnvironment.java:209)
        at weblogic.jndi.internal.JNDIEnvironment.copyObject(JNDIEnvironment.java:51)
        at weblogic.jndi.internal.WLEventContextImpl.copyObject(WLEventContextImpl.java:433)
        at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:308)
        at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:435)
        at javax.naming.InitialContext.lookup(InitialContext.java:417)

现在,这个类:weblogic.rmi.internal.StubInfoIntf位于weblogic.rmi.internal.StubGenerator所在的同一个jar中。(一个明显被发现,另一个没有)

我将以下jar添加到%DOMAIN%/lib中: wlthint3client.jar

这包含了缺少的类,但没有帮助。

NOTE1:

必须指出的是,

代码语言:javascript
复制
weblogic.rmi.internal.StubGenerator.getStubClass(StubGenerator.java:821)

实际上,是否使用不同的类加载器启动查找,这可能解释为什么找不到该类,但我还需要在哪里放置jar,或者应该如何配置weblogic类加载才能工作呢?

NOTE2

我在服务器上查找了包含weblogic.rmi.internal.StubGenerator的所有jars。我猜想可能有一个奇怪的jar版本在wlthint3client.jar之前加载,并且是在中间件或其他什么地方造成问题的。我发现了4个罐子,所有这些都包含了两个类。

NOTE3

沿着这条线..。堆栈跟踪的一个特定部分将我引向以下代码片段:

代码语言:javascript
复制
 private static Class getStubClass(StubInfo info, ClassLoader cl) {
        Class c;
        try {
            c = cl.loadClass(info.getStubName());
        } catch (ClassNotFoundException var4) {
            c = hotCodeGenClass(info, cl);
        }

        return c;
    }

这难道不意味着ClassNotFoundException应该被捕获吗?我之所以问这个问题,是因为我在互联网上看到了几个bug在搜索原因,而我也看到了很多hotCodeGenClass被调用的原因。但从来没有在我们自己的垃圾堆里。这让我觉得我们用的是不同的罐子。

Weblogic版本: 12.2.1.3

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-04 06:15:29

我终于找到了这个问题:

基本上与以下内容相同:

https://issues.liferay.com/browse/LPS-67662?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel

只需相应地将jndi替换为rmi即可。

票数 0
EN

Stack Overflow用户

发布于 2018-05-31 12:13:17

  1. 抛出的异常是NoClassDefFoundError,而不是ClassNotFoundException,这就是为什么在该代码块中未捕获的原因
  2. Weblogic中的JNDI查找如何抛出NoClassDefFoundError,在您的Weblogic服务器中有什么不好的地方
  3. 我建议您不要试图修复Weblogic中的类加载问题,而是安装一个干净的新版本,然后再试一次
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50622873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档