Propriétés système du conteneur d'EJB
En plus des paramètres disponibles à partir de la console d'administration, vous pouvez définir des propriétés système d'EJB à l'aide de l'outil de script de la ligne de commande.
- com.ibm.websphere.ejbcontainer.allowEarlyInsert
- com.ibm.websphere.ejbcontainer.checkEJBApplicationConfiguration
- com.ibm.websphere.ejbcontainer.declaredUncheckedAreSystemExceptions
- com.ibm.websphere.ejbcontainer.defaultSessionAccessTimeout
- com.ibm.websphere.ejbcontainer.defaultStatefulSessionTimeout
- com.ibm.websphere.ejbcontainer.EE5Compatibility
- com.ibm.websphere.ejbcontainer.EE6Compatibility
- com.ibm.websphere.ejbcontainer.excludeRootExceptionOnRollback
- com.ibm.websphere.ejbcontainer.limitSetRollbackOnlyBehaviorToInstanceFor
- com.ibm.websphere.ejbcontainer.poolSize
com.ibm.websphere.ejbcontainer.allowEarlyInsert
Cette propriété est applicable aux beans CMP (persistance gérée par conteneur) 1.1 uniquement. Par défaut, le conteneur d'EJB ne crée la représentation du bean entity dans la base de données qu'après l'appel de la méthode ejbPostCreate(...).

Certaines applications s'appuient sur la méthode ejbCreate(...)pour la création du bean entity dans la base de données. Dans ce cas, l'association de la propriété JVM com.ibm.websphere.ejbcontainer.allowEarlyInsert à la valeur true remplace le comportement par défaut.
com.ibm.websphere.ejbcontainer.checkEJBApplicationConfiguration
Spécifie un paramètre défini au niveau du serveur qui indique que le conteneur doit réaliser une validation supplémentaire de la configuration des applications pour que ces dernières soient cohérentes avec la spécification Java™ Platform, Enterprise Edition (Java EE).

Cette propriété doit être utilisée pendant le développement d'une application pour faciliter l'identification des configurations incorrectes qui peuvent générer des comportements inattendus. Par exemple, l'application de l'annotation javax.ejb.Asynchronous sur une interface n'est pas prise en charge par la spécification et est généralement ignorée. Si cette propriété est activée, une erreur est consignée et une exception se produit lors du traitement du bean. Cet échec s'avère utile pendant la phase de développement car il permet de comprendre pourquoi les méthodes ne fonctionnent pas de manière asynchrone.
La validation de configuration supplémentaire est terminée et peut entraîner la consignation de plusieurs erreurs et avertissements liés à la configuration si cette propriété est activée. En règle générale, cette validation supplémentaire s'applique aux scénarios dont l'exécution nécessite un temps système additionnel (ne s'applique pas aux applications stables sur un serveur de production). Seuls les avertissements sont consignés pour les écarts mineurs par rapport à la spécification. Une erreur est consignée pour les incidents plus graves et l'application ne peut pas être exécutée si l'erreur n'est pas résolue.


com.ibm.websphere.ejbcontainer.declaredUncheckedAreSystemExceptions
Cette propriété permet d'indiquer si les exceptions déclarées dans la clause throws d'une méthode d'EJB sont traitées comme des exceptions d'application ou des exceptions d'exécution système. Lorsque cette propriété a pour valeur true, ces exceptions sont traitées comme des exceptions d'exécution système et une exception EJBException est générée au niveau du client.
Si elle n'est pas spécifiée ou si elle est associée à la valeur false, les exceptions déclarées dans la clause throws d'une méthode d'EJB sont traitées comme des exceptions d'application.
Par défaut, cette propriété a la valeur false.
com.ibm.websphere.ejbcontainer.defaultSessionAccessTimeout
Cette propriété permet de définir la valeur par défaut du délai d'accès de concurrence de session pour tous les beans session sur un serveur. La valeur est saisie en millisecondes.
Indiquez une valeur de type de données long pour désactiver ou activer la concurrence de session :
- La valeur 0 désactive la concurrence de session (aucune attente).
- Une valeur longue positive (1, 2, 3, etc.) active la concurrence de session et définit en millisecondes le délai d'attente en lui attribuant la valeur indiquée.
Si cette propriété est définie, le délai d'accès de concurrence de bean session est utilisé dans l'ensemble du serveur à la place de la valeur par défaut -1 (attente illimitée). Cette spécificité s'applique aux beans session singleton et avec état. Au niveau du bean de session individuel, le délai d'attente peut être remplacé en utilisant l'annotation @AccessTimeout sur la classe de bean, la méthode ou l'élément de descripteur de déploiement access-timeout.
com.ibm.websphere.ejbcontainer.defaultStatefulSessionTimeout
Spécifie un délai d'expiration au niveau du serveur pour les beans session avec état, qui indique la durée pendant laquelle un bean session avec état est conservé par le serveur.

Il s'agit d'une propriété système que vous pouvez ajouter directement au fichier server.xml ou en tant qu'argument JVM générique à l'aide de la console d'administration.
La propriété est exprimée en minutes, qui est la seule unité admise. La valeur par défaut est de 10 minutes. La valeur zéro indique que le serveur utilise la valeur par défaut de 10 minutes. Les valeurs négatives ne sont pas admises. La valeur zéro et les valeurs supérieures à zéro sont admises. Si une valeur non admise est spécifiée, un avertissement est émis dans SystemOut et la valeur par défaut est utilisée.
La durée du délai d'expiration des beans session avec état peut être spécifiée pour chaque bean à l'aide d'annotations ou d'un fichier xml. Si la durée d'un délai d'expiration est explicitement spécifiée pour un bean particulier, elle remplace toute définition du délai d'expiration au niveau du serveur.
Si aucune durée de délai d'expiration n'est spécifiée pour un bean spécifique, la définition du délai d'expiration au niveau du serveur est appliquée à ce bean.
Si aucune durée de délai d'expiration n'est spécifiée pour un bean spécifique ni au niveau du serveur, la valeur par défaut du délai d'expiration est appliquée à ce bean.
com.ibm.websphere.ejbcontainer.EE5Compatibility
Spécifie un paramètre défini au niveau du serveur qui indique que le conteneur d'EJB fournit des comportements par défaut qui sont cohérents avec la spécification Java Enterprise Edition (Java EE) 5.0.
Il s'agit d'une propriété système que vous pouvez ajouter directement au fichier server.xml ou en tant qu'argument JVM générique à l'aide de la console d'administration.
La spécification Java EE inclut des améliorations au modèle de programmation d'EJB qui ont entraîné de légères modifications de certains comportements par défaut. En général, ces modifications rendent le comportement plus intuitif ou plus fiable. Toutefois, si une application repose sur un ou plusieurs comportements Java EE 5.0, vous pouvez définir cette propriété système de sorte que le conteneur d'EJB applique les comportements par défaut Java EE 5.0.
Si vous associez la propriété à la valeur true, les comportements suivants sont remplacés :
- Les annotations @ApplicationException ne sont pas héritées. Depuis la spécification Java EE 6.0, le comportement par défaut pour l'annotation @ApplicationException n'est plus le même ; l'annotation est héritée par des classes d'exception de sous-classe. Si cette propriété système est spécifiée, l'annotation @ApplicationException n'est pas héritée par les classes d'exception de sous-classe. Vous pouvez aussi changer la déclaration @ApplicationException pour spécifier 'inherited=false'.
- L'accès concurrent aux beans session avec état est interdit et génère l'exception javax.ejb.ConcurrentAccessException. Depuis la spécification Java EE 6.0, le comportement par défaut pour l'accès concurrent aux beans session avec état n'est plus le même : il permet l'accès concurrent, bien que chaque demande d'accès concurrent soit sérialisée par le conteneur, en bloquant l'accès à l'instance de bean indéfiniment jusqu'à ce qu'un verrou d'instance soit obtenu. Si cette propriété système est spécifiée, tous les beans session avec état qui ne possèdent pas de valeur de délai d'expiration d'accès explicite prennent par défaut la valeur de délai d'expiration d'accès 0 (la valeur par défaut de Java EE 5.0). Vous pouvez aussi modifier le bean session avec état pour définir une valeur de délai d'expiration d'accès de 0.
- Le type Java, Class et toute sous-classe d'Enum sont traités comme des références d'environnement de ressource et non comme des entrées d'environnement simple. A partir de la spécification Java EE 6.0, le type Java, Class, et toute sous-classe d'Enum ont été ajoutés à l'ensemble de types d'entrées d'environnement simple pris en charge. Dans les versions précédentes de Java EE, ces types étaient traités comme des références d'environnement de ressource et une liaison était requise dans le fichier ibm-ejb-jar-bnd.xml ou ibm-web-bnd.xml. Etant donné que ces types de données sont désormais pris en charge en tant qu'entrée d'environnement simple, une liaison spécifique à la plateforme n'est plus requise. Vous pouvez indiquer la valeur directement dans le descripteur de déploiement. Lorsque cette propriété système est spécifiée, les applications utilisant l'annotation javax.annotation.Resource pour le type Java, Class ou toute sous-classe d'Enum sont traitées comme des références d'environnement de ressource et la valeur référencée est obtenue à l'aide des informations du fichier de liaison. Cette propriété n'installe pas l'application et par conséquent, les informations de liaison ne sont pas entrées pendant l'installation. Vous devez entrez manuellement les informations de liaison dans le fichier de liaison.
com.ibm.websphere.ejbcontainer.EE6Compatibility
Spécifie un paramètre défini au niveau du serveur qui indique que le conteneur d'EJB fournit des comportements par défaut qui sont cohérents avec la spécification Java Enterprise Edition (Java EE) 6.0.
Il s'agit d'une propriété système que vous pouvez ajouter directement au fichier server.xml ou en tant qu'argument JVM générique à l'aide de la console d'administration.
La spécification Java EE inclut des améliorations au modèle de programmation d'EJB qui ont entraîné de légères modifications de certains comportements par défaut. En général, ces modifications rendent le comportement plus intuitif ou plus fiable. Toutefois, si une application repose sur un ou plusieurs comportements Java EE 6.0, vous pouvez définir cette propriété système de sorte que le conteneur d'EJB applique les comportements par défaut Java EE 6.0.
Si vous affectez la valeur true à cette propriété, les annotations @Local et @Remote ne sont pas ignorées même si elles sont spécifiées avec une valeur vide sur la classe de bean et que d'autres interfaces métier sont indiquées. Lorsque cette propriété n'est pas spécifiée et que ces annotations sont indiquées sur la classe de bean, les interfaces de la clause implements sont considérées comme des interfaces métier locales ou éloignées, sauf si :
- Les interfaces <business-local>, <business-remote> ou <local-bean> sont spécifiées dans le fichier ejb-jar.xml.
- L'annotation @LocalBean est spécifiée sur la classe de bean.
- Les annotations @Local ou @Remote comportant une valeur vide sont spécifiées sur les classes d'interface de la clause implements.
Lorsque cette propriété est spécifiée, une interface unique sur la clause implements est tout de même considérée comme une interface métier locale ou éloignée, même si l'un de ces désignations a été utilisée. Au lieu de définir la propriété, vous pouvez retirer l'annotation @Local ou @Remote comportant une valeur vide et utiliser l'une des autres options à la place.
com.ibm.websphere.ejbcontainer.excludeRootExceptionOnRollback
Par défaut, le conteneur d'EJB définit la cause première de l'exception qui a été émise au cours de l'annulation de transaction. Si cette propriété a pour valeur true, le conteneur d'EJB ne définit pas la cause première, ce qui est utile si votre application ne prévoit pas de trouver la cause ou si elle consigne les exceptions et qu'elle consigne désormais une quantité de données plus considérable.
com.ibm.websphere.ejbcontainer.extendSetRollbackOnlyBehaviorToInstanceFor
Cette propriété permet à l'utilisateur de spécifier les noms d'application dans lesquels ils souhaitent que les EJB de leurs modules EJB 3.x aient le comportement pre-EJB 3.0 setRollbackOnly.
Le comportement pre-EJB 3.0 setRollbackOnly est décrit dans Changement des applications en comportement WebSphere setRollbackOnly "spécifique à la version".
com.ibm.websphere.ejbcontainer.limitSetRollbackOnlyBehaviorToInstanceFor
Cette propriété permet à l'utilisateur de spécifier les noms d'application dans lesquels ils souhaitent que les EJB de leurs modules EJB 3.x aient le comportement EJB 3.x setRollbackOnly.
Le comportement EJB 3.x setRollbackOnly est décrit dans in Changement des applications en comportement WebSphere setRollbackOnly "spécifique à la version".
com.ibm.websphere.ejbcontainer.poolSize
Indique la taille du pool pour le type de bean spécifié. Cette propriété s'applique aux beans entity et aux beans gérés par message sans état. Si vous ne spécifiez pas de valeur par défaut, les valeurs par défaut 50 et 500 du conteneur sont utilisées.
beantype=[H]min,[H]max [:beantype=[H]min,[H]max...]
L'élément beantype est le nom Java EE du bean, formé par la concaténation du nom de l'application, du caractère #, du nom du module, du caractère # et du nom du bean, c'est-à-dire la chaîne affectée à la zone <ejb-name> dans le descripteur de déploiement du bean. Les éléments min et max correspondent aux tailles de pool minimale et maximale pour ce type de bean. Ne spécifiez pas les crochets affichés dans l'exemple précédent. Ils signalent d'autres types de bean facultatifs que vous pouvez spécifier après le premier type de bean. Les spécifications de type de bean sont délimitées par des deux-points (:).
*=30,100
SMApp#PerfModule#TunerBean=54, :SMApp#SMModule#TypeBean=100,200
L'ordre dans lequel vous spécifiez les types de bean dans la chaîne a peu d'importance.
Vous pouvez désigner la taille maximale du pool EJB comme étant une limite absolue en insérant le caractère H juste avant la valeur max. Sans le caractère H, la valeur maximale indique le nombre d'instances EJB pouvant être mises en pool mais ne limite pas le nombre d'instances EJB qui peuvent être créées ou utilisées. L'insertion du caractère H avant la valeur maximale indique qu'il s'agit d'une limite absolue, ce qui signifie que le conteneur d'EJB bloque la création d'instances supplémentaires une fois cette limite atteinte. Les unités d'exécution devront attendre qu'une instance se libère ou que la transaction expire.
Vous pouvez désigner la taille minimale du pool EJB comme étant une limite absolue en insérant le caractère H juste avant la valeur min. Sans le caractère H, la valeur minimale indique le nombre d'instances d'EJB conservées dans le pool lorsque le type d'EJB n'est pas en cours d'utilisation mais n'entraîne pas le préchargement du pool au démarrage de l'application. La taille minimale du pool n'est généralement pas atteinte tant que l'application n'a pas accédé simultanément au nombre minimum d'instances d'EJB défini. L'insertion du caractère H avant la valeur minimale indique une limite absolue, ce qui signifie que le conteneur d'EJB précharge le pool avec le nombre minimal d'instances d'EJB au démarrage de l'application.
SMApp#SMModule#TypeBean=100,H200Pour que le conteneur d'EJB précharge le pool avec un minimum de 100 instances d'EJB au démarrage de l'application, entrez :
SMApp#SMModule#TypeBean=H100,200
