WebLogic 11g 如何在 EAR 文件中加载库?我的 web 应用程序有这个问题,当部署为 WAR(它依赖于 WEB-INF/lib 中的库)时,它工作得很好。但是,当它位于 EAR 文件中时,WebLogic 找不到这些库,除非我将它们放在 APP-INF/lib 中。这是否意味着如果我作为 EAR 部署,我必须从 WEB-INF/lib 目录中提取所有 JAR 文件并将它们放在 APP-INF/lib 中?或者是否有可以在 WebLogic 中完成的配置来避免这种情况?
谢谢!
WebLogic 11g 如何在 EAR 文件中加载库?我的 web 应用程序有这个问题,当部署为 WAR(它依赖于 WEB-INF/lib 中的库)时,它工作得很好。但是,当它位于 EAR 文件中时,WebLogic 找不到这些库,除非我将它们放在 APP-INF/lib 中。这是否意味着如果我作为 EAR 部署,我必须从 WEB-INF/lib 目录中提取所有 JAR 文件并将它们放在 APP-INF/lib 中?或者是否有可以在 WebLogic 中完成的配置来避免这种情况?
谢谢!
如果您有需要在多个 WAR 文件之间或在 WAR 文件和 EAR 文件之间共享的 JAR 文件,那么您需要将它们打包到 EAR 中。
如果 WAR#1 在其 WEB-INF/lib 中有一个 JAR,并且与 WAR#2 一起打包在一个 EAR 中,那么 WAR#2 将无法看到 WAR#1/WEB-INF/lib 中的 JAR 文件。
解决您的问题需要了解 Java EE 类加载在容器中的工作原理。您应该查看此链接以获得理解,但基本问题是,当您将应用程序打包为 EAR 时,您在类加载层次结构中引入了另一个类加载器(应用程序类加载器)。您可以使用prefer-web-inf-classes元素将 WebLogic 配置为从您的 Web 应用程序加载。