如何在WLST(脱机模式)下克隆weblogic服务器?
我们有一个定制的weblogic模板,它有一个管理服务器(显然)和一个集群,其中两个管理服务器部署在同一台机器上。我们在开发环境中使用该模板。但现在,当我们转向性能测试环境时,我们需要引入更多的机器 在WLST(离线或在线模式)下创建新机器很容易。但是我如何在WLST中克隆服务器(因为除了weblogic.Name和目标计算机之外,所有设置都是相同的)如何在WLST(脱机模式)下克隆weblogic服务器?,weblogic,weblogic9.x,wlst,Weblogic,Weblogic9.x,Wlst,我们有一个定制的weblogic模板,它有一个管理服务器(显然)和一个集群,其中两个管理服务器部署在同一台机器上。我们在开发环境中使用该模板。但现在,当我们转向性能测试环境时,我们需要引入更多的机器 在WLST(离线或在线模式)下创建新机器很容易。但是我如何在WLST中克隆服务器(因为除了weblogic.Name和目标计算机之外,所有设置都是相同的) 在WebLogic管理控制台中,这似乎是可能的,但我们需要实现自动化。我不确定WLST的最新版本,但较旧版本没有一个命令,因为clone位于控制
在WebLogic管理控制台中,这似乎是可能的,但我们需要实现自动化。我不确定WLST的最新版本,但较旧版本没有一个命令,因为
clone
位于控制台端-它不是一个可以在MBean上调用的功能
您可以编写一个脚本,将serverName作为参数,遍历所有资源,然后创建新服务器。或者,也可以使用Oracle的OEM。希望能有所帮助。我最终定义了以下函数:
def createServer(wls, name):
wls.cd("/")
wls.create(name, 'Server')
######################################################################
# Checks if given bean exists
######################################################################
def beanExists(wls, path, name):
print "Checking if bean: '" + name + "' exists in path: '" + path + "'"
wls.cd(path)
wls.setShowLSResult(0)
beans = wls.ls('c', 'false', 'c')
wls.setShowLSResult(1)
if (beans.find(name) != -1):
print "Exists"
return 1
else:
print "Doesn't exist"
return 0
######################################################################
# Copy bean properties in offline mode.
######################################################################
def copyProperties(wls, originalBeanName, originalBeanPath, newBeanName, newBeanPath, ignoredProperties):
wls.getCommandExceptionHandler().setMode(1)
wls.getRuntimeEnv().set('exitonerror', 'true')
srcPath = originalBeanPath + "/" + originalBeanName
targetPath = newBeanPath + "/" + newBeanName
print "Coping properties from '" + srcPath + "' to '" + targetPath + "'"
wls.cd(srcPath)
wls.setShowLSResult(0)
attributes = wls.ls('a', 'true', 'a')
children = wls.ls('c', 'true', 'c')
wls.setShowLSResult(1)
# Copy attributes.
wls.cd(targetPath)
for entry in attributes.entrySet():
k = entry.key
v = entry.value
if not(k in ignoredProperties) and not(v is None) and not(v == ''):
print "Setting property '" + str(k) + "' = '" + str(v) + "' on '" + targetPath + "'"
if isinstance(v, StringType):
wls.set(k, v.replace(originalBeanName, newBeanName))
else:
wls.set(k, v)
# Copy child bean values.
for k in children:
if not(k in ignoredProperties):
srcBN = srcPath + "/" + k
targetBN = targetPath + "/" + k
print "Coping bean '" + srcBN + "/" + originalBeanName + "'"
print "Detected bean type as '" + k + "'"
if beanExists(wls, srcBN, "NO_NAME_0"):
print "Changing to NO_NAME_0"
originalBeanName = "NO_NAME_0"
newBeanName = "NO_NAME_0"
wls.cd(targetPath)
wls.create(newBeanName, k)
copyProperties(wls, originalBeanName, srcBN, newBeanName, targetBN, ignoredProperties)
在那之后就打电话:
createServer(WLS, 'ServiceServer3')
copyProperties(WLS, 'ServiceServer1', '/Servers', 'ServiceServer3', '/Servers', ['SSL'])
更新:我在博客中写了更多关于它的内容:。该脚本也在WebLogic11g上进行了测试