Published by

Il y a 15 ans -

Temps de lecture 4 minutes

WebLogic Persistent Store

Le serveur d’applications Weblogic permet de déclarer des serveurs JMS. À chaque serveur JMS est associé un Persistent Store, emplacement destiné à persister les messages JMS en cas d’interruptions de service entre la publication d’un message et sa consommation. Deux supports possibles :

  • File Persistence Store, un répertoire accessible par le serveur Weblogic composé d’un ou plusieurs fichiers de structures binaires (.DAT)
  • JDBC Persistence Store, ensemble de tables contenues dans une base de données relationnelle et accessible à travers une ‘DataSource’. La structure des tables et leur contenu sont exclusiment gérés par le serveur d’applications.

Le choix de l’un des deux types de stockage est principalement dicté par des contraintes d’architecture et d’exploitation; les avantages de l’un sont les inconvénients de l’autre.

Jusqu’à la version 8 de Weblogic, il était impossible de pouvoir les administrer, en particulier pouvoir les ouvrir, analyser ou dumper leur contenu.

À partir de la version 9, le serveur d’applications propose un outil : weblogic.store.Admin

java -classpath ${WLS_DIR}/servir/lib/weblogic.jar weblogic.store.Admin

Les commandes principales sont : open, dump et compact.

Open

La première opération à effectuer est de se connecter au Persistent Store, soit par openfile, soit par openjdbc. Le reste des commandes resteront identiques vis-à-vis du type de store.

storeadmin-> openfile -store FileStore_auto_1 -dir FileStore_auto_1
<Jul 25, 2008 4:03:48 PM MEST> <Info> <Store> <BEA-280050> <Persistent store "FileStore_auto_1" opened: directory="FileStore_auto_1" writePolicy="Cache-Flush" blockSize=512 direc tIO=false driver="NIO">
INFO: Store FileStore_auto_1 opened successfully
storeadmin->list
INFO: Currently open stores :
FileStore_auto_1
storeadmin->

Dump

Cette commande permet d’obtenir le contenu du store et de le transférer dans un fichier

storeadmin-> dump -store FileStore_auto_1 -out /tmp/dump_FileStore_auto_1.log
INFO: Dump from FileStore_auto_1 to /tmp/dump_FileStore_auto_1.log.xml successful

Le contenu du fichier indique le nombre total de messages, le nombre de création, lecture, mise à jour et suppression avec le détail par connexion.


  
    
  
  
    36737
    0
    0
    0
    0
    0
    0
  
....

Il existe une option à la commande dump qui permet d’avoir non seulement les statistiques, mais également le contenu des éléments, ici les messages JMS

storeadmin->dump -store FileStore_auto_1 -out /tmp/dump_FileStore_auto_1.log.deep -deep
INFO: Dump from FileStore_auto_1 to /tmp/dump_FileStore_auto_1.log.deep.xml successful

Attention : la taille de ce fichier peut être extrêmement importante, c’est une projection XML de données stockées en mode binaire !


  
    0
    0
    0
    0
    0
  
  

    
          0: 0001 0000 0101 0000 0000 0000 0006 0000   ................
   16: 0000 0000 ba74 0000 0000 0005 0801 0000   .....t..........
   32: 0000 0017 e64a 0000 0000 0000 1bce 7fff   .....J..........
   48: ffff 0008 1e2d 0204 0000 0000 0000 0030   .....-.........0
   64: 0000 0002 0066 0011 5245 504f 5254 494e   .....f..REPORTIN
   80: 4744 4154 4154 5950 4500 6800 0000 0200   GDATATYPE.h.....
   96: 6600 074d 5347 5459 5045 0068 0000 0001   f..MSGTYPE.h....
  112: 0c00 0001 1b59 bea7 0e00 0000 0000 0c63   .....Y.........c
  128: ce00 0000 0002 0000 1bce aced 0005 7372   ..............sr
  144: 0037 636f 6d2e 6265 612e 776c 692e 7265   .7com.bea.wli.re
  160: 706f 7274 696e 672e 6a6d 7370 726f 7669   porting.jmsprovi
  176: 6465 722e 7275 6e74 696d 652e 5265 706f   der.runtime.Repo
  192: 7274 4d65 7373 6167 6576 850c c3d6 d6bf   rtMessagev......
  208: 8502 0004 5b00 0a62 696e 5061 796c 6f61   ....[..binPayloa

Compact

L’ajout et la suppression d’éléments dans le store peuvent engendrer de la fragmentation. L’outil permet d’effectuer un compactage d’un PersistenceStore non-ouvert.

storeadmin-> close -store FileStore_auto_1
INFO: Store FileStore_auto_1 closed successfully
storeadmin-> compact -dir FileStore_auto_1 -tempdir /var/weblogic/
<Jul 25, 2008 4:26:16 PM MEST> <Info> <Store> <BEA-280050> <Persistent store "FILESTORE_AUTO_1" opened: directory="/var/weblogic/STOREADMIN_46757" writePolicy="Cache-Flush" blockSize=512 directIO=false driver="NIO">
INFO: Original FileStore_auto_1 moved to /var/weblogic/STOREADMIN_46757
INFO: Compacting store ... FILESTORE_AUTO_1
INFO: Store FILESTORE_AUTO_1 opened successfully
<Jul 25, 2008 4:26:21 PM MEST> <Info> <Store> <BEA-280050> <Persistent store "STOREADMIN_FILESTORE_AUTO_1" opened: directory="FileStore_auto_1" writePolicy="Cache-Flush" blockSize=512 directIO=false driver="NIO">
INFO: Store STOREADMIN_FILESTORE_AUTO_1 created and opened successfully
INFO: Copy from FILESTORE_AUTO_1 to STOREADMIN_FILESTORE_AUTO_1 successful
INFO: Store FILESTORE_AUTO_1 closed successfully
INFO: Store STOREADMIN_FILESTORE_AUTO_1 closed successfully
INFO: Renamed STOREADMIN_FILESTORE_AUTO_1 to FILESTORE_AUTO_1
INFO: ... Compacted store FILESTORE_AUTO_1
INFO: Compact of FileStore_auto_1 successful : pre-compact files in /var/weblogic/STOREADMIN_46757
storeadmin->

Un dernier conseil : il est déconseillé de lancer cet outil alors que le serveur d’applications est en pleine charge: cela peut provoquer des effets de bords indésirables, du temps de réponse en berne à la corruption irréparable du Persistence Store.

Référence: Administering a Persistent Store

Published by

Commentaire

4 réponses pour " WebLogic Persistent Store "

  1. Published by , Il y a 11 ans

    Merci pour cette article, j’ajoute une précision, par défaut les fichiers « dat » ne peuvent pas être ouvert lorsque le serveur d’application est démmaré (State Admin ou Running). Cela évite les problèmes d’incohérence.

  2. Published by , Il y a 11 ans

    Effectivement ! Merci de cette précision.

  3. Published by , Il y a 10 ans

    Merci pour cet article très clair.
    Par défaut weblogic crée un espace de stockage persistant sur chaque instance WLS crée, c’est d’ailleurs celui qu’utilise le serveur JMS lorsqu’aucun Persistent Store n’est sélectionné lors de la création du serveur JMS.

    Ma question est où se trouve cet espace de stockage par défaut ?

  4. Published by , Il y a 10 ans

    Désolé mais je ne sais pas ! mais surement dans le repertoire du server $DomainHome/servers/$NomDuServer.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.