Declarações do recurso de aplicativo Java EE

É possível configurar aplicativos Java™ Enterprise Edition (Java EE) para declarar dependências de recursos externos e parâmetros de configuração. Esses recursos podem ser injetados no código do aplicativo ou podem ser acessados pelo aplicativo por meio de Java Naming and Directory Interface (JNDI).

Referências de recursos permitem que um aplicativo defina e use nomes lógicos que é possível ligar a recursos quando o aplicativo é implementado.

Os tipos de recurso a seguir podem ser declarados pelos aplicativos Java EE: entradas de ambiente simples, referências de Enterprise JavaBeans (EJB), referências de serviço da Web, referências de connection factory do gerenciador de recursos, referências de ambiente de recursos, referências de destino de mensagens, referências de unidade de persistência e referências de contexto de persistência.

Entradas de Ambiente Simples

É possível definir parâmetros de configuração em seus aplicativos Java EE para customizar lógica de negócios com o uso de entradas de ambiente simples. Conforme descrito no aplicativo Java EE 6, os valores de entrada de ambiente simples podem ser um dos seguintes tipos Java: String, Character, Bye, Short, Integer, Long, Boolean, Double, Float, Class e qualquer subclasse de Enum.

Nota: O tipo Java, Class, e qualquer subclasse de Enum são novos no Java EE 6.

O provedor de aplicativos deve declarar todas as entradas de ambiente simples acessadas a partir do código do aplicativo. As entradas de ambiente simples são declaradas com o uso de anotações (javax.annotation.Resource) no código do aplicativo ou com o uso de elementos env-entry no descritor de implementação XML.

No exemplo a seguir de um aplicativo, anotações declaram entradas de ambiente:

// Tentar novamente o intervalo em milissegundos
@Resource long retryInterval = 3000;

No exemplo anterior, o valor padrão do campo é 3000. É possível usar env-entry-value, que você define no descritor de implementação XML para alterar este valor.

No exemplo a seguir, um aplicativo declara uma entrada de ambiente simples do tipo Class e define Class para ser injetado usando um elemento env-entry-value no descritor de implementação 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>

No exemplo anterior, o valor do campo está configurado como o objeto Class com.sample.trace.StdOutTraceFormatter.

No exemplo a seguir, um aplicativo declara uma entrada de ambiente simples chamada validationMode como uma subclasse de Enum na classe com.sample.Order e configura o valor Enum de CALLBACK para injetar usando elementos no descritor de implementação 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>

No exemplo anterior, o campo validationMode está configurado para o valor Enum CALLBACK. Use a mesma abordagem quando você usar anotações e código XML para declarar entradas de ambiente simples; por exemplo:

@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>
Nota: O suporte à entrada de ambiente simples do tipo Java, Class, e à qualquer subclasse de Enum é novo para o Java EE 6. Antes, você podia desenvolver seus aplicativos para declarar estes tipos como recursos de aplicativo usando o elemento resource-env-ref no descritor de implementação XML ou usando a anotação javax.annotation.Resource. Para aplicativos que usavam estes tipos Java com a anotação javax.annotation.Resource, a propriedade de sistema com.ibm.websphere.ejbcontainer.EE5Compatibility deve ser ativada. Sem a propriedade de sistema EE5Compatibility, o elemento binding-name do elemento resource-env-ref no arquivo ibm-ejb-jar-bnd.xml é ignorado, já que o tipo de dados agora é tratado como uma entrada de ambiente simples, e não como uma referência de ambiente de recursos.
Nota: O elemento do descritor de implementação <lookup-name> e o atributo de anotação lookup são novos no Java EE 6. Eles especificam o nome JNDI de um EJB ou recurso referenciado, relativo ao contexto de nomenclatura java:comp/env. Se qualquer um for usado em uma entrada de ambiente simples, não será possível usar <env-entry-value> no mesmo <env-entry>.

Referências do Enterprise JavaBeans (EJB)

Conforme descrito na especificação Java EE 6, é possível desenvolver seus aplicativos Java EE para declarar referências a homes de enterprise bean ou instâncias de enterprise bean usando nomes lógicos chamados referências EJB.

Quando um aplicativo declara uma referência a um EJB, o EJB de referência é resolvido com uma das seguintes técnicas.

  • Especificar uma ligação EJB no arquivo ibm-ejb-jar-bnd.xml ou arquivo ibm-web-bnd.xml
  • Especificar um elemento <ejb-link> no arquivo ejb-jar.xml ou arquivo web.xml
  • Especificar um atributo beanName na anotação javax.ejb.EJB
  • Especificar um elemento <lookup-name> no arquivo ejb-jar.xml ou arquivo web.xml
  • Especificar um atributo de consulta na anotação javax.ejb.EJB
  • Localizar um enterprise bean que implementa a interface declarada como o tipo da referência EJB (chamada AutoLink).

O contêiner EJB tenta resolver a referência EJB usando as técnicas anteriores na ordem em que estão listadas.

Nota: Se <lookup-name> ou lookup for usado em uma referência EJB, não será possível usar <ejb-link> ou beanName na mesma referência EJB.
Nota: Todos os exemplos de referência EJB a seguir assumem que o bean SampleCart tenha uma única interface. Se o bean SampleCart tinha diversas interfaces, inclua o seguinte sufixo no final da ligação, elemento <ejb-link> ou atributo beanName : !com.sample.Cart.

No exemplo a seguir, um aplicativo declara uma referência EJB usando uma anotação e fornece uma ligação para resolução.

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


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

No exemplo a seguir, um aplicativo declara uma referência EJB usando uma anotação e fornece um elemento ejb-link para resolução.

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


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

No exemplo a seguir, um aplicativo declara uma referência EJB usando uma anotação e fornece um atributo de consulta para resolução do bean de origem com.sample.SourceBean.

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

O aplicativo poderia declarar alternativamente a referência EJB usando o elemento <lookup-name> no descritor de implementação XML, como no exemplo a seguir.

<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> 

No exemplo a seguir, um aplicativo declara uma referência EJB usando uma anotação e fornece um atributo beanName para resolução.

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

Referência de Ambiente de Recursos

Conforme descrito na especificação Java EE 6, é possível desenvolver aplicativos para declarar referências a objetos administrados que estão associados a um recurso, como uma instância Connecter CCI InteractionSpec, ou a outros tipos de objetos gerenciados pelo contêiner EJB, incluindo javax.transaction.UserTransaction, javax.ejb.EJBContext, javax.ejb.TimerServcie, org.omg.CORBA.ORB, javax.validation.Validator, javax.validation.ValidatorFactory ou javax.enterprise.inject.spi.BeanManager.

Quando um aplicativo declara uma referência a um objeto administrado, você deve fornecer uma ligação ao objeto administrado quando o aplicativo é implementado. É possível fornecer a ligação usando o console administrativo quando você implementa o aplicativo ou incluir a ligação no arquivo XML de ligação do WebSphere, ibm-ejb-jar-bnd.xml ou ibm-web-bnd.xml.

No exemplo a seguir, um aplicativo declara uma referência de ambiente de recursos e fornece uma ligação para o recurso:

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


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

O aplicativo poderia declarar alternativamente a referência de ambiente de recursos usando o atributo de consulta, e não exigir uma ligação, como no seguinte exemplo:

@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>

Quando um aplicativo declara uma referência a um tipo de objeto gerenciado por contêiner, uma ligação não é usada. O contêiner fornece a instância correta do objeto de referência. No exemplo a seguir, um aplicativo declara uma referência de ambiente de recursos para um objeto gerenciado por contêiner:

@Resource
javax.validation.Validator validator;

Referências de Recurso para Referências de Recurso

Um novo campo de consulta na anotação @Resource é incluído com o Java EE 6. Agora é possível declarar uma referência de recurso para uma referência de recurso, conforme mostrado no seguinte exemplo:
@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;
A consulta usa o aninhamento mais íntimo de referências, que, nesse caso, é "java:global/env/jdbc/ds1ref".

Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_ref
Nome do arquivo: cejb_ref.html