miércoles, 12 de mayo de 2010

Uso de Rangos en Groovy

Uso de Rangos en Groovy

Para definir un rango se usa .., por ejemplo

10..20

un rango del 10 hasta el 20.

Para que el 20 sean exlusivo se debe definir con el menor que, por ejemplo

10..<20

un rango del 10 hasta el 19

A continuacion unos ejemplos


if ( 1 in 3..5 ) {
println "Si esta dentro del rango"
} else {
println "No esta dentro del rango"
}
//No esta dentro del rango



for (i in 1..4) {
print "${i} ";
}
//1 2 3 4



println ""
for (i in 1..<4) {
print "${i} ";
}
//1 2 3



println ""
for (a in 'a'..'g') {
print "${a} "
}
//a b c d e f g



println ""
(1..10).each(){ a->
print "${a} "
}
//1 2 3 4 5 6 7 8 9 10



println ""
5.each () {
print "${it}"
}
//5



println ""
switch (2) {
case 1..4:
print "Dentro del rango 1-4"
break
case 5..10:
print "Dentro del rango 5-10"
break
}
//Dentro del rango 1-4

Si ejecutamos el programa la salida es

No esta dentro del rango
1 2 3 4
1 2 3
a b c d e f g
1 2 3 4 5 6 7 8 9 10
5
Dentro del rango 1-4

Suerte.

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.