Ejb3 In Action Cap5

Nei capitoli precedenti si sono viste le funzionalità base, in questo vedremo le caratteristiche avanzate per dependency injection, JNDI lookups, EJB interceptors, and the EJB timer service.

5.1 EJB internals

Vediamo come il container si comporta nel gestire gli EJB

5.1.1 EJB behind the scenes

continuare

5.2 Accessing resources using DI and JNDI

………………………

5.2.1 Resource injection using @Resource

L'annotazione @Resource è di gran lunga il più versatile meccanismo per DI in EJB 3. In molti casi l'annotazione è usata per iniettare data source JDBC, risorse JMS e contesti EJB. Certamente l'annotazione può essere usata perr e-mail server resources, environment entries, ORB reference, o perfino EJB references.
Per semplicità useremo degli esempi di data source.
Questo primo esempio recupera la connessione del data source

@Stateless
public class PlaceBidBean implements PlaceBid {
    ...
    @Resource(name="jdbc/actionBazaarDB")
    private javax.sql.DataSource dataSource;
<resource-ref>
      <res-ref-name>jdbc/actionBazaarDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
</resource-ref>

Il valore del parametro name in @Resource è tradotto in una nome JNDI pienamente qualificato java:comp/env/[value of the name parameter] , nel nostro esempio il path completo del jndi per la risorsa sarà java:comp/env/jdbc/actionBazaarDB . Se non viene specificato il nome dell'elemento nell'annotazione @Resource il nome del JNDI per la risorsa sarà nella forma java:comp/env/ [bean class name including package]/ [name of the annotated field/property]. Se non specifico il nome dell'elemento nell'annotazione @Resource il container userà java:comp/env/actionbazaar.buslogic.PlaceBidBean/dataSource.
Dietro la scena il container risolverà il riferimento JNDI alla risorsa ed effettuarà il bind della risorsa al ENC durante il deployment . Se la risorsa non viene trovata durante la injection , il container lancerà una runtime exception e il bean diventerà inusabile.

The environment naming context and resolving global JNDI names

Environment naming context (ENC) permette portabilità …..

Salvo diversa indicazione, il contenuto di questa pagina è sotto licenza Creative Commons Attribution-ShareAlike 3.0 License