创建具有自定义内存的 WebLogic 开发域

Create a WebLogic development domain with custom memory

我一直在尝试通过结合批处理文件和 WLST 来自动创建我们的开发环境,但我正在努力更改 WebLogic 服务器启动时使用的内存。

目前我们正在 <DOMAIN_HOME>/bin/setDomainEnv.cmd 脚本中手动更改内存设置,但这是一种解决方法。应该可以毫不费力地自动完成。

设置域

设置域的脚本非常简单:

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45
set MW_HOME=C:\dev\wls1036_dev
set DOMAIN_HOME=C:\dev\domain
cd %MW_HOME%
call configure.cmd
mkdir %DOMAIN_HOME%
cd %DOMAIN_HOME%
%JAVA_HOME%\bin\java.exe -Xmx1024m -XX:MaxPermSize=256m -Dweblogic.management.username=weblogic -Dweblogic.management.password=welcome1 weblogic.Server

我尝试在此脚本中使用一些变量,例如 MEM_ARGSJAVA_OPTIONS,但其中 none 被转发到域的最终配置,稍后它总是以 512 heap 和 128 perm 开始,这还不够。

WLST 内存启动参数

我们正在使用 Eclipse,它会调用 startWebLogic.cmd 作为启动脚本。是标准配置。

我尝试使用以下 WLST 脚本。它确实设置了服务器启动参数,但是 WebLogic 没有使用这些属性并且没有加载足够的内存。

edit()
startEdit()
cd('/Servers/myserver/ServerStart/myserver')
cmo.setArguments('-Xmx1024m -XX:MaxPermSize=256m')
activate()

有什么想法吗?

您可以使用技巧获取 ServerStart 参数:

  1. 编写简单的离线 WLST 脚本以从 config.xml:
  2. 获取参数

getArguments.py

import sys

readDomain(sys.argv[1])
cd('Server/%s/ServerStart/NO_NAME_0' % sys.argv[2])
argsFile = open('arguments.txt', 'w')
print >>argsFile, cmo.arguments
  1. 将此脚本添加到 startWeblogic.cmd,例如:

startWebLogic.cmd

...

set DOMAIN_HOME=%~dp0

path\to\wlst.cmd getArguments.py %DOMAIN_HOME% admin_server_name
set /p EXTRA_JAVA_PROPERTIES=<arguments.txt

call "%DOMAIN_HOME%\bin\startWebLogic.cmd" %*

从 Eclipse 执行 WebLogic 时,没有简单的方法来设置值。它会调用批处理脚本,至少在当前版本中,不允许发送动态参数。

我们解决了它,使 setDomainEnv.cmd 文件成为我们版本化配置的一部分:

  1. setDomainEnv.cmd 文件复制到您的版本控制配置。
  2. 随意编辑(内存等)
  3. 当运行你的开发环境配置脚本时,像copy custom\setDomainEnv.cmd %DOMAIN_HOME%\bin /y一样复制文件。

现在每次配置开发环境时,内存值都将准备就绪,无需手动干预。

您必须在更新 WebLogic 时重新编辑您的内容,这样您就不会得到过时的组件。