【问题标题】:Starting weblogic with startWebLogic.cmd使用 startWebLogic.cmd 启动 weblogic
【发布时间】:2012-09-12 02:26:28
【问题描述】:

我正在使用 WLST 脚本在 Weblogic 10.3.4 中创建域。然后启动管理服务器并部署一个war文件。全部在脚本中。

在此 WLST 中,我还将更新 setDomainEnv.cmd 文件以在类路径的开头添加某些 jar。这个 setDomainEnv.cmd 在我们用 startWebLogic.cmd 启动域时会被调用。

但是在脚本中,当我使用 startServer 命令启动服务器时,它不会调用 startWebLogic.cmd,因此不会调用我更新的 setDomainEnv.cmd。 结果,尽管其他一切正常(例如域创建,战争部署),但我的应用程序失败了,因为未加载必要的 jar。 具体来说,我想在类路径中附加 javax.el-api-2.2.4.jar 和 com.sun.el_2.2.0.v201105051105.jar。

关于如何从 WLST 调用 startWebLogic.cmd 的任何建议。 此外,如果我们可以从 ant 任务中调用 startWebLogic.cmd,或者 Maven 也可以。

编辑

我的 weblogic.xml 如下所示

      <container-descriptor>
<prefer-application-packages>
  <package-name>javax.el.*</package-name>
  <package-name>com.sun.el.*</package-name>
   <package-name>javax.persistence.*</package-name>
   <package-name>javax.persistence.criteria.*</package-name>
   <package-name>javax.persistence.metamodel.*</package-name>
   <package-name>javax.persistence.spi.*</package-name>  
   <package-name>org.eclipse.persistence.*</package-name>      
   <package-name>org.springframework.*</package-name>      
  </prefer-application-packages>          
 </container-descriptor> 

【问题讨论】:

    标签: weblogic wlst


    【解决方案1】:

    您可以选择以下方法之一

    1 - 将你所有的 jars 放在 %DOMAIN_HOME%/lib 文件夹中,它们将在服务器启动期间添加到类路径中,这样你就不必修改 setDomainEnv.cmd。这里的问题是,如果您阅读 %DOMAIN_HOME%/lib 下的 readme.txt,您会看到这些 jars 被添加到类路径的末尾,所以如果您希望所有这些 jars 都位于类路径的开头,那么这是不是一个好的解决方案。

    2 - 通过 startWebLogic.cmd 启动服务器的一种方法是使用 nodemanager - 当然,对于这种方法,您需要配置节点管理器,在域中注册并在启动域之前启动 - 使用 nmConnect 并发出 nmStart - 更多详情请参考http://docs.oracle.com/cd/E24329_01/web.1211/e21050/starting_nodemgr.htm#NODEM209

    未来:请注意,如果服务器始终使用 startWebLogic.cmd 启动,则在 setDomainEnv 中设置类路径可能会正常工作,但如果有任何用例可以从 AdminConsole 启动服务器,那么您需要将类路径设置为:Login to AdminConsole–>Environments—.Servers—>YourManagedServer—>Configuration (TAB)—>ServerStart (SubTab) -> Classpath (text area)

    【讨论】:

    • 我已经尝试过第 1 点,正如你提到的,它在类路径的末尾添加了条目,因此它没有达到我的目的。关于 Nodemanager,我尝试设置它并遇到了一些问题。左它在那里。也许我会再试一次。我可以再问一个问题吗?我很确定我的应用程序将是域中唯一运行的应用程序。那么我可以在管理服务器中部署它而不是创建托管服务器吗?
    • 通常不建议在生产环境中将应用程序部署在 AdminServer 上,因为它仅应用于管理目的,但 weblogic 不会强制执行此操作,所以我想您可以将应用程序部署在 AdminServer 本身上.注册。 serverstart :我认为继续使用 nodemanager 方法更好。您能说说您在配置 NM 时遇到了什么问题吗?
    • 我已经添加了一个单独的问题here,说明我在使用 NodeManager 时遇到的问题。请看一下
    【解决方案2】:

    我不会质疑为什么需要部署这些 jar,但在 Weblogic 中执行此操作的方法是将它们部署为共享库。您可以使用 WLST 或脚本中的 Deployer 来执行此操作。修改 cmd 文件对我来说似乎是一种 hack。

    【讨论】:

    • 我这样做的原因是 Weblogic 有自己的 EL jar 版本,这与我需要的不同。当我们启动 weblogic 时,它会加载自己版本的 EL jars。我也尝试将这些 jars 放在 Domain 的 lib 文件夹中,但这也没有用
    • 你认为使用共享库,我将能够覆盖 weblogic 已经加载的内容。也许我可以试一试
    • 另一种方法是把你的jar放在WEB-INF/lib中,使用prefer-web-inf-classes元素。
    • 我已经尝试过 prefer-web-inf-classes,但它有一个不同的问题。我的应用程序需要 JPA 2.0,而 weblogic 10.3.4 默认加载 JPA 1.0。如果我使用 prefer-web-inf-classes JPA 1.0 会被 weblogic 加载,这会产生问题。我改为使用 来加载 JPA 2.0 包。但遗憾的是,同样的方法不适用于 EL jars
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多