Déclarations de ressource d'application Java EE

Vous pouvez configurer vos applications Java™ Enterprise Edition (Java EE) pour déclarer des dépendances sur les ressources externes et des paramètres de configuration. Ces ressources peuvent être injectées dans le code applicatif ou l'application peut y accéder via Java Naming and Directory Interface (JNDI).

Les références de ressources permettent à une application de définir et d'utiliser des noms logiques que vous pouvez associer à des ressources lors du déploiement de l'application.

Les types de ressources suivants peuvent être déclarés par des applications Java EE : entrées d'environnement simples, références Enterprise JavaBeans (EJB), référence de service Web, références de fabrique de connexions de gestionnaire de ressources, références d'environnement de ressource, références de destination de message, références d'unité de persistance et références de contexte de persistance.

Entrées d'environnement simples

Vous pouvez définir des paramètres de configuration dans vos applications Java EE pour personnaliser une logique métier à l'aide d'entrées d'environnement simples. Comme décrit dans l'application Java EE 6, les valeurs d'entrée d'environnement simples peuvent être de l'un des types Java suivants : String, Character, Bye, Short, Integer, Long, Boolean, Double, Float, Class et toute sous-classe d'Enum.

Remarque : Le type Java, Class, et toute sous-classe d'Enum sont de nouveaux types de la version Java EE 6.

Le fournisseur d'applications doit déclarer toutes les entrées d'environnement simples auxquelles accède le code d'application. Les entrées d'environnement simples sont déclarées à l'aide d'annotations (javax.annotation.Resource) dans le code d'application ou à l'aide d'éléments env-entry dans le descripteur de déploiement XML.

Dans l'exemple suivant, tiré d'une application, les annotations déclarent des entrées d'environnement :

// Retry interval in milliseconds
@Resource long retryInterval = 3000;

Dans l'exemple précédent, la valeur par défaut de la zone est 3000. Vous pouvez utiliser une valeur env-entry-value que vous définissez dans le descripteur de déploiement XML pour modifier cette valeur.

Dans l'exemple suivant, une application déclare une entrée d'environnement simple de type Class et définit la classe à injecter à l'aide d'un élément env-entry-value dans le descripteur de déploiement XML.

@Resource(name=TraceFormatter) Class<?> traceFormatter; 


<env-entry>
    <env-entry-name>TraceFormatter</env-entry-name>
    <env-entry-value>com.sample.trace.StdOutTraceFormatter</env-entry-value>
</env-entry>

Dans l'exemple précédent, la valeur de zone est définie par l'objet Class com.sample.trace.StdOutTraceFormatter.

Dans l'exemple suivant, une application déclare une entrée d'environnement simple appelée validationMode en tant que sous-classe d'Enum dans la classe com.sample.Order et configure la valeur Enum, CALLBACK, à injecter, à l'aide d'éléments du descripteur de déploiement XML.

<env-entry>
    <env-entry-name>JPAValidation</env-entry-name>
    <env-entry-type>javax.persistence.ValidationMode</env-entry-type>
    <env-entry-value>CALLBACK</env-entry-value>
    <injection-target>
        <injection-target-class>com.sample.Order</injection-target-class>
        <injection-target-name>validationMode</injection-target-name>
    </injection-target>
</env-entry>

Dans l'exemple précédent, la zone validationMode est définie par la valeur Enum CALLBACK. Appliquez la même approche lorsque vous utilisez des annotations et du code XML pour déclarer des entrées d'environnement simples, par exemple :

@Resource (name=JPAValidation) 
javax.persistence.ValidationMode validationMode;


<env-entry>
    <env-entry-name>JPAValidation</env-entry-name>
    <env-entry-value>CALLBACK</env-entry-value>
</env-entry>
Remarque : La prise en charge des entrées d'environnement simples du type Java Class et de toutes les sous-classes d'Enum est une nouveauté de Java EE 6. Vous devez avoir préalablement développé vos applications pour déclarer ces types en tant que ressources d'application à l'aide de l'élément resource-env-ref dans le descripteur de déploiement XML ou à l'aide de l'annotation javax.annotation.Resource. Pour les applications qui utilisaient ces types Java avec l'annotation javax.annotation.Resource, la propriété système com.ibm.websphere.ejbcontainer.EE5Compatibility doit être activée. Sans la propriété système EE5Compatibility, l'élément binding-name de l'élément resource-env-ref dans le fichier ibm-ejb-jar-bnd.xml est ignoré, car le type de données est à présent traité en tant qu'entrée d'environnement simple et non en tant que référence d'environnement de ressource.
Remarque : L'élément de descripteur de déploiement <lookup-name> et l'attribut d'annotation lookup sont des nouveautés dans Java EE 6. Ils spécifient le nom JNDI d'un EJB ou d'une ressource référencé, relativement au contexte d'affectation de nom java:comp/env. Si l'un ou l'autre est utilisé dans une entrée d'environnement simple, vous ne pouvez pas utiliser de valeur <env-entry-value> dans la même entrée <env-entry>.

Références Enterprise JavaBeans (EJB)

Comme décrit dans la spécification Java EE 6, vous pouvez développer vos applications Java EE pour déclarer des références aux répertoires Home de bean enterprise ou aux instances de bean enterprise à l'aide de noms logiques appelés références EJB.

Lorsqu'une application déclare une référence à un EJB, l'EJB référencé est résolu à l'aide de l'une des techniques suivantes.

  • Indiquez une liaison EJB dans le fichier ibm-ejb-jar-bnd.xml ou le fichier ibm-web-bnd.xml
  • Indiquez un élément <ejb-link> dans le fichier ejb-jar.xml ou le fichier web.xml
  • Indiquez un attribut beanName dans l'annotation javax.ejb.EJB
  • Indiquez un élément <lookup-name> dans le fichier ejb-jar.xml ou le fichier web.xml
  • Indiquez un attribut lookup dans l'annotation javax.ejb.EJB
  • Localisez un bean enterprise qui implémente l'interface déclarée en tant que type de la référence EJB (désigné par le terme AutoLink).

Le conteneur d'EJB tente de résoudre la référence EJB à l'aide des techniques précédentes, dans l'ordre où elles apparaissent.

Remarque : Si <lookup-name> ou lookup est utilisé dans une référence EJB, vous ne pouvez pas utiliser <ejb-link> ou beanName dans la même référence EJB.
Remarque : Tous les exemples de référence EJB suivants partent du principe que le bean SampleCart n'a qu'une seule interface. Si le bean SampleCart a plusieurs interfaces, ajoutez le suffixe suivant à la fin de la liaison, élément <ejb-link>, ou attribut beanName : !com.sample.Cart.

Dans l'exemple suivant, une application déclare une référence EJB à l'aide d'une annotation et fournit une liaison pour la résolution.

@EJB(name="Cart")
Cart shoppingCart;


<ejb-ref name="Cart" binding-name="java:app/SampleEJB/SampleCart"/>

Dans l'exemple suivant, une application déclare une référence EJB à l'aide d'une annotation et fournit un élément ejb-link pour la résolution.

@EJB(name="Cart")
Cart shoppingCart;


<ejb-local-ref>
    <ejb-ref-name>Cart</ejb-ref-name>
    <ejb-link>SampleEJB/SampleCart</ejb-link>
</ejb-local-ref> 

Dans l'exemple suivant, une application déclare une référence EJB à l'aide d'une annotation et fournit un attribut lookup pour la résolution, à partir du bean source com.sample.SourceBean.

@EJB(name="Cart" lookup="java:app/SampleEJB/SampleCart")
Cart shoppingCart; 

L'application peut également déclarer la référence EJB à l'aide de l'élément <lookup-name> dans le descripteur de déploiement XML, comme dans l'exemple suivant.

<ejb-local-ref>
    <ejb-ref-name>Cart</ejb-ref-name>
    <lookup-name>java:app/SampleEJB/SampleCart</lookup-name>
    <injection-target>
    <injection-target-class>com.sample.SourceBean</injection-target-class>
    <injection-target-name>ShoppingCart</injection-target-name>
    </injection-target>
</ejb-local-ref> 

Dans l'exemple suivant, une application déclare une référence EJB à l'aide d'une annotation et fournit un attribut beanName pour la résolution.

@EJB(name="Cart" beanName="SampleEJB/SampleCart")
Cart shoppingCart;

Références d'environnement de ressource

Comme décrit dans la spécification Java EE 6, vous pouvez développer des applications pour déclarer des références vers des objets administrés qui sont associés à une ressource, telle qu'une instance de Connecter CCI InteractionSpec ou d'autres types d'objet gérés par le conteneur EJB, y compris javax.transaction.UserTransaction, javax.ejb.EJBContext, javax.ejb.TimerService, org.omg.CORBA.ORB, javax.validation.Validator, javax.validation.ValidatorFactory ou javax.enterprise.inject.spi.BeanManager.

Lorsqu'une application déclare une référence vers un objet administré, vous devez fournir une liaison à cet objet lorsque l'application est déployée. Vous pouvez fournir la liaison à l'aide de la console d'administration lorsque vous déployez l'application ou vous pouvez ajouter la liaison au fichier XML de liaison WebSphere, ibm-ejb-jar-bnd.xml ou ibm-web-bnd.xml.

Dans l'exemple suivant, une application déclare une référence d'environnement de ressource et fournit une liaison à la ressource :

@Resource(name="jms/ResponseQueue")
Queue responseQueue;


<session name="StatelessSampleBean">
    <resource-env-ref name="jms/ResponseQueue" binding-name="Jetstream/jms/ResponseQueue"/>
</session>

L'application peut également déclarer la référence d'environnement de ressource à l'aide de l'attribut lookup et ne requiert pas de liaison, comme dans l'exemple suivant :

@Resource(name="jms/ResponseQueue", lookup="Jetstream/jms/ResponseQueue")
Queue responseQueue;


<resource-env-ref>
    <resource-env-ref-name>jms/ResponseBean</resource-env-ref-name>
    <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
</resource-env-ref>

Lorsqu'une application déclare une référence à un type d'objet géré par conteneur, aucune liaison n'est utilisée. Le conteneur fournit l'instance correcte de l'objet référencé. Dans l'exemple suivant, une application déclare une référence d'environnement de ressource à un objet géré par conteneur : :

@Resource
javax.validation.Validator validator;

Références de ressource vers références de ressource

Une nouvelle zone de recherche dans l'annotation @Resource est ajoutée avec Java EE 6. Vous pouvez à présent déclarer une référence de ressource sur une référence de ressource, comme indiqué dans l'exemple suivant :
@Resource(name="java:global/env/jdbc/ds1ref",
              lookup="java:global/env/jdbc/ds1",
              authenticationType=Resource.AuthenticationType.APPLICATION,
              shareable=false)
    DataSource ds1ref;
@Resource(name="java:global/env/jdbc/ds1refref",
              lookup="java:global/env/jdbc/ds1ref",
              authenticationType=Resource.AuthenticationType.APPLICATION,
              shareable=true)
    DataSource ds1refref;
L'attribut lookup utilise l'imbrication de références la plus profonde qui, en l'occurrence, est "java:global/env/jdbc/ds1ref".

Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_ref
Nom du fichier : cejb_ref.html