2016-10-10 73 views
0

我的目标平台是WebLogic 12c应用服务器。可以/我应该依赖于WebLogic的捆绑模块

我有一个ear-project,在启动时需要例如org.apache.commons.logging.LogFactory

我知道这个类 - 一个相关的类 - 可以在<WL_HOME>/modules/com.bea.core.apache.commons.logging.api_1.1.1.jar中找到,但它在classspath中并不是默认可用的。

在这种情况下 - 我应该怎样在类路径中提供<WL_HOME>/modules的jar文件 - 或者我应该提供任何我认为合适的jar文件 - 要么捆绑在应用程序中,要么放在<WL_HOME>/user_projects/domains/<mydomain>/lib

如果我要使用<WL_HOME>/modules文件夹中的那个文件夹 - 如何配置我的域以使其可用?

对我来说,模块文件夹中的jar文件应该被认为是合理的提供了依赖关系,但到目前为止,我一直无法找到正确的方式来启用它们 - 我一直在浏览答案几小时:-)

更新: 我知道我可以简单地将它们添加到服务器启动脚本中的CLASSPATH变量 - 我的问题更像 - 我应该吗?有没有更好的方法 - 或者我应该完全忘记<WL_HOME>/modules

回答

0

这是一种短视的方法。

  • 您需要重新启动服务器升级库
  • 应用程序在服务器上必须是好这些库在其claspath

的Weblogic有Shared JEE Librariesexample)的概念。简而言之,您为MANIFEST.MF添加额外的行并以不同的方式配置该jar,然后您可以使用weblogic-application.xml或其他任何应用程序在其他应用程序中引用它。

问题是您可以在不重新启动服务器的情况下升级磁带库(前提是您提供了一个类似1.1的版本(上次有错误,我将它命名为1.1.1) - 它需要能够将其转换为浮点号码无缝升级))。

如果你只是想包括一些图书馆,但共享应用程序之外,则只需指定正确的<prefer-application-packages>< prefer-web-inf-classes>元素,这取决于你是否有一个EAR或战争。

+0

所以 - 你更喜欢自包含的战争或耳朵 - 除了可能需要跨应用程序对齐的依赖关系,还是紧密耦合到servlet容器? –

+0

这是正确的。你应该在Weblogic中自己安装的库只有服务器相​​关的东西,比如FIPS加密模块,AWS SQS驱动或者其他。 许多应用程序常见的东西,但这只会更新40次(比如斐济在夏时制日期改变主意时需要更新时区数据库)。共享库,只是为了便于维护。加上你的内部图书馆当然。 –

+0

好的 - 非常感谢:-) –