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