【问题标题】:Upgrading from WebLogic 12.1.3 to 12.2.1.4 breaks our application using Spring Framework 3.0.2从 WebLogic 12.1.3 升级到 12.2.1.4 会破坏我们使用 Spring Framework 3.0.2 的应用程序
【发布时间】:2021-08-21 19:55:33
【问题描述】:

我们公司要求我们从 Oracle WebLogic 12.1.3 升级到 12.2.1.4,因为 12.1.3 不再支持/停止支持。

我们有一个使用 Spring Framework v3.0.2 的主要应用程序。当我们将 EAR 部署到 12.2.1.4 并尝试使用任何 Web 服务时,我们会收到此错误堆栈跟踪。我已删除使用通用名称指定我们公司的名称,但您应该能够了解正在发生的事情的要点:

2021-06-02 15:21:50.019/27.406 Oracle Coherence GE 12.2.1.4.0(线程=[STANDBY] ExecuteThread: '10' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a):通过 ReST 配置的版本化、多集群管理 02.06.2021 15:22:11 - 尝试 getBean(“DefaultJBL”)时出错:在 URL [zip:C:/javadev/server/appserver.12.2.1.4/user_projects/domains/ 中定义名称为“DefaultJBL”的 bean 创建错误base_domain/servers/AdminServer/tmp/_WL_user/lasor/2wlg44/lib/Lasor_core-1.0.jar!/com/foo/app/corebuslogic/common/jbl/DefaultJBL.class]:初始化bean失败;嵌套异常是 org.springframework.aop.framework.AopConfigException: Unexpected AOP exception;嵌套异常是 java.lang.RuntimeException: java.lang.ClassNotFoundException: com.foo.app.corebuslogic.common.exceptions.LoggedException org.springframework.beans.factory.BeanCreationException:在 URL [zip:C:/javadev/server/appserver.12.2.1.4/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user 中定义的名称为“DefaultJBL”的 bean 创建错误/app/2wlg44/lib/App_core-1.0.jar!/com/foo/app/corebuslogic/common/jbl/DefaultJBL.class]:bean初始化失败;嵌套异常是 org.springframework.aop.framework.AopConfigException: Unexpected AOP exception;嵌套异常是 java.lang.RuntimeException: java.lang.ClassNotFoundException: com.aep.lasor.corebuslogic.common.exceptions.LoggedException 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 在 org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1045) 在 com.foo.util.FOOApplicationContext.fetchBean(FOOApplicationContext.java:203) 在 com.foo.app.buslogic.common.generic.GenericSessionBean.getBL(GenericSessionBean.java:293) 在 com.foo.app.buslogic.common.generic.GenericSessionBean.query(GenericSessionBean.java:97)

我也相信 API 是 12.1.3 中的 SOAP,但我看到 12.2.1.4 日志中指定了 REST。这可能是问题还是我读错了?

另外,这些类说它找不到我已经验证在 WebLogic 的部署区域中,所以我不确定为什么它找不到它们。

这里是代码抛出异常的地方,无论我传入什么 bean 名称,但它们都已被定义。该类是我们的 FOOApplicationContext,它实现了 org.springframework.context.ApplicationContextAware 并有一个 fetchBean 函数,它执行以下操作:

public static Object fetchBean(final String beanName) throws FOOException {
    Object object = null;

    if (beanName == null) {
        throw new FOOException("beanName is null");
    }

    try {
         object = currentSpringContext().getBean(beanName);
    } catch (Exception e) {
        final String message = "error trying to getBean('"" + beanName + "\"): " + e.getMessage();
        throw new FOOException(message, e);
    }

    return object;
}

在 WebLogic 12.1.3 下调用 getBean() 时,它可以工作。但是当在 WebLogic 12.4.1.2 下调用这个完全相同的函数时,它会抛出上面列出的 AOP 异常错误。没有代码更改等。不知道这是为什么。

我们尚未创建要部署到的实际服务器,但我已将其本地安装在我的开发机器上。我已经设置了数据库连接等,就像在本地安装 12.1.3 时一样。 Spring Framework 有什么变化吗?代码是 8 多年前编写的,我继承了对它的支持,现在我必须在今年年底之前让我们迁移到 WebLogic 12.2.1.4,这是一个非常重要的应用程序的主要部分。 WebLogic 应用程序包含所有业务逻辑和数据库访问,因此如果没有它,前端应用程序将一事无成。

此外,我们注册的 bean 都不会在 WebLogic 12.2.1.4 下实例化,但它可以在 12.1.3 下工作。我什至重新编译了 EAR 文件,它在 12.1.3 下工作,但在 12.2.1.4 下工作。

我发现 2 个未注册为 bean 的对象之间可能存在循环引用,但 bean 确实依赖于这些对象。所以这两个对象没有注册为 bean。不知道为什么这样做,但无论如何,这似乎不会在 12.1.3 中造成问题。但是其中一个对象 (FOOException) 出现在尝试在 FOOApplicationContext 对象中创建 DefaultJBL bean 时引发的错误中。

我不确定我还能提供什么。在互联网上搜索并没有找到解决我的问题的方法。我发现一些看起来好像他们会修复它,但结果却不适用。我似乎找不到其他人遇到此问题,但 Google 和 Duck Duck Go 都找到了各种不适用于我的情况的“解决方案”。

谢谢!

【问题讨论】:

    标签: spring weblogic


    【解决方案1】:

    ClassNotFound 异常,您可能需要更新与 Spring Framework 相关的依赖项

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多