我在 WebLogic 节点中部署一个 EAR,其中在 Bootstrap (startWeblogicServer.bat) 类路径中定义了许多 jar。问题是我的耳朵和 Bootstrap 包含相同 jar 的不同版本,不仅如此,某些 jar 还包含提取的第三方库,这些库的版本也与 WebLogic Bootstrap jar 不同,导致各种类路径错误。
我知道您可以在 EAR 应用程序 xml 中设置首选 jar,但是,就理解所有依赖项而言,解决包含提取的第三方库的 jar 可能非常乏味。
我需要在这里采取正确的方法吗?我是不是以错误的方式思考这个问题?任何帮助将不胜感激!
到目前为止,prefer-web-inf-classes 已被推荐,但不会工作,因为我没有部署 WAR,prefer-application-packages 也是我们目前正在使用的,但仍然存在上述问题......那里的建议?谢谢!
最佳答案
我认为您应该从服务器引导区域中删除 JAR,并让每个域使用域级类加载器从其各自的 EAR 加载 JAR。
您已经知道这是真的,因为您采用的方法会给您带来问题。
按您的方式执行此操作的唯一理由是尝试通过不在多个域中复制 JAR 来节省一些磁盘空间。我说磁盘空间很便宜,而且一直在变便宜。通用 JAR 意味着通用依赖项,您不想强制 WebLogic 实例上的每个域都必须升级 JAR,仅仅因为一个公民需要它。
从服务器 Bootstrap 中删除 JAR,并在每个 EAR 中复制您需要的 JAR。使每个 EAR、每个域都相互独立。
更新:
您需要拥有自己的服务器。
或者将
咨询this了解详情。
关于java - Weblogic EAR 类加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1325595/