lunes, 3 de mayo de 2010

Uso de env-entry de EJB 3.0

Uso de env-entry de EJB 3.0

Con este ejercicio se muestra el uso de la inyeccion de una cadena desde el XML de EJB 3.0. Desde el XML se inyecta la cadena Dracof a la propiedad nombreCliente del EJB Stateless.

Primero se define la clase SaludoBean como un Stateless con nombre InyeccionSaludoBean y JNDI ejb/InyeccionSaludoBean.


@Stateless(name="InyeccionSaludoBean", mappedName="ejb/InyeccionSaludoBean")
public class SaludoBean implements Saludo {

@Resource(name="nombreCliente")
private String nombreCliente;

@Override
public void imprimeSaludo() {
if (nombreCliente == null) {
System.out.println("El nombreCliente es NULL");
} else {
System.out.println("El nombreCliente NO! es NULL");
}
System.out.println("Dentro del metodo imprimeSaludo " + nombreCliente);
}
}

Se observa que el EJB define la propiedad nombreCliente el cual se le inyectara el recurso con nombre nombreCliente.

El recurso nombreCliente sera definido en el XML ejb-jar-xml como sigue

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
<display-name>Inyeccion</display-name>

<enterprise-beans>
<session>
<ejb-name>InyeccionSaludoBean</ejb-name>
<env-entry>
<env-entry-name>nombreCliente</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>Dracof</env-entry-value>
</env-entry>
</session>
</enterprise-beans>
</ejb-jar>

Dentro del XML se define el nombre de la entrada de entorno (env-entry-name) su tipo (env-entry-type) y valor (env-entry-value).

Se crea un cliente para ejecutar el metodo imprimeSaludo() del Stateless.

Nota: Para este ejercicio el jar del EJB se deploya en un WebLogic 10
 
public static void main(String[] args) {
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
props.put(Context.PROVIDER_URL, "t3://localhost:7030");

try{
Context context = new InitialContext(props);
Object obj = context.lookup("ejb.InyeccionSaludoBean#org.dracof.inyeccion.Saludo");
Saludo saludo = (Saludo) PortableRemoteObject.narrow(obj, Saludo.class);

saludo.imprimeSaludo();
} catch (Exception ex) {
ex.printStackTrace();
}
}


El nombreCliente NO! es NULL
Dentro del metodo imprimeSaludo Dracof

Suerte.

No hay comentarios:

Publicar un comentario