0

我正在将 Java EE 应用程序从 Oracle 10g 应用服务器移植到 Oracle 11g Weblogic 服务器。

我有一个 common.jar,其中包含与 Connection 相关的类并存在于 war/web-inf/lib 中。该应用程序被部署为 EAR,并且 ejb 还引用 common.jar 中的类以获取 DB Connection。EJB 无法在运行时获取对这些类的引用。我复制了 APP-INF/lib 目录中的 common.jar,在这种情况下,JSP 无法获取对 Connection 相关类的引用。我有jsp,其中嵌入了sql代码。此应用程序是在很久以前开发的,现在没有业务知识更改这些代码。

我该如何解决这个问题?ejb 如何获得对位于 war/web-inf/lib 中的类的引用。

4

1 回答 1

0

您不能让 EJB 查看类的 WAR WEB-INF/lib。这违背了Weblogic 的Classloader Hierarchy

将普通jar放在APP-INF/lib中才是正确的做法

WebLogic Server 在 EAR 文件中提供了一个位置,您可以在其中存储共享实用程序类。将实用程序 JAR 文件放在 APP-INF/lib 目录中,将各个类放在 APP-INF/classes 目录中。(不要将 JAR 文件放在 /classes 目录中或将类放在 /lib 目录中。)这些类被加载到应用程序的根类加载器中。

当 JSP 无法加载这些错误时,您还可以发布错误吗?是这些ClassNotFoundException还是NoClassDefFoundError别的什么?

另请参阅使用共享 Java EE 库的最佳实践

于 2011-08-25T08:39:03.977 回答