Affichage des articles dont le libellé est SCRIPTING. Afficher tous les articles
Affichage des articles dont le libellé est SCRIPTING. Afficher tous les articles
mercredi 8 septembre 2010
Créer des domaines Weblogic et customiser les scriptes de démarrage des instances du domaine est fastidieux si c’est une tâche récurrente, d’autant plus que la version 11G ne gère pas par défaut le fichier boot.properties pour masquer les login/password.
Une solution est de créer deux scriptes de démarrage génériques (un pour l’administration l’autre pour les managées) et un fichier boot.properties à copier dans le répertoire du domaine crée. Ces scriptes génériques doivent surcharger ou ajouter des paramétrages spécifiques aux scriptes du domaine via les variables suivantes :
- EXT_PRE_CLASSPATH
- EXT_POST_CLASSPATH
- EXT_PRE_PATH
- EXT_POST_PATH
- USER_MEM_ARGS
La convention prise dans cet exemple est de nommer les scriptes avec en préfix start/stop, puis le nom de l’instance. Pour ne pas avoir à modifier leur contenu, on ajoutera dans le nom du fichier les éléments nécessaires pour se connecter à l’instance d’administration (dans le cas des managées)
[start/stop].admin.cmd
[start/stop]....cmd
Dans le scripte générique sera placée la variable weblogic.system.BootIdentityFile qui permet de prendre en charge le fichier boot.properties.
SCRIPTES
Les scriptes sont les suivants
Instance d’administration
(Le nom de l’instance d’administration n’ayant pas d’importance)
(à compléter avec le stop)
[start/stop].admin.cmd
@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 set DOMAIN_HOME=D:\PROJETS\RECURANT\dev_domain
@set PWD=%~dp0
@set DOMAIN_HOME=%PWD%
@set USER_MEM_ARGS=%USER_MEM_ARGS% -Dweblogic.system.BootIdentityFile=%DOMAIN_HOME%boot.properties
@set EXT_PRE_CLASSPATH=
@set EXT_POST_CLASSPATH=
@set EXT_PRE_PATH=
@set EXT_POST_PATH=
@rem mode : @set USER_MEM_ARGS=%USER_MEM_ARGS% -Xms256m -Xmx512m -Xdebug -Xrunjdwp:transport=dt_socket,address=8100,server=y,suspend=n
@rem mode : @set USER_MEM_ARGS=%USER_MEM_ARGS% -Xms128m -Xmx256m
@rem mode : @set USER_MEM_ARGS=%USER_MEM_ARGS% -XXsetGC:genconcon -Xms128m -Xmx256m
@set USER_MEM_ARGS=%USER_MEM_ARGS% -Xms256m -Xmx512m
call "startWebLogic.cmd" %*
ENDLOCAL
Instance managée
(à compléter avec le stop)
[start/stop]....cmd
@echo OFF
@rem version nom long : DIRNAME
@rem set PWD="%~dp0"
@rem version nom long avec repertoire : DIRNAME
for %%i in (%0) do set PWD=%%~di%%~pi
@set DOMAIN_HOME=%PWD%
@set USER_MEM_ARGS=%USER_MEM_ARGS% -Dweblogic.system.BootIdentityFile=%DOMAIN_HOME%boot.properties
@recherche du lecteur
set LECTEUR=%DOMAIN_HOME:~0,2%
@rem extraction du numero d'instance avec la convention start..cmd correspondant au démarrage de l'instance
@rem version local :
@rem set CMD_NAME=%0
@rem version nom long
for %%i in (%0) do set CMD_NAME=%%~ni%%~xi
@rem name : managed.num.cmd
for /f "tokens=1,2,3,4 delims=/. " %%a in ("%CMD_NAME%") do set action=%%a&set instance=%%b&set admin=%%c&set port=%%d
@set EXT_PRE_CLASSPATH=
@set EXT_POST_CLASSPATH=
@set EXT_PRE_PATH=
@set EXT_POST_PATH=
@rem mode debug : @set USER_MEM_ARGS=%USER_MEM_ARGS% -Xms512m -Xmx512m -Xdebug -Xrunjdwp:transport=dt_socket,address=8100,server=y,suspend=n
@rem mode soft : @set USER_MEM_ARGS=%USER_MEM_ARGS% -Xms256m -Xmx256m
@set USER_MEM_ARGS=%USER_MEM_ARGS% -XXsetGC:genconcon -Xms128m -Xmx256m
%LECTEUR%
cd %DOMAIN_HOME%/bin
dir
if "%action%"=="start" (
startManagedWebLogic.cmd %instance% t3://%admin%:%port%
)
if "%action%"=="stop" (
@echo "ON STOP"
)
Boot.properties
boot.properties
username=weblogic
password=weblogic1
Exemple
Créer un domaine (login=weblogic / password=weblogic1) cluster avec une instance d’administration et deux instances managées
Sous le répertoire du domaine, copier les fichiers présentés ci-dessous en donnant les noms suivants :
- start.admin.cmd
- start.managed1.localhost.7001.cmd
- start.managed2.localhost.7001.cmd
- boot.properties
Ouvrir une ligne de commande DOS pour lancer les scriptes en se positionnant sous le répertoire du domaine (on pourra utiliser l’utilitaire Console2 qui permet d’ajouter des onglets aux lignes de commande DOS).
jeudi 8 avril 2010
Cet outil étend les fonctions WLST sur la migration de messages JMS d’une file à l’autre. Cette fonctionnalité est présente via la console Weblogic mais n’existe pas en natif dans les API WLST.
· Scripte d’exportation d’une file JMS vers un fichier
#IMPORT/EXPORT FROM FILE - START
# must be on a domain runtime to proceed
domainRuntime()
print "--- ### export all message from SRC to file/dir \n"
print " - go to SRC MBean [%s] \n" % mbean_src
cdMbeanQueueDomainRuntime(distributed_src, instancename_src, jmsservername_src, modulename, queue_src )
print " - lsMessages from SRC ...\n"
lsMessages()
print " - exportQueueMessagesToFile ...\n"
exportQueueMessagesToFile( outputfile )
print " - exportQueueMessagesToDir ...\n"
exportQueueMessagesToDir( outputdir )
· Scripte d’importation d’un fichier vers une file JMS.
print "--- ### import to DST from file/dir\n"
print " - go to DST MBean [%s] \n" % mbean_dst
cdMbeanQueueDomainRuntime(distributed_dst, instancename_dst, jmsservername_dst, modulename, queue_dst )
print " - importQueueMessagesFromFile ...\n"
importQueueMessagesFromFile( outputfile )
print " - importQueueMessagesFromDir ...\n"
importQueueMessagesFromDir( outputdir )
print " - RESULT ...\n"
print " - lsMessages ...\n"
lsMessages()
· Même fonctionnalité mais sur un ID de message.
ID=getFirtsFromListID()
print "--- ### get one message from the DST liste [ID=%s] ...\n" % ID
print " - export [ID=%s]...\n" % ID
exportQueueMessageToFileById( ID, outputfile + ".uniq" )
print " - deleteMessages ...\n"
deleteMessages()
print " - lsMessages ...\n"
lsMessages()
print " - importQueueMessagesFromFile ...\n"
importQueueMessagesFromFile( outputfile + ".uniq" )
print " - lsMessages(one message [ID=%s]) ...\n" % ID
lsMessages()
ID=getFirtsFromListID()
print " - deleteMessagesById(%s) ...\n" % ID
deleteMessagesById( ID )
· Suspension et activation d’une file JMS pour ne pas prendre de message supplémentaire lors des imports/exports
print "--- ### pose/resume online queue ...\n"
print " - poseAllOnlineQueue ...\n"
poseAllOnlineQueue()
print " - resumeAllOnlineQueue ...\n"
resumeAllOnlineQueue()
print "--- ### pose/resume offline queue ...\n"
cdMbeanQueueEdit(distributed_dst, instancename_dst, jmsservername_dst, modulename, queue_dst )
print " - pauseAllOfflineQueue ...\n"
pauseAllOfflineQueue()
print " - resumeAllOfflineQueue ...\n"
resumeAllOfflineQueue()
· Changer les messages de file JMS sans passer par un fichier intermédiaire.
print " - move the messages from the SRC to DST"
cdMbeanQueueDomainRuntime(distributed_dst, instancename_dst, jmsservername_dst, modulename, queue_dst )
target=cmo.getDestinationInfo()
cdMbeanQueueDomainRuntime(distributed_src, instancename_src, jmsservername_src, modulename, queue_src )
count=cmo.moveMessages('',target)
print "[%s]" % count
· Vous pouvez filtrer sur un ensemble de critère vous pouvez utiliser la méthode suivante
exportQueueMessagesToFileFiltered( filter, outputFileName ):
avec comme filtre possible :
QUERY : message selection or message filter
The selector is a regular boolean expression consists of a string with syntax similar to where clause of an SQL select statement. Selector can include various attributes associated with the messages headers and properties. WebLogic JMS allows the users to create selector expression based on JMS message header fields and or property fields. In addition to the standard JMS message header fields, you can also use the WebLogic specific system properties such as JMS_BEA_UnitOfOrder, JMS_BEA_Size and JMS_BEA_State.
Contents of the message body cannot be used as part of the filter xpression except for XMLMessage type. For XML message types, WebLogic provides a special syntax called “JMS_BEA_SELECT” based on XPATH expression in addition to the standard SQL select syntax. The XML selector can be used to select messages based on the content of the XML message body.
QUERY :
operator : <, >, =, LIKE (with %)
METADATA | ||
Property Name | Description | Values |
JMS_BEA_UnitOfOrder | The Unit Of Order Identifier | A valid client or system generated string representation of a UOO ID |
JMS_BEA_SizeThe | The size of the message in bytes | A long value |
JMS_BEA_State | The current state of the message | String literal |
JMS_BEA_SequenceNumber | The sequence number assigned to messages by the system upon arrival on the destination | A long value. |
JMS_BEA_DeliveryTime | Birth time of the message | A long value |
JMS_BEA_RedeliveryLimit | The number of the redelivery attempts to be made before moving the message onto error destination | A long value |
JMSXDeliveryCount | The number of times the message | A long value |
HEADER |
JMSMessageID |
JMSDeliveryMode |
JMSExpiration |
JMSPriority |
JMSRedelivered |
JMSTimestamp |
JMS_BEA_State | |||
State | Description | Bitmask | String literal to be used in message selector |
Visible | The message is visible on the destination and may be consumed | 1 | visible |
Send | The message is pending because it is associated with an in progress send operation | 2 | send |
Received | The message is pending because it has been received by a consumer but not yet acknowledged | 4 | receive |
Transaction | The message is associated with a transactional “send” or “receive” operation that is in progress. | 8 | ‘send transaction’ or ‘receive transaction’ |
Ordered | The message belongs to a Unit of Order. | 16 | ordered |
Delayed | The message is pending because it has a scheduled delivery time or is otherwise delayed. | 32 | delayed |
Expired | The message has expired and is no longer available for consumption. | 64 | expired |
Redelivery-count-exceeded | The message has exceeded the redelivery count set for the destination and is no longer available for consumption | 128 | redelivery-count-exceeded |
Paused | The message is pending because of a destination pause operation | 256 | paused |
Sequenced | The message that is part of a SAF sequence | 512 | sequenced |
Unit of work component | The message is part of an Unit of work (UOW) | 1024 | unit-of-work-component |
Deleted | The message marked for deletion | 1073741824 | deleted |
Sample
Get all the messages that are in the queue with priority great than 5
“JMSPriority > 5”
Get all the messages that belong to the unit-of-order “BLUE”
“JMS_BEA_UnitOfOrder LIKE ‘BLUE’”
Get all the messages that are bigger than 1k size
“JMS_BEA_Size > 1024”
Get all the messages that are pending as part of a receive transaction
“JMS_BEA_State LIKE ‘receive transaction’”
Inscription à :
Articles (Atom)
AUTEUR
- Jean FRANCOIS
- Carrières Sur Sein, Yvelines, France
- Consultant Oracle (Ancien consultant BEA depuis 2001), je m’occupe des expertises sur les produits Oracle : SOCLE (Weblogic, Coherence, JRockit) SOA (Service Bus, SOA Suite, BPM)
MON CV
LABEL 3D
Blogumulus by Roy Tanck and Amanda Fazani
LABEL CLOUD
ARCHIVES
AUTRES BLOG
-
Alexandre Vasseur ex (BEA | Oracle FR / Esper)
James Bayer (BEA | Oracle US)
Maxence Button ex (BEA | Oracle FR)
Marc Kelderman
Edwin Biemond (Oracle ACE)
Mark Smith (Oracle)
Chris Tomkins (Oracle)













