【转帖】在自定义的WLS启动脚本中使用MEM_ARGS等变量_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4563 | 回复: 0   主题: 【转帖】在自定义的WLS启动脚本中使用MEM_ARGS等变量        下一篇 
shixisheng
注册用户
等级:上尉
经验:646
发帖:52
精华:0
注册:2013-5-27
状态:离线
发送短消息息给shixisheng 加好友    发送短消息息给shixisheng 发消息
发表于: IP:您无权察看 2013-5-31 10:31:54 | [全部帖] [楼主帖] 楼主

V1.1 By tdy218


作此文档目的:

方便WLS系统管理员在自定义的启动脚本中使用MEM_ARGS等变量,从而简化工作,易于管理。

理解此文档需要对WLS的启动过程(主要是脚本调用关系)较为熟练。

下面以MEM_ARGS参数的设置为例,进行阐述。

旧有的WLS启动脚本及设置MEM_ARGS参数一例(WLS 8.1):

start_AS.sh
#!/bin/sh
#export
MEM_ARGS=”-Xms768m –Xmx1024m -XX:PermSize=128m-XX:MaxPermSize=256m”
nohupsh startWebLogic.sh >> "${AdminServer_Name}.out@${suffix}"2>&1 &
startWebLogic.sh
………………………………
.${WL_HOME}/common/bin/commEnv.sh(WLS 9++为

.${DOMAIN_HOME}/bin/setDomainEnv.sh $*)
export
MEM_ARGS=”-Xms768m –Xmx1024m -XX:PermSize=128m-XX:MaxPermSize=256m”
${JAVA_HOME}/bin/java${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Dweblogic.Name=${SERVER_NAME}-Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy weblogic.Server
………………………………


在start_AS.sh中设置的MEM_ARGS等变量无法生效,即使手工定义了一个脚本,也仍需要修改WLS自带的相关脚本,这样有点麻烦。

经过多次试验,得出:

要想使WLS启动时(java
weblogic.Server)使用自定义脚本中的MEM_ARGS变量,需除去WLS自带的启动脚本相关的所以脚本中原本已有的MEM_ARGS变量。

如果你已经在这些自带的脚本中自定义了MEM_ARGS变量,需要统统删掉。WLS启动时,找不到MEM_ARGS变量,自然会从你自定义的脚本中寻找MEM_ARGS变量,如果找到则用之,其他变量同理。

下面以MEM_ARGS参数的设置为例,阐述设置过程(假定你刚创建完域,还没在任何脚本中设置MEM_ARGS变量):

OS:WindowsXP
JVM:SunHotSpot JVM(WLS自带)
1.
WLS 8.1 sp1-6
1)


将%WL_HOME%/common/bin/commEnv.sh脚本中两段儿Sun)对应的代码块儿中的MEM_ARGS=……整行注释掉,形如:

…………………………
Sun)
JAVA_VM=-client
#MEM_ARGS="-Xms32m-Xmx200m -XX:MaxPermSize=128m"
;;
…………………………
Sun)
JAVA_VM=-server
#MEM_ARGS="-Xms32m-Xmx200m -XX:MaxPermSize=128m"
JAVA_OPTIONS="${JAVA_OPTIONS}-Xverify:none"
;;
…………………………
2)


在自定义的WLS启动脚本中增加MEM_ARGS变量的设置即可. 形如:

start_AS.sh
#!/bin/sh
exportMEM_ARGS="-Xms384m -Xmx512m -XX:PermSize=96m-XX:MaxPermSize=128m"
nohupsh startWebLogic.sh >> "${AdminServer_Name}.out@${suffix}"2>&1 &
2.


WLS 9 - WLS 11g通用的设置方法

到WLS9++版本中,WLS启动脚本的调用方式发生了一些变化,而且在后来的WLS11g中较前几个版本又做了变动,修改WLS自带的那些脚本中的MEM_ARGS变量变得麻烦起来。

经过观察,在setDomainEnv.sh中发现了一个空闲的变量USER_MEM_ARGS.

………………………………
ifNOT "%USER_MEM_ARGS%"=="" (
set MEM_ARGS=%USER_MEM_ARGS%
)
………………………………


而他非空时,其值将被赋给MEM_ARGS即可。所以只需在自定义的WLS启动脚本中将原本要赋值给MEM_ARGS变量的值,赋给USER_MEM_ARGS即可。这样,我们只需要在自定义的WLS启动脚本中添加这样一句:

 start_AS.sh
#!/bin/sh
export USER_MEM_ARGS="-Xms384m -Xmx512m -XX:PermSize=96m -XX:MaxPermSize=128m"
nohup sh startWebLogic.sh >> "${AdminServer_Name}.out@${suffix}" 2>&1 &


综上所述,只要startWebLogic.sh、startManagedWebLogic.sh、setDomainEnv.sh、 commEnv.sh中变量值为空的变量,你都可以在自定义的WLS启动脚本中将其赋值。如果上述几个脚本中变量值不为空,那么你在WLS启动脚本中重复 的变量,则它将被上述几个脚本中的变量值所覆盖。
这些脚本中变量的优先级为(从左到右依次升高):
自定义的WLS启动脚本(start_AS.sh等) à commEnv.sh à (setDomainEnv.sh à) à startWebLogic.sh(startManagedWebLogic.sh,在WLS 8.1中这两个脚本的优先级相同,在WLS9 ++版本中,执行startManagedWebLogic.sh,其实就是在调用startWebLogic.sh,这时 startManagedWebLogic.sh中的变量的优先级是较低的)。
Note:所谓的优先级,只是针对两个或以上的脚本中存在相同的变量,有不同的值。
在WLS 8.1版本中,如果start_AS.sh中设置了CLASSPATH变量及其值,那么它将被追加到CLASSPATH变量值的末尾,例如:

 start_AS.bat
@echo off
set CLASSPATH=D:\lib\cos.jar
startWebLogic


WLS启动后,你将看到如下的结果:

 CLASSPATH=D:\Install\WLS816\JROCKI~1\lib\tools.jar;D:\Install\WLS816\WEBLOG~1\server\lib\weblogic_sp.jar;D:\Install\WLS8
16\WEBLOG~1\server\lib\weblogic.jar;D:\Install\WLS816\WEBLOG~1\common\eval\pointbase\lib\pbserver44.jar;D:\Install\WLS81
6\WEBLOG~1\common\eval\pointbase\lib\pbclient44.jar;D:\Install\WLS816\JROCKI~1\jre\lib\rt.jar;D:\Install\WLS816\WEBLOG~1
\server\lib\webservices.jar;D:\lib\cos.jar


这是因为WLS启动相关的几个脚本中存在CLASSPATH变量的设置语句:

 set CLASSPATH=%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;%JAVA_HOME%\jre\lib\rt.jar;%WL_HOME%\server\lib\webservices.jar;%CLASSPATH%


而对于和weblogic.jar等WebLogic自带的JAR包不冲突的第三方JAR包导入时,可以使用这种方法,如果第三方的JAR包与 WebLogic自带的JAR包冲突,而我们又在自定义的WLS启动脚本中设置了CLASSPATH,那么这里定义的JAR包将被WebLogic自带的 JAR包覆盖,因为CLASSPATH变量中,WebLogic自带的JAR包靠前,自定义的WLS启动脚本中定义的变量优先级较低,又根据JVM ClassLoader的原理,相同的JAR包,谁在前面引用谁。

当然,你也可以修改startWebLogic.sh(cmd)脚本中的 CLASSPATH变量,使得你在自定义脚本中添加的jar包置于总的CLASSPATH变量值的最前边儿。

名词注解:
A.    自定义的WLS启动脚本
指的是用户重新定义的,非包含在${WL_HOME}/common/bin、${WL_HOME}/server/bin、${Domain_Home}、${Domain_Home}/bin等目录下的脚本。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论