コメントに基づいて編集:
アプローチ 1:
- setDomainEnv.cmd を開き
export SERVER_NAME
、Linux またはset SERVER_NAME
Windows で検索します。次の行にスキップする (つまり、現在の行と次の行をスキップする)
現在の行に、次を挿入します。
customServerList="server1,server2" #this serverList should be taken as input
isCurrServerCustom=$(echo ${customServerList} | tr ',' '\n' | grep ${SERVER_NAME} | wc -l)
if [ $isCurrServerCustom -gt 0 ]; then
# add customJavaArg
JAVA_OPTIONS="-Dmy.property=${USERPROFILE}/someDir/someJar.jar"
fi
- setDomainEnv.sh ファイルを保存し、サーバーを再起動します。
Linux 用のロジックのみを示していることに注意してください。Windows では、同様のロジックを使用できますが、バッチ スクリプト構文を使用できます。
アプローチ 2:
ドメインがすでにインストールされており、ユーザーが JVM 引数-Dmy.property
を追加する必要があるサーバーのリストを提供すると仮定します。Jython スクリプト (実行には wlst.sh を使用)。WLSTリファレンス。
使用法:wlst.sh script_name props_file_location
import os
from java.io import File
from java.io import FileInputStream
# extract properties from properties file.
print 'Loading input properties...'
propsFile = sys.argv[1]
propInputStream = FileInputStream(propsFile)
configProps = Properties()
configProps.load(propInputStream)
domainDir = configProps.get("domainDir")
# serverList in properties file should be comma seperated
serverList = configProps.get("serverList")
# The current machine's logical name as mentioned while creating the domain has to be given. Basically the machine name on which NM for current host is configured on.
# This param may not be required as an input if the machine name is configured as same as the hostname , in which case , socket module can be imported and socket.getHostName can be used.
currMachineName = configProps.get("machineName")
jarDir = os.environ("USERPROFILE")
argToAdd = '-Dmy.property=' + jarDir + File.separator + 'someDir' + File.separator + 'someJar.jar'
readDomain(domainDir)
for srvr in serverList.split(",") :
cd('/Server/' + srvr)
listenAddr = get('ListenAddress')
if listenAddr != currMachineName :
# Only change current host's servers
continue
cd('/Server/' + srvr + '/ServerStart/' + srvr)
argsOld = get('Arguments')
if argsOld is not None :
set('Arguments', argsOld + ' ' + argToAdd)
else:
set('Arguments', argToAdd)
updateDomain()
closeDomain()
# now restart all affected servers (i.e serverList)
# one way is to connect to adminserver and shutdown them and then start again
JVM引数に「USERPROFILE」のホスト固有の値を設定するには、管理対象サーバーがデプロイされるすべてのホストからスクリプトを実行する必要があります。
ところで、あなたの質問に一行で答えるには、最終的にJVM引数にリテラルテキストを指定する必要があるようです。しかし、JVM 引数として提供された場合、WLS は環境変数を変換しないようです。startWebLogic.cmd (例: %DOMAIN_HOME% などを使用) から実行されたときに変換しているように見えますが、変換してから JVM を起動するシェル/cmd エグゼキューターです。