J'ai besoin d'une propriété personnalisée à définir pour chaque JVM de serveur dans Weblogic. Quelle est la meilleure approche pour le faire?
Je sais que nous pouvons spécifier les arguments comme ci-dessous:
Ma question est de savoir comment exactement l'argument est défini? Comment utiliser cet argument dans l'application qui sera déployée dans cette machine virtuelle Java.
Modifier
Si je spécifie, -DMyArg=MyValue
Et dans le code, value=System.getproperty("MyValue");
cela devrait fonctionner, non?
Edit: si je spécifie, "-DMyArg = MyValue" et dans le code, value = System.getproperty ("MyValue"); cela devrait fonctionner, non?
Légère erreur, vous devez utiliser
value=System.getProperty("MyArg");
Cela ne fonctionne cependant qu'avec NodeManager activé. Si ce n'est pas le cas, ce que je fais, c'est de le définir dans startWeblogic.cmd comme l'une des Java_Options
Encore mieux est le setDomainEnv.cmd qui a des lignes pour
set EXTRA_Java_PROPERTIES=...
Sous le répertoire bin, éditez setDomainEnv.sh
trouvez la ligne ci-dessous:
Si USER_MEM_ARGS
la variable d'environnement est définie, utilisez-la pour remplacer ALL MEM_ARGS
ajoutez les lignes ci-dessous et modifiez les valeurs en conséquence
Pour Admin Server
`if [ "${SERVER_NAME}" = "AdminServer" ] ; then
USER_MEM_ARGS="-Xms256m -Xmx256m -XX:MaxPermSize=256m"
MEM_ARGS="${USER_MEM_ARGS}"
export MEM_ARGS
fi`
Pour le serveur géré
`if [ "${SERVER_NAME}" != "AdminServer" ] ; then
USER_MEM_ARGS="-Xms512m -Xmx512m -XX:MaxPermSize=256m"
MEM_ARGS="${USER_MEM_ARGS}"
export MEM_ARGS
fi`
Si vous avez besoin d'une propriété " personnalisée à définir pour chaque machine virtuelle Java du serveur dans weblogic", l'utilisation de startWeblogic.cmd ou setDomainEnv.cmd ne sera pas suffisante car ils définiront la même valeur pour tous vos serveurs.
Une chose que vous pourriez faire si le NodeManager n'est pas activé est de modifier manuellement le fichier config.xml et d'ajouter/modifier l'élément <arguments>
Sous l'élément <server-start>
Pour chaque serveur.
Mais - ce n'est pas recommandé (voir ici: http://docs.Oracle.com/cd/E23943_01/web.1111/e13716/config_files.htm ). Mieux vaut se fier au NodeManger et utiliser la procédure que vous avez décrite.
Autre que cela, la réponse ci-dessus value=System.getProperty("MyArg");
est correcte.
Je crée généralement des scripts d'appel simples pour chaque serveur géré sous DOMAIN_HOME, qui à leur tour appellent les scripts de démarrage génériques dans le répertoire/bin - comme celui que WebLogic crée automatiquement pour le serveur Admin. Je sais que vous pouvez remplacer les arguments de mémoire de cette façon et je suis sûr que vous pouvez changer JVM.
Voici un exemple de script testé pour Windows:
cd bin
SET USER_MEM_ARGS=-Xms512m -Xmx512m
startManagedWebLogic.cmd new_ManagedServer_1 localhost:7001
qui je suppose que sous UNIX serait quelque chose comme ça (désolé, je ne sais pas grand-chose sur les scripts bash):
cd bin
export USER_MEM_ARGS="-Xms512m -Xmx512m"
./startManagedWebLogic.sh new_ManagedServer_1 localhost:7001
Je pense que pour changer la JVM, ce serait quelque chose comme:
export Java_VENDOR="Oracle"
export USER_MEM_ARGS="-Xms512m –Xmx1g"
./startWebLogic.sh
Serait intéressé d'entendre les commentaires de quiconque à ce sujet. J'espère que cela aide quelqu'un. . .
Vous pouvez le faire en modifiant le fichier suivant C:\Oracle\Middleware\Oracle_Home\user_projects\domaines\base_domain\bin\startWebLogic.cmd
dans mon cas, c'est le domaine base_domain.
trouver la ligne suivante et éditer.
@REM Java_OPTIONS - Java command-line options for running the server. (These
set "Java_OPTIONS=%Java_OPTIONS% -DyourVariable=value"
Exemple
@ECHO OFF
@REM WARNING: This file is created by the Configuration Wizard.
@REM Any changes to this script may be lost when adding extensions to this configuration.
SETLOCAL
@REM --- Start Functions ---
GOTO :ENDFUNCTIONS
:stopAll
@REM We separate the stop commands into a function so we are able to use the trap command in Unix (calling a function) to stop these services
if NOT "X%ALREADY_STOPPED%"=="X" (
exit /b
)
@REM STOP DERBY (only if we started it)
if "%DERBY_FLAG%"=="true" (
echo Stopping Derby server...
call "%WL_HOME%\common\derby\bin\stopNetworkServer.cmd" >"%DOMAIN_HOME%\derbyShutdown.log" 2>&1
echo Derby server stopped.
)
set ALREADY_STOPPED=true
GOTO :EOF
:generateClassList
set Java_OPTIONS=%Java_OPTIONS% -Xshare:off -XX:+UnlockCommercialFeatures -XX:+IgnoreEmptyClassPaths -XX:DumpLoadedClassList=%APPCDS_CLASS_LIST% -XX:+UseAppCDS
GOTO :EOF
:useArchive
set Java_OPTIONS=%Java_OPTIONS% -XX:+UnlockCommercialFeatures -Xshare:auto -XX:+UseAppCDS -XX:+IgnoreEmptyClassPaths -XX:SharedArchiveFile=%APPCDS_ARCHIVE% -showversion
set USING_SHOWVERSION=true
GOTO :EOF
:ENDFUNCTIONS
ECHO HOLA.........................................................................
@REM --- End Functions ---
@REM *************************************************************************
@REM This script is used to start WebLogic Server for this domain.
@REM
@REM To create your own start script for your domain, you can initialize the
@REM environment by calling @USERDOMAINHOME\setDomainEnv.
@REM
@REM setDomainEnv initializes or calls commEnv to initialize the following variables:
@REM
@REM BEA_HOME - The BEA home directory of your WebLogic installation.
@REM Java_HOME - Location of the version of Java used to start WebLogic
@REM Server.
@REM Java_VENDOR - Vendor of the JVM (i.e. BEA, HP, IBM, Sun, etc.)
@REM PATH - JDK and WebLogic directories are added to system path.
@REM WEBLOGIC_CLASSPATH
@REM - Classpath needed to start WebLogic Server.
@REM PATCH_CLASSPATH - Classpath used for patches
@REM PATCH_LIBPATH - Library path used for patches
@REM PATCH_PATH - Path used for patches
@REM WEBLOGIC_EXTENSION_DIRS - Extension dirs for WebLogic classpath patch
@REM Java_VM - The Java arg specifying the VM to run. (i.e.
@REM - server, -hotspot, etc.)
@REM USER_MEM_ARGS - The variable to override the standard memory arguments
@REM passed to Java.
@REM PRODUCTION_MODE - The variable that determines whether Weblogic Server is started in production mode.
@REM DERBY_HOME - Derby home directory.
@REM DERBY_CLASSPATH
@REM - Classpath needed to start Derby.
@REM
@REM Other variables used in this script include:
@REM SERVER_NAME - Name of the weblogic server.
set "Java_OPTIONS=%Java_OPTIONS% -DUPLOAD_HOME=C:\files"
@REM Java_OPTIONS - Java command-line options for running the server. (These
@REM will be tagged on to the end of the Java_VM and
@REM MEM_ARGS)
@REM PROXY_SETTINGS - These are tagged on to the end of the Java_OPTIONS. This variable is deprecated and should not
@REM be used. Instead use Java_OPTIONS
@REM
@REM For additional information, refer to "Administering Server Startup and Shutdown for Oracle WebLogic Server"
@REM *************************************************************************
set SCRIPTPATH=%~dp0
set SCRIPTPATH=%SCRIPTPATH%
for %%i in ("%SCRIPTPATH%") do set SCRIPTPATH=%%~fsi
@REM Call setDomainEnv here.
set DOMAIN_HOME=C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain
for %%i in ("%DOMAIN_HOME%") do set DOMAIN_HOME=%%~fsi
call "%DOMAIN_HOME%\bin\setDomainEnv.cmd" %*
set SAVE_Java_OPTIONS=%Java_OPTIONS%
set SAVE_CLASSPATH=%CLASSPATH%
set TMP_UPDATE_SCRIPT=%TMP%\update.cmd
@REM Start Derby
set DERBY_DEBUG_LEVEL=0
if "%DERBY_FLAG%"=="true" (
call "%WL_HOME%\common\derby\bin\startNetworkServer.cmd" >"%DOMAIN_HOME%\derby.log" 2>&1
)
set Java_OPTIONS=%SAVE_Java_OPTIONS%
@REM In order to use resource consumption management policies or to get partition's resource consumption metrics, uncomment the following Java_OPTIONS
set #Java_OPTIONS=-XX:+UnlockCommercialFeatures -XX:+ResourceManagement -XX:+UseG1GC %SAVE_Java_OPTIONS%
set SAVE_Java_OPTIONS=
set CLASSPATH=%SAVE_CLASSPATH%
set SAVE_CLASSPATH=
if "%PRODUCTION_MODE%"=="true" (
set WLS_DISPLAY_MODE=Production
) else (
set WLS_DISPLAY_MODE=Development
)
if NOT "%WLS_USER%"=="" (
set Java_OPTIONS=%Java_OPTIONS% -Dweblogic.management.username=%WLS_USER%
)
if NOT "%WLS_PW%"=="" (
set Java_OPTIONS=%Java_OPTIONS% -Dweblogic.management.password=%WLS_PW%
)
if NOT "%MEDREC_WEBLOGIC_CLASSPATH%"=="" (
if NOT "%CLASSPATH%"=="" (
set CLASSPATH=%CLASSPATH%;%MEDREC_WEBLOGIC_CLASSPATH%
) else (
set CLASSPATH=%MEDREC_WEBLOGIC_CLASSPATH%
)
)
if "%GENERATE_CLASS_LIST%"=="true" (
CALL :generateClassList
)
if "%USE_ARCHIVE%"=="true" (
CALL :useArchive
)
echo .
echo .
echo Java Memory arguments: %MEM_ARGS%
echo .
echo CLASSPATH=%CLASSPATH%
echo .
echo PATH=%PATH%
echo .
echo ***************************************************
echo * To start WebLogic Server, use a username and *
echo * password assigned to an admin-level user. For *
echo * server administration, use the WebLogic Server *
echo * console at http:\\hostname:port\console *
echo ***************************************************
@REM START WEBLOGIC
if NOT "%USE_JVM_SYSTEM_LOADER%"=="true" (
set LAUNCH_ARGS=-cp %WL_HOME%\server\lib\weblogic-launcher.jar -Dlaunch.use.env.classpath=true
)
if "%USING_SHOWVERSION%"=="true" (
echo starting weblogic with Java version:
%Java_HOME%\bin\Java %Java_VM% -version
)
if "%WLS_REDIRECT_LOG%"=="" (
echo Starting WLS with line:
echo %Java_HOME%\bin\Java %Java_VM% %MEM_ARGS% %LAUNCH_ARGS% -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WLS_POLICY_FILE% %Java_OPTIONS% %PROXY_SETTINGS% %SERVER_CLASS%
%Java_HOME%\bin\Java %Java_VM% %MEM_ARGS% %LAUNCH_ARGS% -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WLS_POLICY_FILE% %Java_OPTIONS% %PROXY_SETTINGS% %SERVER_CLASS%
) else (
echo Redirecting output from WLS window to %WLS_REDIRECT_LOG%
%Java_HOME%\bin\Java %Java_VM% %MEM_ARGS% %LAUNCH_ARGS% -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WLS_POLICY_FILE% %Java_OPTIONS% %PROXY_SETTINGS% %SERVER_CLASS% >"%WLS_REDIRECT_LOG%" 2>&1
)
IF ERRORLEVEL 86 IF NOT ERRORLEVEL 87 (set shutDownStatus=86) ELSE (IF ERRORLEVEL 88 IF NOT ERRORLEVEL 89 ( set shutDownStatus=88 ) )
CALL :stopAll
popd
IF EXIST %TMP_UPDATE_SCRIPT% (set fileExists=true) ELSE (set fileExists=false)
if "%shutDownStatus%"=="86" (
if "%fileExists%"=="true" (
echo Calling %TMP_UPDATE_SCRIPT%
cd %TMP:~0,2%
cd %TMP%
call %TMP_UPDATE_SCRIPT%
IF ERRORLEVEL 42 IF NOT ERRORLEVEL 43 (set ustatus=42 )
@REM restoring the original env before unsetting Java_HOME
@REM in order to unset any Java_HOME that was passed in from domainEnv
if "%ustatus%"=="42" (
set Java_HOME=
)
) else (
echo ERROR! %TMP_UPDATE_SCRIPT% did not exist
)
@REM Call the same script path that was supplied in order to restart ourselves
@REM restoreOrigEnv will go here
call "%SCRIPTPATH%\startWebLogic.cmd"
) else (
if "%shutDownStatus%"=="88" (
@REM restoreOrigEnv will go here
call "%SCRIPTPATH%\startWebLogic.cmd"
)
)
@REM Exit this script only if we have been told to exit.
if "%doExitFlag%"=="true" (
exit
)
ENDLOCAL