Bueno, empiezo a jugar con Flex y aqui un Screencast mostrando un ejemplo.
Suerte
domingo, 6 de diciembre de 2009
viernes, 20 de noviembre de 2009
Recuperar el arranque en Win7, eliminando el GRUB de Linux
Recuperar el arranque en Win7, eliminando el GRUB de Linux
ejecutar esto desde la consola de recuperacion usando el DVD de instalacion Win7.
Suerte
bootrec.exe /fixmbr
bootrec.exe /fixboot
ejecutar esto desde la consola de recuperacion usando el DVD de instalacion Win7.
Suerte
martes, 17 de noviembre de 2009
Primer Stateless EJB3 con Eclipse y Weblogic 10
Primer Stateless EJB3 con Eclipse y Weblogic 10
Crear un Bean de Session Sin Estado es muy simple usando las anotaciones de EJB3, a continuación un ejemplo que realiza las operaciones basicas de una calculadora
La estructura del proyecto es
La carpeta jar contiene el EJB generado para el despliegue, este jar es construido con ayuda de Eclipse, esto creando inicialmente el proyecto de tipo EJB como sigue
Y configurando la version a usar
Las librerias que se usan para este proyecto son
Cabe señalar que se usa Eclipse 3.5 y WebLogic 10.3.1.0
Creamos la inteface de negocio,
Usando la anotacion @Remote indicamos que este EJB sera accesado remotamente, es decir, desde otra máquina virtual. Su implementacion
Con @Stateless se indica que sera un EJB de Session sin Estado, para este caso implementamos directamente la interface Calculadora, en caso de no querer hacerlo podemos hacer uso de la anotacion @Remote desde la clase como sigue
Para Weblogic la propiedad mappedName de Stateless le indica el nombre del JNDI.
Dejamos el META-INF/MANIFEST.MF como lo genera Eclipse
Para generar el jar simplemente hacemos clic derecho sobre el nombre del proyecto y seleccionamos
Después seleccionar el tipo de export
Y finalmente seleccionamos el destino y nombre del EJB, para este caso se exporta en la carpeta jar del proyecto
Ahora entramos a la consola de Weblogic, en mi caso usando
Seleccionamos del panel izquierdo Deployments
Seleccionamos install de la pantalla desplegada
Desde upload your file(s)
Seleccionamos el jar recien creado del ejb
Oprimimos Next, Selecciomos la aplicación BasicoLocalStateless.jar
Oprimimos Next y seleccionamos que lo instale como una aplicacion
Oprimimos Next y dejamos la configuración por default
Oprimimos Finish, si todo esta correcto vemos una pantalla en la cual nos indica que el EJB esta Activo.
Para ver el JNDI de este EJB seleccionamos dentro de Domain Structure, la opcion Servers y del lado derecho el Server en el cual estamos trabajando
Con esto vemos la opcion ‘View JNDI Tree’, la seleccionamos y vemos una nueva ventana con el arbol JNDI
Vemos nuestro JNDI de Calculadora
Creamos el cliente desde eclipse
Y al ejecutarlo vemos el resultado
Como vemos, para este ejercicio ya no es necesario crear el xml ejb-jar.xml !!
Codigo Java
JAR EJB
Suerte.
Crear un Bean de Session Sin Estado es muy simple usando las anotaciones de EJB3, a continuación un ejemplo que realiza las operaciones basicas de una calculadora
La estructura del proyecto es
La carpeta jar contiene el EJB generado para el despliegue, este jar es construido con ayuda de Eclipse, esto creando inicialmente el proyecto de tipo EJB como sigue
Y configurando la version a usar
Las librerias que se usan para este proyecto son
javaee.jar
wlclient.jar (para uso del cliente)
Cabe señalar que se usa Eclipse 3.5 y WebLogic 10.3.1.0
Creamos la inteface de negocio,
package org.dracof.ejb3.calculadora;
import javax.ejb.Remote;
@Remote
public interface Calculadora {
public int suma(int a, int b);
public int resta(int a, int b);
public float multiplicacion(int a, int b);
public float division(int a, int b);
}
Usando la anotacion @Remote indicamos que este EJB sera accesado remotamente, es decir, desde otra máquina virtual. Su implementacion
package org.dracof.ejb3.calculadora;
import javax.ejb.Stateless;
@Stateless (mappedName="ejb/calculadora" )
public class CalculadoraBean implements Calculadora {
public float division(int a, int b) {
if ( b!= 0 ) {
return a/b;
}
return -1;
}
public float multiplicacion(int a, int b) {
return a*b;
}
public int resta(int a, int b) {
return a-b;
}
public int suma(int a, int b) {
return a+b;
}
}
Con @Stateless se indica que sera un EJB de Session sin Estado, para este caso implementamos directamente la interface Calculadora, en caso de no querer hacerlo podemos hacer uso de la anotacion @Remote desde la clase como sigue
@Remote(Calculadora.class)
@Stateless (mappedName="ejb/calculadora")
public class CalculadoraBean {
…
}
Para Weblogic la propiedad mappedName de Stateless le indica el nombre del JNDI.
Dejamos el META-INF/MANIFEST.MF como lo genera Eclipse
Manifest-Version: 1.0
Class-Path:
Para generar el jar simplemente hacemos clic derecho sobre el nombre del proyecto y seleccionamos
Después seleccionar el tipo de export
Y finalmente seleccionamos el destino y nombre del EJB, para este caso se exporta en la carpeta jar del proyecto
Ahora entramos a la consola de Weblogic, en mi caso usando
http://localhost:7011/console/
Seleccionamos del panel izquierdo Deployments
Seleccionamos install de la pantalla desplegada
Desde upload your file(s)
Seleccionamos el jar recien creado del ejb
Oprimimos Next, Selecciomos la aplicación BasicoLocalStateless.jar
Oprimimos Next y seleccionamos que lo instale como una aplicacion
Oprimimos Next y dejamos la configuración por default
Oprimimos Finish, si todo esta correcto vemos una pantalla en la cual nos indica que el EJB esta Activo.
Para ver el JNDI de este EJB seleccionamos dentro de Domain Structure, la opcion Servers y del lado derecho el Server en el cual estamos trabajando
Con esto vemos la opcion ‘View JNDI Tree’, la seleccionamos y vemos una nueva ventana con el arbol JNDI
Vemos nuestro JNDI de Calculadora
Creamos el cliente desde eclipse
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
public class ClienteCalculadora {
public static void main(String[] args) {
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
prop.put(Context.PROVIDER_URL, "t3://localhost:7011/");
try {
InitialContext contexto = new InitialContext(prop);
Object obj = contexto.lookup("ejb.calculadora#org.dracof.ejb3.calculadora.Calculadora");
Calculadora calculadora = (Calculadora) PortableRemoteObject.narrow(obj, Calculadora.class);
int a = 10;
int b = 13;
int res = calculadora.suma(a, b);
System.out.println( "La suma de " + a + " + " + b + " es " + res);
} catch (NamingException e) {
e.printStackTrace();
}
}
}
Y al ejecutarlo vemos el resultado
La suma de 10 + 13 es 23
Como vemos, para este ejercicio ya no es necesario crear el xml ejb-jar.xml !!
Codigo Java
JAR EJB
Suerte.
martes, 3 de noviembre de 2009
Integración Spring y Hibernate (1)
La integracion de Hibernate con Spring es muy sencilla, se puede hacer de varias formas. Aquí vamos a ver la primera y mas simple.
Creamos una tabla Persona con la siguiente estructura
La estructura de este ejemplo es
Para obtener un sessionFactory usamos la clase HibernateUtil.java que se define como sigue
El mapeo de hibernate (Persona.hbml.xml) con la tabla Persona se realiza como sigue
Se crea el POJO para este mapeo
Definimos la interface para el DAO
Y su implementacion
En este caso vemos que se le inyecta el sessionFactory con Spring.
El XML de configuración para hibernate es
Con ayuda de Spring se inyecta el sessionFactory
Podemos usar el factory-method para obtener el sessionFactory desde HibernateUtil, por ultimo se crea una clase para probar lo programado
Si ejecutamos el Test la salida es la siguiente
Con este ejercicio tambien se puede omitir la construccion de la clase HibernateUtil modificando el applicationContext.xml inyectandole a la propiedad configLocation de
LocalSessionFactoryBean el valor classpath:hibernate.cfg.xml
Para esta configuracion conservamos completamente el archivo hibernate.cfg.xml, en otros casos solo lo podemos usar para el mapeo de recursos y en otros casos se puede hasta eliminar este archivo y escribir la configuración en el applicationContext.xml.
Codigo Java
Script SQL
Suerte.
Creamos una tabla Persona con la siguiente estructura
CREATE TABLE PERSONA (
NOMBRE VARCHAR(10),
APELLIDOP VARCHAR(20),
EDAD INTEGER
);
La estructura de este ejemplo es
Para obtener un sessionFactory usamos la clase HibernateUtil.java que se define como sigue
package org.dracof.hibernate.util;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
sessionFactory =
new Configuration().configure().buildSessionFactory();
}
public static SessionFactory getSessionFactory () {
return sessionFactory;
}
}
El mapeo de hibernate (Persona.hbml.xml) con la tabla Persona se realiza como sigue
<hibernate-mapping>
<class name="org.dracof.hibernate.Persona" table="PERSONA">
<id name="nombre" column="NOMBRE">
<generator class="assigned"/>
</id>
<property name="apellidoP" column="APELLIDOP"/>
<property name="edad" column="EDAD"/>
</class>
</hibernate-mapping>
Se crea el POJO para este mapeo
public class Persona {
private String nombre;
private String apellidoP;
private Integer edad;
//setters y getters
...
}
Definimos la interface para el DAO
package org.dracof.hibernate.dao;
import org.dracof.hibernate.Persona;
public interface PersonaDAO {
public void creaPersona (Persona persona);
public Persona obtienePersona (String nombre);
public void eliminaPersona (String nombre);
}
Y su implementacion
package org.dracof.hibernate.dao.impl;
import org.dracof.hibernate.Persona;
import org.dracof.hibernate.dao.PersonaDAO;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
public class PersonaDAOImpl implements PersonaDAO {
private SessionFactory sessionFactory;
public void setSessionFactory (SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public void creaPersona (Persona persona) {
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(persona);
session.getTransaction().commit();
}
public Persona obtienePersona (String nombre) {
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
Persona persona = (Persona)session.get(Persona.class, nombre);
session.getTransaction().commit();
return persona;
}
public void eliminaPersona (String nombre) {
Persona persona = new Persona();
persona.setNombre(nombre);
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.delete(persona);
session.getTransaction().commit();
}
}
En este caso vemos que se le inyecta el sessionFactory con Spring.
El XML de configuración para hibernate es
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">
org.apache.derby.jdbc.ClientDriver
</property>
<property name="connection.url">
jdbc:derby://localhost:1531/dracof
</property>
<property name="connection.username">dracof</property>
<property name="connection.password">dracof</property>
<property name="current_session_context_class">
thread
</property>
<property name="dialect">
org.hibernate.dialect.DerbyDialect
</property>
<property name="show_sql">true</property>
<mapping resource="org/dracof/hibernate/Persona.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Con ayuda de Spring se inyecta el sessionFactory
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="sessionFactory" factory-method="getSessionFactory"
class="org.dracof.hibernate.util.HibernateUtil"/>
<bean id="personaDAO"
class="org.dracof.hibernate.dao.impl.PersonaDAOImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
</beans>
Podemos usar el factory-method para obtener el sessionFactory desde HibernateUtil, por ultimo se crea una clase para probar lo programado
package org.dracof.test;
import org.dracof.hibernate.Persona;
import org.dracof.hibernate.dao.PersonaDAO;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.
ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
String appxml = "applicationContext.xml";
ApplicationContext context =
new ClassPathXmlApplicationContext( appxml );
PersonaDAO personaDAO =
(PersonaDAO)context.getBean("personaDAO");
//Creacion de Persona
Persona persona = new Persona();
persona.setNombre("Juan");
persona.setApellidoP("Perez");
persona.setEdad(50);
personaDAO.creaPersona( persona );
//Obtencion de Persona
persona = null;
persona = personaDAO.obtienePersona("Juan");
System.out.println( "Apellido de Juan: " +
persona.getApellidoP() );
Borrado de Persona
personaDAO.eliminaPersona( "Juan" );
}
}
Si ejecutamos el Test la salida es la siguiente
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
Hibernate: insert into PERSONA (APELLIDOP, EDAD, NOMBRE) values (?, ?, ?)
Hibernate: select persona0_.NOMBRE as NOMBRE0_0_, persona0_.APELLIDOP as APELLIDOP0_0_, persona0_.EDAD as EDAD0_0_ from PERSONA persona0_ where persona0_.NOMBRE=?
Apellido de Juan: Perez
Hibernate: select persona_.NOMBRE, persona_.APELLIDOP as APELLIDOP0_, persona_.EDAD as EDAD0_ from PERSONA persona_ where persona_.NOMBRE=?
Hibernate: delete from PERSONA where NOMBRE=?
Con este ejercicio tambien se puede omitir la construccion de la clase HibernateUtil modificando el applicationContext.xml inyectandole a la propiedad configLocation de
LocalSessionFactoryBean el valor classpath:hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="sessionFactory"
class="org.springframework.orm.
hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml"/>
</bean>
<bean id="personaDAO"
class="org.dracof.hibernate.dao.impl.PersonaDAOImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
</beans>
Para esta configuracion conservamos completamente el archivo hibernate.cfg.xml, en otros casos solo lo podemos usar para el mapeo de recursos y en otros casos se puede hasta eliminar este archivo y escribir la configuración en el applicationContext.xml.
Codigo Java
Script SQL
Suerte.
martes, 27 de octubre de 2009
Uso insert/update de property en Hibernate
Con estos ejercicios se muestra el uso de insert y update del tag property de hibernate que por default el valor de estas propiedades es true y la anotación @Transient para JPA
Veamos el primer caso usando el xml de mapeo de hibernate
Si hacemos operaciones de insert de Persona hibernate genera lo siguiente
o update
Como vemos se toman en cuenta todos los campos del mapeo, para el caso del insert APELLIDOP, EDAD, NOMBRE y para el update APELLIDOP=?, EDAD=?
Si agregamos la propiedad insert="false" o update="false" en el tag property para edad
O ambos
Vemos que el SQL generado ahora es
Para insert
Para update
Con esto vemos que hibernate ya no toma la propiedad edad para los insert/update.
Podemos tener el mismo resultado usando las anotaciones JPA con @Transient o la palabra reservada transient de java como sigue
o
Y obtenemos el mismo resultado.
Suerte.
Veamos el primer caso usando el xml de mapeo de hibernate
<hibernate-mapping>
<class name="org.dracof.hibernate.Persona" table="PERSONA">
<id name="nombre" column="NOMBRE">
<generator class="assigned"/>
</id>
<property name="apellidoP" column="APELLIDOP"/>
<property name="edad" column="EDAD"/>
</class>
</hibernate-mapping>
Si hacemos operaciones de insert de Persona hibernate genera lo siguiente
Hibernate: insert into PERSONA (APELLIDOP, EDAD, NOMBRE) values (?, ?, ?)
o update
Hibernate: update PERSONA set APELLIDOP=?, EDAD=? where NOMBRE=?
Como vemos se toman en cuenta todos los campos del mapeo, para el caso del insert APELLIDOP, EDAD, NOMBRE y para el update APELLIDOP=?, EDAD=?
Si agregamos la propiedad insert="false" o update="false" en el tag property para edad
<property name="edad" column="EDAD" insert="false"/>
<property name="edad" column="EDAD" update="false"/>
O ambos
<property name="edad" column="EDAD" insert="false" update="false"/>
Vemos que el SQL generado ahora es
Para insert
Hibernate: insert into PERSONA (APELLIDOP, NOMBRE) values (?, ?)
Para update
Hibernate: update PERSONA set APELLIDOP=? where NOMBRE=?
Con esto vemos que hibernate ya no toma la propiedad edad para los insert/update.
Podemos tener el mismo resultado usando las anotaciones JPA con @Transient o la palabra reservada transient de java como sigue
@Transient
@Column (name="EDAD")
private Integer edad;
o
@Column (name="EDAD")
private transient Integer edad;
Y obtenemos el mismo resultado.
Suerte.
sábado, 24 de octubre de 2009
Uso de dynamic-insert y dynamic-update en Hibernate
Uso de dynamic-insert y dynamic-update en Hibernate
Con este ejemplo salgo de la duda del uso de dynamic-insert y dynamic-update de class, cabe mencionar que ambas son opcionales y por default tienen el valor false.
Estructura de la tabla PERSONA
Todos los campos de la tabla aceptan valores nulos.
Insertamos valores y queda como sigue
Uso de dynamic-insert
Tenemos el objeto Persona para realizar la inserción como sigue
NOTA: Observamos que la propiedad EDAD contiene el valor NULL.
Dentro del mapeo de la tabla PERSONA en Persona.hbm.xml, tenemos la propiedad dynamic-insert a false
El query del insert generado por hibernate es el siguiente
Aquí con dynamic-insert a FALSE se hará el insert con todos los campos aun teniendo un valor NULL, por eso se toma en cuenta la columna EDAD
Ahora probamos con dynamic-insert a TRUE , con esto se hará el insert con todos los campos que tengan un valor DIFERENTE DE NULL
El query generado por Hibernate es
La columna EDAD ya no es tomada en cuenta por tener el valor NULL.
Uso de synamic-update
Probamos primero el caso de dynamic-update con FALSE
Con esto al obtener un registro y aún cuando no se a modificado algun campo de este objeto hibernate actrualiza los valores de todas las columnas aún cuando no se hayan modificado. Para realizar esta prueba se usa el siguiente fragmento de código
Vemos que solo se modifico la propiedad ApellidoP sin embargo tambien setea la columna EDAD aun cuando esta no se modifico, el update generado es
Ahora con dynamic-update con TRUE
Corremos el mismo ejemplo pero con dynamic-update con TRUE y vemos que solo setea el valor de la columna APELLIDOP y edad no la toma en cuenta porque no se modifico.
Codigo Java
Script SQL
Suerte.
Con este ejemplo salgo de la duda del uso de dynamic-insert y dynamic-update de class, cabe mencionar que ambas son opcionales y por default tienen el valor false.
Estructura de la tabla PERSONA
CREATE TABLE PERSONA (
NOMBRE VARCHAR(10),
APELLIDOP VARCHAR(20),
EDAD INTEGER
);
Todos los campos de la tabla aceptan valores nulos.
Insertamos valores y queda como sigue
Uso de dynamic-insert
Tenemos el objeto Persona para realizar la inserción como sigue
Persona persona = new Persona();
persona.setNombre("Nombre");
persona.setApellidoP("ApellidoP");
//persona.setEdad(15);
NOTA: Observamos que la propiedad EDAD contiene el valor NULL.
Dentro del mapeo de la tabla PERSONA en Persona.hbm.xml, tenemos la propiedad dynamic-insert a false
<class name="org.dracof.hibernate.Persona" table="PERSONA"
dynamic-insert="false">
El query del insert generado por hibernate es el siguiente
Hibernate: insert into PERSONA (APELLIDOP, EDAD, NOMBRE) values (?, ?, ?)
Aquí con dynamic-insert a FALSE se hará el insert con todos los campos aun teniendo un valor NULL, por eso se toma en cuenta la columna EDAD
Ahora probamos con dynamic-insert a TRUE , con esto se hará el insert con todos los campos que tengan un valor DIFERENTE DE NULL
<class name="org.dracof.hibernate.Persona" table="PERSONA"
dynamic-insert="true">
El query generado por Hibernate es
Hibernate: insert into PERSONA (APELLIDOP, NOMBRE) values (?, ?)
La columna EDAD ya no es tomada en cuenta por tener el valor NULL.
Uso de synamic-update
Probamos primero el caso de dynamic-update con FALSE
<class name="org.dracof.hibernate.Persona" table="PERSONA"
dynamic-update="false">
Con esto al obtener un registro y aún cuando no se a modificado algun campo de este objeto hibernate actrualiza los valores de todas las columnas aún cuando no se hayan modificado. Para realizar esta prueba se usa el siguiente fragmento de código
Persona persona = (Persona) session.load(Persona.class, "Dracof");
persona.setApellidoP("Dracof XYZ");
session.update(persona);
Vemos que solo se modifico la propiedad ApellidoP sin embargo tambien setea la columna EDAD aun cuando esta no se modifico, el update generado es
Hibernate: update PERSONA set APELLIDOP=?, EDAD=? where NOMBRE=?
Ahora con dynamic-update con TRUE
<class name="org.dracof.hibernate.Persona" table="PERSONA"
dynamic-update="true">
Corremos el mismo ejemplo pero con dynamic-update con TRUE y vemos que solo setea el valor de la columna APELLIDOP y edad no la toma en cuenta porque no se modifico.
Hibernate: update PERSONA set APELLIDOP=? where NOMBRE=?
Codigo Java
Script SQL
Suerte.
jueves, 22 de octubre de 2009
Ejemplo de Hibernate 3 y Anotaciones JPA Basico
Ejemplo de Hibernate 3 y anotaciones JPA Basico
Esta entrada muestra el uso de las anotaciones de JPA implementadas con Hibernate 3, la estructura del proyecto en eclipse es la siguiente
Al terminar se encuentra el script SQL y codigo en java.
Las librerias importadas son las siguientes
Las siguientes tres son para el uso de las anotaciones JPA en Hibernate
Este jar se usa para la conexion con Derby
Iniciamos la construccion de la clase HibernateUtil el cual nos provee un sessionFactory
Hay que destacar que en este ejemplo no usamos
Si no que usamos AnnotationConfiguration
Usamos las anotaciones JPA en nuestra clase Persona
Usamos las anotaciones de JPA @Entity, @Table, @Id, @Column, estas son muy intuitivas y faciles de entender.
El archivo hibernate.cfg.xml es el mismo pero con una excepcion
El mapeo ya no lo hacemos con mapping resource y no creamos el archivo Persona.hbm.xml
Si no con
Y con esto terminamos, hacemos un main con el siguiente codigo
Obteniendo como resultado
Codigo SQL
Codigo Java
Suerte.
Esta entrada muestra el uso de las anotaciones de JPA implementadas con Hibernate 3, la estructura del proyecto en eclipse es la siguiente
Al terminar se encuentra el script SQL y codigo en java.
Las librerias importadas son las siguientes
hibernate3.jar
dom4j-1.6.1.jar
log4j-1.2.15.jar
slf4j-api-1.4.2.jar
slf4j-log4j12-1.4.2.jar
commons-collections-3.1.jar
javassist-3.4.GA.jar
antlr-2.7.6.jar
jta-1.1.jar
Las siguientes tres son para el uso de las anotaciones JPA en Hibernate
hibernate-annotations.jar
hibernate-commons-annotations.jar
persistence.jar
Este jar se usa para la conexion con Derby
derbyclient.jar
Iniciamos la construccion de la clase HibernateUtil el cual nos provee un sessionFactory
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
}
Hay que destacar que en este ejemplo no usamos
Configuration().configure().buildSessionFactory();
Si no que usamos AnnotationConfiguration
AnnotationConfiguration().configure().buildSessionFactory();
Usamos las anotaciones JPA en nuestra clase Persona
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table (name="PERSONA")
public class Persona {
@Id
@Column(name="ID_PERSONA")
private Long idPersona;
@Column (name="NOMBRE" , nullable=false)
private String nombre;
@Column (name="APELLIDOP", nullable=false)
private String apellidoPaterno;
@Column (name="EDAD")
private Integer edad;
public Long getIdPersona() {
return idPersona;
}
public void setIdPersona(Long idPersona) {
this.idPersona = idPersona;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellidoPaterno() {
return apellidoPaterno;
}
public void setApellidoPaterno(String apellidoPaterno) {
this.apellidoPaterno = apellidoPaterno;
}
public Integer getEdad() {
return edad;
}
public void setEdad(Integer edad) {
this.edad = edad;
}
}
Usamos las anotaciones de JPA @Entity, @Table, @Id, @Column, estas son muy intuitivas y faciles de entender.
El archivo hibernate.cfg.xml es el mismo pero con una excepcion
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
<property name="connection.url">jdbc:derby://localhost:1521/dracof</property>
<property name="connection.user">dracof</property>
<property name="connection.password">dracof</property>
<property name="current_session_context_class">thread</property>
<property name="dialect">org.hibernate.dialect.DerbyDialect</property>
<property name="show_sql">true</property>
<mapping class="org.dracof.hibernate.annotations.Persona"/>
</session-factory>
</hibernate-configuration>
El mapeo ya no lo hacemos con mapping resource y no creamos el archivo Persona.hbm.xml
<mapping resource="org/dracof/hibernate/relacional/Persona.hbm.xml"/>
Si no con
<mapping class="org.dracof.hibernate.annotations.Persona"/>
Y con esto terminamos, hacemos un main con el siguiente codigo
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.getTransaction();
tx.begin();
Persona persona = (Persona)session.load(Persona.class, new Long(1));
System.out.println("Nombre: " + persona.getNombre());
tx.commit();
}
Obteniendo como resultado
Hibernate: select persona0_.ID_PERSONA as ID1_0_0_, persona0_.APELLIDOP as APELLIDOP0_0_, persona0_.EDAD as EDAD0_0_, persona0_.NOMBRE as NOMBRE0_0_ from PERSONA persona0_ where persona0_.ID_PERSONA=?
Nombre: DRACOF
Codigo SQL
Codigo Java
Suerte.
lunes, 19 de octubre de 2009
Ejercicio Basico Hibernate
Ejercicio Basico Hibernate
Para este ejercicio en Hibernate necesitamos una tabla PERSONA la cual es creada desde Apache Derby, hay una entrada en este blog el cual explica la creación de esta tabla
Creacion Tabla Derby
En la parte final están los scripts y código Java de este ejemplo.
Estructura de la tabla persona
Valores insertados
Estructura del proyecto en eclipse
Descargamos el archivo hibernate-distribution-3.3.0.GA-dist.zip desde la siguiente direccion
hibernate-distribution-3.3.0.GA-dist.zip
Lo descomprimimos he importamos las liberarías en nuestro proyecto en eclipse
Para usarlo con Derby importamos ademas las librerias
De inicio creamos una clase para la creación de sessiones hibernate
Creamos un pojo que representa la tabla persona
Con su archivo de configuración Persona.hbml.cml
Creamos el archivo de configuración de Hibernate (hibernate.cfg.xml)
Por último creamos una clase Test para probar lo anterios
Este es el resultado de ejecutar el main
Script de este ejercicio script.sql
Codigo de este ejercicio HibernateBasico.zip
Suerte.
Para este ejercicio en Hibernate necesitamos una tabla PERSONA la cual es creada desde Apache Derby, hay una entrada en este blog el cual explica la creación de esta tabla
Creacion Tabla Derby
En la parte final están los scripts y código Java de este ejemplo.
Estructura de la tabla persona
CREATE TABLE PERSONA (
NOMBRE VARCHAR(10),
APELLIDOP VARCHAR(20),
EDAD INTEGER
);
Valores insertados
INSERT INTO PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Dracof','Dracof',28);
INSERT INTO PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Juan','Perez',33);
INSERT INTO PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Maria E.','Andrade',60);
Estructura del proyecto en eclipse
Descargamos el archivo hibernate-distribution-3.3.0.GA-dist.zip desde la siguiente direccion
hibernate-distribution-3.3.0.GA-dist.zip
Lo descomprimimos he importamos las liberarías en nuestro proyecto en eclipse
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
javassist-3.4.GA.jar
jta-1.1.jar
slf4j-api-1.4.2.jar
hibernate3.jar
slf4j-log4j12-1.4.2.jar
log4j-1.2.15.jar
Para usarlo con Derby importamos ademas las librerias
derbyclient.jar
De inicio creamos una clase para la creación de sessiones hibernate
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable tr) {
tr.printStackTrace();
throw new ExceptionInInitializerError(tr);
}
}
public static SessionFactory getSessionFactory () {
return sessionFactory;
}
}
Creamos un pojo que representa la tabla persona
public class Persona {
private String nombre;
private String apellidoP;
private Integer edad;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellidoP() {
return apellidoP;
}
public void setApellidoP(String apellidoP) {
this.apellidoP = apellidoP;
}
public Integer getEdad() {
return edad;
}
public void setEdad(Integer edad) {
this.edad = edad;
}
}
Con su archivo de configuración Persona.hbml.cml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.dracof.hibernate.Persona" table="PERSONA">
<id name="nombre" column="NOMBRE">
<generator class="assigned"/>
</id>
<property name="apellidoP" column="APELLIDOP"/>
<property name="edad" column="EDAD"/>
</class>
</hibernate-mapping>
Creamos el archivo de configuración de Hibernate (hibernate.cfg.xml)
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">
org.apache.derby.jdbc.ClientDriver</property>
<property name="connection.url">
jdbc:derby://localhost:1530/dracof
</property>
<property name="connection.username">dracof</property>
<property name="connection.password">dracof</property>
<property name="current_session_context_class">thread</property>
<property name="dialect">
org.hibernate.dialect.DerbyDialect
</property>
<property name="show_sql">true</property>
<mapping resource="org/dracof/hibernate/Persona.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Por último creamos una clase Test para probar lo anterios
public static void main(String[] args) {
Session session =
HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Persona persona = (Persona)session.get(Persona.class, "Dracof");
System.out.println( persona.getApellidoP() );
session.close();
}
Este es el resultado de ejecutar el main
Hibernate: select persona0_.NOMBRE as NOMBRE0_0_, persona0_.APELLIDOP as APELLIDOP0_0_, persona0_.EDAD as EDAD0_0_ from PERSONA persona0_
where persona0_.NOMBRE=?
Dracof
Script de este ejercicio script.sql
Codigo de este ejercicio HibernateBasico.zip
Suerte.
martes, 13 de octubre de 2009
Instalacion de Derby en Windows.
Descargamos Derby desde
db-derby-10.5.3.0-bin.zip
Lo descomprimimos en algún lugar de nuestra preferencia, en mi caso C:\Software\
Iniciamos el servidor con el bat startNetworkServer.bat
Iniciamos la herramienta de ejecución de comandos JDBC, con java –jar derbyrun.jar ij dentro del directorio lib, ademas nos conectamos y creamos una base de datos con connect y create en la cadena de conexion
Podemos ver los esquemas existentes con el comando show schemas;
Creamos un esquema con create schema dracof;
ejecutamos de nuevo el comando show schemas; nos muestra el esquema dracof que acabamos de crear.
Creamos la tabla Persona con
Con el comando show tables; vemos las tablas existentes.
Insertamos valores en nuestra tabla recién creada
Y vemos el resultado lanzando un select sobre la tabla persona.
Ahora creamos una clasesita en Java para conectarnos a la base que hemos creado
Y obtenemos
Para evitar el calificar los objetos nos conectamos de la siguiente manera
Muy simple la instalacion, con esto podemos realizar pruebas de conexión desde Java sin tener un gestor de base de datos pesado en nuestro sistema.
Suerte.
db-derby-10.5.3.0-bin.zip
Lo descomprimimos en algún lugar de nuestra preferencia, en mi caso C:\Software\
Iniciamos el servidor con el bat startNetworkServer.bat
Iniciamos la herramienta de ejecución de comandos JDBC, con java –jar derbyrun.jar ij dentro del directorio lib, ademas nos conectamos y creamos una base de datos con connect y create en la cadena de conexion
Podemos ver los esquemas existentes con el comando show schemas;
Creamos un esquema con create schema dracof;
ij> create schema dracof;
0 filas insertadas/actualizadas/suprimidas
ejecutamos de nuevo el comando show schemas; nos muestra el esquema dracof que acabamos de crear.
Creamos la tabla Persona con
CREATE TABLE DRACOF.PERSONA (
NOMBRE VARCHAR(10),
APELLIDOP VARCHAR(20),
EDAD INTEGER
);
Con el comando show tables; vemos las tablas existentes.
Insertamos valores en nuestra tabla recién creada
INSERT INTO DRACOF.PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Dracof','Dracof',28);
INSERT INTO DRACOF.PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Juan','Perez',33);
INSERT INTO DRACOF.PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Maria E.','Andrade',60);
Y vemos el resultado lanzando un select sobre la tabla persona.
Ahora creamos una clasesita en Java para conectarnos a la base que hemos creado
public static void main(String[] args) {
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
try {
Connection conn=
DriverManager.getConnection(
"jdbc:derby://localhost:1527/dracof", "dracof", "dracof");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery( "SELECT * FROM PERSONA" );
while (rs.next()) {
System.out.println( "Nombre: " + rs.getString("NOMBRE") );
System.out.println( "Apellido P: " + rs.getString("APELLIDOP") );
System.out.println( "Edad: " + rs.getString("EDAD") );
System.out.println( "_________________________________________");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
Y obtenemos
Nombre: Dracof
Apellido P: Dracof
Edad: 28
_____________________________________________
Nombre: Juan
Apellido P: Perez
Edad: 33
_____________________________________________
Nombre: Maria E.
Apellido P: Andrade
Edad: 60
_____________________________________________
Para evitar el calificar los objetos nos conectamos de la siguiente manera
connect 'jdbc:derby://localhost:1527/dracof;user=dracof;password=dracof';
Muy simple la instalacion, con esto podemos realizar pruebas de conexión desde Java sin tener un gestor de base de datos pesado en nuestro sistema.
Suerte.
domingo, 11 de octubre de 2009
Instalacion Plugin Apache Derby - Eclipse
Instalacion del Plugin de Apache Derby para el IDE Eclipse Galileo.
Vemos que no existe una opción disponible para Apache Derby, la versión de eclipse para este ejemplo es la 3.5 (Galileo)
Descargamos los plugins desde las siguientes direcciones
derby_core_plugin_10.5.3.zip
derby_ui_doc_plugin_1.1.2.zip
Descomprimimos y copiamos los directorios
a la carpeta ECLIPSE_HOME\plugins, reiniciamos eclipse y vemos que tenemos ya la opción en menú de Apache Derby
Damos clic derecho en el proyecto, seleccionamos Apache Derby y oprimimos en “Add Apache Derby nature”, con esto nos muestra un mensaje en la parte inferior de eclipse que dice
Con esto el menú cambia mostrando
Seleccionamos la opción “Start Derby Network Server”
Si vemos un mensaje dentro de la consola de eclipse
Ya esta listo para aceptar conexiones en el puerto 1527.
Si recibimos un mensaje de error diciendo que el puerto ya está en uso, podemos cambiar el puerto por default (1527) por el de nuestra preferencia, hacemos clic derecho del proyecto, seleccionamos Propiedades, Apache Derby y vemos una ventana en la cual podemos cambiar el puerto en “Network Server Port”
Suerte.
Vemos que no existe una opción disponible para Apache Derby, la versión de eclipse para este ejemplo es la 3.5 (Galileo)
Descargamos los plugins desde las siguientes direcciones
derby_core_plugin_10.5.3.zip
derby_ui_doc_plugin_1.1.2.zip
Descomprimimos y copiamos los directorios
org.apache.derby.core_10.5.3
org.apache.derby.plugin.doc_1.1.2
org.apache.derby.ui_1.1.2
a la carpeta ECLIPSE_HOME\plugins, reiniciamos eclipse y vemos que tenemos ya la opción en menú de Apache Derby
Damos clic derecho en el proyecto, seleccionamos Apache Derby y oprimimos en “Add Apache Derby nature”, con esto nos muestra un mensaje en la parte inferior de eclipse que dice
Con esto el menú cambia mostrando
Seleccionamos la opción “Start Derby Network Server”
Si vemos un mensaje dentro de la consola de eclipse
Se ha instalado el administrador de seguridad utilizando la directiva de seguridad de servidores básica.
Apache Derby Network Server - 10.5.3.0 - (802917) se ha iniciado y est?° listo para aceptar conexiones en el puerto 1527
Ya esta listo para aceptar conexiones en el puerto 1527.
Si recibimos un mensaje de error diciendo que el puerto ya está en uso, podemos cambiar el puerto por default (1527) por el de nuestra preferencia, hacemos clic derecho del proyecto, seleccionamos Propiedades, Apache Derby y vemos una ventana en la cual podemos cambiar el puerto en “Network Server Port”
Suerte.
jueves, 3 de septiembre de 2009
Primer Clase de Dominio Grails
Creamos un proyecto llamado claseDominio como sigue
Nos metemos al proyecto recien creado
Creamos una clase de dominio
Modificamos la clase de dominio Persona ubicada en ../claseDominio/grails-app/domain/org/dracof/ agragando
Quedando al final como sigue
Creamos un controller Persona
Después de creado el controller PersonaController ubicado en ../claseDominio/grails-app/controllers/org/dracof/ lo modificamos y añadimos la linea def scaffold = org.dracof.Persona quedando
y arrancamos nuestra aplicacion
Entramos desde un navegador con
http://localhost:8080/claseDominio/
Oprimimos en
org.dracof.PersonaController
y nos muestra la lista de personas
Creamos una nueva persona en New Persona y aparece los campos de nuestra clase de dominio
Llenamos los campos y oprimimos Create, nos muestra el registro recien creado listo par ser borrado o editado
Dentro de Persona List nos muestra la lista de personas creadas
Seleccionamos el Id de la persona y oprimimos delete, nos pregunta si estamos seguros de borrar
Aceptamos y el registro es borrado, tenemos tambien la opcion Edit con la que podemos editar por completo nuestro registro.
Cabe mencionar que nuestros formularios no contienen ningun tipo de validación, por lo que los campos pueden insertarse sin valores y los acepta.
Simple no?
Suerte.
grails create-app claseDominio
Nos metemos al proyecto recien creado
cd claseDominio
Creamos una clase de dominio
grails create-domain-class org.dracof.persona
Modificamos la clase de dominio Persona ubicada en ../claseDominio/grails-app/domain/org/dracof/ agragando
String nombre
String apellidoPaterno
String apellidoMaterno
int edad
Quedando al final como sigue
package org.dracof
class Persona {
String nombre
String apellidoPaterno
String apellidoMaterno
int edad
static constraints = {
}
}
Creamos un controller Persona
grails create-controller org.dracof.Persona
Después de creado el controller PersonaController ubicado en ../claseDominio/grails-app/controllers/org/dracof/ lo modificamos y añadimos la linea def scaffold = org.dracof.Persona quedando
package org.dracof
class PersonaController {
def scaffold = org.dracof.Persona
}
y arrancamos nuestra aplicacion
grails run-app
Entramos desde un navegador con
http://localhost:8080/claseDominio/
Oprimimos en
org.dracof.PersonaController
y nos muestra la lista de personas
Creamos una nueva persona en New Persona y aparece los campos de nuestra clase de dominio
Llenamos los campos y oprimimos Create, nos muestra el registro recien creado listo par ser borrado o editado
Dentro de Persona List nos muestra la lista de personas creadas
Seleccionamos el Id de la persona y oprimimos delete, nos pregunta si estamos seguros de borrar
Aceptamos y el registro es borrado, tenemos tambien la opcion Edit con la que podemos editar por completo nuestro registro.
Cabe mencionar que nuestros formularios no contienen ningun tipo de validación, por lo que los campos pueden insertarse sin valores y los acepta.
Simple no?
Suerte.
jueves, 20 de agosto de 2009
Primer Controller en Grails
Creamos un proyecto grails con el comando grails create-app como sigue
dando paso a la creación de archivos y directorios de grails
Después nos posicionamos dentro del proyecto recien creado
Ahora iniciamos nuestra aplicación con el siguiente comando de grails run-app
Con esto nuestra aplicación esta corriendo
Por default corre en el puerto 8080 si deseamos cambiarla por ejemplo al puerto 8181 escribimos
Si se quiere cambiar el puerto de la aplicación de forma permanente se puede crear el archvo BuildConfig.groovy con la entrada
grails.server.port.http=9090 en la ruta %proyecto%\grails-app\conf
Ahora para crear un controller escribimos el siguiente comando dentro del proyecto
Vemos que el comando se ejecuta de manera exitosa
Ahora solo refrescamos el navegador (Ctrl.+F5) y vemos el controller recien creado
Este es creado (como lo dice cuando se ejecuta el comando create-controller) en la ruta C:\proyGrails\test\grails-app\views\contr con el nombre de ContrController.groovy, como vemos grails crea el controller con la primera letra mayúscula y concatenandole Controller, lo editamos y escribimos lo siguiente
Para llamar accion escribimos en el navegador
http://localhost:8181/test/contr/accion
o
http://localhost:8181/test/contr/ (por default toma index y este es redireccionado a accion).
Suerte.
grails create-app test
dando paso a la creación de archivos y directorios de grails
C:\proyGrails: grails create-app test
Welcome to Grails 1.2-M2 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: C:\Software\grails-1.2-M2
Base Directory: C:\proyGrails
Running script C:\Software\grails-1.2-M2\scripts\CreateApp_.groovy
Environment set to development
Application name not specified. Please enter:
test
[mkdir] Created dir: C:\proyGrails\test\src
[mkdir] Created dir: C:\proyGrails\test\src\java
[mkdir] Created dir: C:\proyGrails\test\src\groovy
[mkdir] Created dir: C:\proyGrails\test\grails-app
[mkdir] Created dir: C:\proyGrails\test\grails-app\controllers
[mkdir] Created dir: C:\proyGrails\test\grails-app\services
[mkdir] Created dir: C:\proyGrails\test\grails-app\domain
[mkdir] Created dir: C:\proyGrails\test\grails-app\taglib
[mkdir] Created dir: C:\proyGrails\test\grails-app\utils
[mkdir] Created dir: C:\proyGrails\test\grails-app\views
[mkdir] Created dir: C:\proyGrails\test\grails-app\views\layouts
[mkdir] Created dir: C:\proyGrails\test\grails-app\i18n
[mkdir] Created dir: C:\proyGrails\test\grails-app\conf
[mkdir] Created dir: C:\proyGrails\test\test
[mkdir] Created dir: C:\proyGrails\test\test\unit
[mkdir] Created dir: C:\proyGrails\test\test\integration
[mkdir] Created dir: C:\proyGrails\test\scripts
[mkdir] Created dir: C:\proyGrails\test\web-app
[mkdir] Created dir: C:\proyGrails\test\web-app\js
[mkdir] Created dir: C:\proyGrails\test\web-app\css
[mkdir] Created dir: C:\proyGrails\test\web-app\images
[mkdir] Created dir: C:\proyGrails\test\web-app\META-INF
[mkdir] Created dir: C:\proyGrails\test\lib
[mkdir] Created dir: C:\proyGrails\test\grails-app\conf\spring
[mkdir] Created dir: C:\proyGrails\test\grails-app\conf\hibernate
[propertyfile] Creating new property file: C:\proyGrails\test\application.properties
[copy] Copying 1 resource to C:\proyGrails\test
[unjar] Expanding: C:\proyGrails\test\grails-shared-files.jar into C:\proyGrails\test
[delete] Deleting: C:\proyGrails\test\grails-shared-files.jar
[copy] Copying 1 resource to C:\proyGrails\test
[unjar] Expanding: C:\proyGrails\test\grails-app-files.jar into C:\proyGrails\test
[delete] Deleting: C:\proyGrails\test\grails-app-files.jar
[move] Moving 1 file to C:\proyGrails\test
[move] Moving 1 file to C:\proyGrails\test
[move] Moving 1 file to C:\proyGrails\test
[move] Moving 1 file to C:\proyGrails\test
[move] Moving 1 file to C:\proyGrails\test
[move] Moving 1 file to C:\proyGrails\test
...
Found events script in plugin tomcat
Created Grails Application at C:\proyGrails/test
Después nos posicionamos dentro del proyecto recien creado
C:\proyGrails: cd test
Ahora iniciamos nuestra aplicación con el siguiente comando de grails run-app
C:\proyGrails\test: grails run-app
Welcome to Grails 1.2-M2 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: C:\Software\grails-1.2-M2
Base Directory: C:\proyGrails\test
Running script C:\Software\grails-1.2-M2\scripts\RunApp.groovy
Environment set to development
Running Grails application..
18/08/2009 04:52:43 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
18/08/2009 04:52:43 PM org.apache.catalina.core.StandardService start
INFO: Starting service Tomcat
18/08/2009 04:52:43 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0-snapshot
18/08/2009 04:52:43 PM org.apache.catalina.startup.ContextConfig defaultWebConfig
INFO: No default web.xml
18/08/2009 04:52:45 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Server running. Browse to http://localhost:8080/test
Con esto nuestra aplicación esta corriendo
Por default corre en el puerto 8080 si deseamos cambiarla por ejemplo al puerto 8181 escribimos
grails -Dserver.port 8181 run-app
Si se quiere cambiar el puerto de la aplicación de forma permanente se puede crear el archvo BuildConfig.groovy con la entrada
grails.server.port.http=9090 en la ruta %proyecto%\grails-app\conf
Ahora para crear un controller escribimos el siguiente comando dentro del proyecto
grails create-controller contr
Vemos que el comando se ejecuta de manera exitosa
C:\proyGrails\test>grails create-controller contr
Welcome to Grails 1.2-M2 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: C:\Software\grails-1.2-M2
Base Directory: C:\proyGrails\test
Running script C:\Software\grails-1.2-M2\scripts\CreateController.groovy
Environment set to development
Created Controller for Contr
[mkdir] Created dir: C:\proyGrails\test\grails-app\views\contr
Created Tests for Contr
C:\proyGrails\test>
Ahora solo refrescamos el navegador (Ctrl.+F5) y vemos el controller recien creado
Este es creado (como lo dice cuando se ejecuta el comando create-controller) en la ruta C:\proyGrails\test\grails-app\views\contr con el nombre de ContrController.groovy, como vemos grails crea el controller con la primera letra mayúscula y concatenandole Controller, lo editamos y escribimos lo siguiente
class ContrController {
def index = {
redirect (action:accion)
}
def accion = {
render "Desde controller ControlerController";
}
}
Para llamar accion escribimos en el navegador
http://localhost:8181/test/contr/accion
o
http://localhost:8181/test/contr/ (por default toma index y este es redireccionado a accion).
Suerte.
jueves, 13 de agosto de 2009
Instalacion OpenEJB en Windows
Descargamos los siguientes archivos
En mi caso los archivos openejb-3.1.1.zip y apache-tomcat-6.0.20.zip los descomprimo en C:\Software, quedando las siguientes rutas
Colocamos la aplicación openejb.war en C:\Software\tomcat-6.0.20\webapps y arrancamos tomcat
Abrirmos un navegador y tecleamos la siguiente ruta http://localhost:8080/openejb/
Dentro de la carpeta C:\Software\tomcat-6.0.20\conf\ se crea el archivo openejb.xml el cual lo editamos y agregamos un path para poner nuestros ejb y sean reconocidos por OpenEJB y agregamos el path <Deployments dir="C:\Software\openejb-3.1.1\apps\" /> como sigue
Con un jar de pruebas lo colocamos en la ruta definida anteriormente y reiniciamos tomcat
Con esto dentro entramos nuevemante a http://localhost:8080/openejb/ dentro de JNDI
Seleccionamos CalculadoraBeanLocal mostrandonos lo siguiente
Seleccionamos Invoke this EJB
Y nos muestra los metodos de este EJB
Seleccionamos un servicio para escribir sus parametros
Y lo invocamos, dándonos el siguiente resultado
Descargar CalculadoraEJB
calculadoraEJB.jar
Suerte.
openejb-3.1.1.zip
openejb.war,
apache-tomcat-6.0.20.zip
En mi caso los archivos openejb-3.1.1.zip y apache-tomcat-6.0.20.zip los descomprimo en C:\Software, quedando las siguientes rutas
C:\Software\openejb-3.1.1
C:\Software\tomcat-6.0.20
Colocamos la aplicación openejb.war en C:\Software\tomcat-6.0.20\webapps y arrancamos tomcat
Abrirmos un navegador y tecleamos la siguiente ruta http://localhost:8080/openejb/
Dentro de la carpeta C:\Software\tomcat-6.0.20\conf\ se crea el archivo openejb.xml el cual lo editamos y agregamos un path para poner nuestros ejb y sean reconocidos por OpenEJB y agregamos el path <Deployments dir="C:\Software\openejb-3.1.1\apps\" /> como sigue
Con un jar de pruebas lo colocamos en la ruta definida anteriormente y reiniciamos tomcat
Con esto dentro entramos nuevemante a http://localhost:8080/openejb/ dentro de JNDI
Seleccionamos CalculadoraBeanLocal mostrandonos lo siguiente
Seleccionamos Invoke this EJB
Y nos muestra los metodos de este EJB
Seleccionamos un servicio para escribir sus parametros
Y lo invocamos, dándonos el siguiente resultado
Descargar CalculadoraEJB
calculadoraEJB.jar
Suerte.
Suscribirse a:
Entradas (Atom)