|
过去的几个月以来我一直忙于一个项目,那就是为我们的WebLogic应用程序开发人员创建一个框架,以便他们容易地构建、配置和管理WebLogic服务器。无需多说,该框架是广泛使用WLST而构建的。
WebLogic 域配置完成后我们还会提供基础架构管理他们的域,主要用于启动、停止服务器和获取域状态,并且将他们的配置从开发阶段推向uat阶段以及生产阶段。
我们使用WLST的startServer启动管理服务器和节点管理器,尽管startServer做了我们需要的事情,但在很多方面它仍有缺点。例如,它不能将PRE_CLASSPATH 或 POST_CLASSPATH添加到服务器的类路径(classpath)。另外,它从JVM继承了类路径,很多情况下在这里调用WLST可能不是所期望的。
尽管startServer提供了一种重定向服务器的stdOut到文件的方法,但是一旦退出WLST客户端,重定向就会结束,而且无法再使WLST重定向服务器的stdout/stderr到文件。由于startServer的这些缺点,我希望在startServer命令中有个选项可以使用startWebLogic.sh或startManagedWebLogic.sh脚本来启动服务器。因为现在还没有这个选项,所以我想跟大家分享一下我用于处理这个问题的应急方案(workaround)。
这个应急方案将用到域目录下的startWebLogic.sh。让WLST使用脚本的最大好处是任何添加到脚本中的定制扩展(比如PRE_CLASSPATH/POST_CLASSPATH设置)在启动服务器时都会保留,而且您可以重定向stdout/stderr到文件。
将下面的定义复制到脚本,并通过传递所需的参数来调用该命令。
def startAdminServerViaScript(domainDirectory, adminServerName):
try:
svrOutLoc = domainDirectory+"/servers/"+adminServerName+"/logs/"+adminServerName+".out"
os._shellEnv.system(domainDirectory+"/bin/startWebLogic.sh > "+svrOutLoc+" 2>&1 &\n")
except Exception,e:
e.printStackTrace()
raise "Error starting the admin server"
def startManagedServerViaScript(domainDirectory, managedServerName, adminUrl):
try:
svrOutLoc = domainDirectory+"/servers/"+managedServerName+"/logs/"+managedServerName+"_"+".out"
os._shellEnv.system(domainDirectory+"/bin/startManagedWebLogic.sh "+managedServerName+" "+adminUrl+" > "+svrOutLoc+" 2>&1 &\n")
except Exception,e:
e.printStackTrace()
raise "Error starting the weblogic server "+managedServerName
两个函数都会从WLST调用作为域一部分的启动脚本。注意这两个函数都是在Unix/Linux上工作的,如果使用的是Windows,则需要进行适当的修改以调用正确的脚本。
原文出处:http://dev2dev.bea.com/blog/sghattu/archive/2007/01/wlst_startserve.html
|