Commande wsenhancer
L'outil d'extension d'entité (entity enhancer) pour applications JPA (Java™ Persistence API) insère du code intermédiaire (bytecode) dans un fichier de classe d'entité prenant en charge le fournisseur JPA pour gérer l'état d'une entité. Use this command-line tool to enhance entities under the Java™ Persistence API (JPA) 2.0 specification provider, WSJPA/OpenJPA, for WebSphere Application Server.
Utilisée avec le serveur d'applications, l'API JPA requiert que toutes les classes d'entité soient étendues si vous souhaitez gérer leur état. Dans un environnement géré par conteneur, l'extension automatisée est fournie par les conteneurs. Toutefois, dans un environnement Java SE, qui n'inclut aucun conteneur pour la gestion de la persistance, vous pouvez utiliser cette commande fréquemment avant la mise en forme des fichiers d'application afin d'effectuer des tests. Après avoir créé les entités JPA, vous pouvez exécuter l'outil wsenhancer pour injecter du code intermédiaire dans les entités avant d'empaqueter le fichier JAR dans le fichier EAR de l'application.
Syntaxe
La syntaxe de la commande est la suivante :
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
wsenhancer.sh [parameters][arguments]
![[IBM i]](../images/iseries.gif)
wsenhancer [parameters][arguments]
![[Windows]](../images/windows.gif)
wsenhancer.bat [parameters][arguments]
Paramètres
- -directory/-d <répertoire sortie> :
indique le chemin du répertoire de sortie.
Si le répertoire ne correspond pas au package de la classe étendue, la structure du package est créée sous le répertoire. Par défaut, l'outil d'extension remplace le fichier .class d'origine.
- -enforcePropertyRestrictions/-epr <true/t
| false/f> : indique si une exception doit être générée
lorsqu'une entité d'accès aux propriétés n'obéit pas aux restrictions
relatives à l'accès aux propriétés.
La valeur par défaut est false.
- -addDefaultConstructor/-adc <true/t | false/f> : indique que toutes les classes persistantes définissent un constructeur sans argument. Cet indicateur indique à l'outil d'extension s'il doit ajouter un constructeur sans argument et protégé dans les classes persistantes dans lesquelles le constructeur n'est pas déjà présent.
- -tmpClassLoader/-tcl <true/t |
false/f> : indique si l'outil d'extension doit charger des
classes persistantes avec un chargeur de classe temporaire.
Cette fonction autorise un autre code à charger la version étendue de la classe ultérieurement dans la même machine virtuelle Java (JVM). La valeur par défaut est true.
Eviter les incidents: Si vous rencontrez des incidents lors du chargement des classes pendant l'exécution de l'outil d'extension, vous pouvez régler cet indicateur à false lors du débogage.gotcha
- Pour le nom de classe, indiquez l'une des valeurs suivantes :
- le nom complet d'une classe,
- le nom .java d'une classe,
- le fichier .class d'une classe.
Utilisation
Pour pouvoir utiliser l'outil wsenhancer, vos entités doivent être définies conformément à la spécification JPA et elles doivent être compilées. Exécutez l'outil wsenhancer sur les entités avant de les empaqueter dans un fichier JAR. Si les entités sont déjà empaquetées, vous devez extraire leurs fichiers de classe, exécuter l'outil d'extension et recréer le fichier JAR.
- Vérifiez que les entités figurent dans le chemin d'accès aux classes ; si tel n'est pas le cas, ajoutez-les.
- Exécutez la commande wsenhancer. Elle se trouve dans le répertoire racine_profil/bin.
Exemples
Pour étendre toutes les entités dans le chemin de classes :
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
$ cd build
/home/user/myproject/build $ ${profile_root}/bin/wsenhancer.sh
![[IBM i]](../images/iseries.gif)
$ cd build
/home/user/myproject/build $ ${profile_root}/bin/wsenhancer
![[Windows]](../images/windows.gif)
C:\myproject\cd build
C:\myproject\build>%profile_root%\bin\wsenhancer.bat
Toutes les entités dans monprojet sont étendues.
Pour étendre une entité spécifique lorsque vous disposez des fichiers source :
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
$ cd build
/home/user/myproject/build $ ${profile_root}/bin/wsenhancer.sh Magazine.java
![[IBM i]](../images/iseries.gif)
$ cd build
/home/user/myproject/build $ ${profile_root}/bin/wsenhancer Magazine.java
![[Windows]](../images/windows.gif)
C:\myproject\cd build
C:\myproject\build>%profile_root%\bin\wsenhancer.bat Magazine.java
Pour étendre une entité spécifique lorsque vous disposez des fichiers de classe compilés :
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
$ export CLASSPATH=target/classes
$ ${profile_root}/bin/wsenhancer.sh /bin/wsenhancer.sh target/classes/jpa/example/MyEntity.class
![[IBM i]](../images/iseries.gif)
$ export CLASSPATH=target/classes
$ ${profile_root}/bin/wsenhancer target/classes/jpa/example/MyEntity.class
![[Windows]](../images/windows.gif)
C:> cd build
C:\build> SET CLASSPATH=target\classes
C:\build>%profile_root%\bin\wsenhancer.bat \bin\wsenhancer.bat target\classes\jpa\example\Magazine.class
L'entité Magazine.java située dans le projet est étendue.
Informations supplémentaires
Pour plus d'informations sur les outils d'extension, reportez-vous à la section relative aux classes persistantes dans la documentation d'Apache OpenJPA.