<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6104584203949807739</id><updated>2011-10-06T16:39:54.168-07:00</updated><category term='Unix'/><category term='Struts2'/><category term='jQuery'/><category term='EJB3'/><category term='Derby'/><category term='Hibernate'/><category term='Grails'/><category term='Flex'/><category term='Otros'/><category term='Spring'/><category term='Servers'/><category term='Java'/><category term='Groovy'/><title type='text'>Experiencias Java</title><subtitle type='html'>Yo no se si las cosas están bien hechas, lo que si se es que funcionan! Blog personal para tener a la mano cualquier informacion tecnica importante para mi.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-7709275388105667643</id><published>2011-01-07T09:06:00.000-08:00</published><updated>2011-01-07T09:21:22.187-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servers'/><title type='text'>Deploy desde linea de comandos Weblogic</title><content type='html'>Deploy desde linea de comandos Weblogic&lt;br /&gt;&lt;br /&gt;Esto es muy util, ahorra muchisimo tiempo y evita estar entrando a la consola de administracion de Weblogic, este comando lo use en la version 10 y sin problema&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;java weblogic.Deployer -deploy -adminurl t3://10.103.130.51:7005 -username weblogic01 &lt;br&gt;-password weblogic01 -name jsfTest jsf-test.war&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Lo anterior para realizar un deploy pero existen las opciones -redeploy, -undeploy&lt;br /&gt;&lt;br /&gt;En caso de que no encuentre la clase y nos lance la excepcion NoClassDefFoundError corremos los siguientes archivos &lt;br /&gt;&lt;br /&gt;En Windows&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;C:\%WEBLOGIC_HOME%\user_projects\domains\domain\bin&amp;gt;setDomainEnv.cmd&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;En Unix se correo setDomainEnv.sh&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Fuente&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E13222_01/wls/docs90/deployment/wldeployer.html#1007071"/&gt;Wldeployer OracleWL&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-7709275388105667643?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/7709275388105667643/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2011/01/deploy-desde-linea-de-comandos-weblogic.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/7709275388105667643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/7709275388105667643'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2011/01/deploy-desde-linea-de-comandos-weblogic.html' title='Deploy desde linea de comandos Weblogic'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-899450841791244358</id><published>2010-12-01T07:35:00.000-08:00</published><updated>2010-12-01T07:39:38.563-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Otros'/><title type='text'>Aprobado el examen SCBCD 5 !</title><content type='html'>Bueno, despues de mucho tiempo de escribir nada en el blog, por fin me estoy desocupando de mi trabajo, termine de estudiar para la certificacion de Oracle SCBCD 5 y logre pasar el examen, com esta ya tengo tres en mi CV!&lt;br /&gt;&lt;br /&gt;Ahora estoy esperando a que liberen las nuevas certificaciones de Oracle para la version 6 de JEE!&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-899450841791244358?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/899450841791244358/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2010/12/aprobado-el-examen-scbcd-5.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/899450841791244358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/899450841791244358'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2010/12/aprobado-el-examen-scbcd-5.html' title='Aprobado el examen SCBCD 5 !'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-4228823661348522825</id><published>2010-05-12T13:53:00.000-07:00</published><updated>2010-05-12T14:02:00.109-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><title type='text'>Uso de Rangos en Groovy</title><content type='html'>Uso de Rangos en Groovy&lt;br /&gt;&lt;br /&gt;Para definir un rango se usa .., por ejemplo&lt;br /&gt;&lt;br /&gt;10..20&lt;br /&gt;&lt;br /&gt;un rango del 10 hasta el 20.&lt;br /&gt;&lt;br /&gt;Para que el 20 sean exlusivo se debe definir con el menor que, por ejemplo &lt;br /&gt;&lt;br /&gt;10..&lt;20&lt;br /&gt;&lt;br /&gt;un rango del 10 hasta el 19&lt;br /&gt;&lt;br /&gt;A continuacion unos ejemplos&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;if ( 1 in 3..5 ) {&lt;br /&gt;    println "Si esta dentro del rango"&lt;br /&gt;} else {&lt;br /&gt;    println "No esta dentro del rango"&lt;br /&gt;}&lt;br /&gt;//No esta dentro del rango&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;for (i in 1..4) {&lt;br /&gt;    print "${i} ";&lt;br /&gt;}&lt;br /&gt;//1 2 3 4 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;println ""&lt;br /&gt;for (i in 1..&lt;4) {&lt;br /&gt;    print "${i} ";&lt;br /&gt;}&lt;br /&gt;//1 2 3 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;println ""&lt;br /&gt;for (a in 'a'..'g') {&lt;br /&gt;    print "${a} "&lt;br /&gt;}&lt;br /&gt;//a b c d e f g &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;println ""&lt;br /&gt;(1..10).each(){ a-&gt;&lt;br /&gt;    print "${a} "&lt;br /&gt;}&lt;br /&gt;//1 2 3 4 5 6 7 8 9 10 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;println ""&lt;br /&gt;5.each () {&lt;br /&gt;    print "${it}"&lt;br /&gt;}&lt;br /&gt;//5&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;println ""&lt;br /&gt;switch (2) {&lt;br /&gt; case 1..4: &lt;br /&gt;  print "Dentro del rango 1-4"&lt;br /&gt;  break&lt;br /&gt; case 5..10:&lt;br /&gt;  print "Dentro del rango 5-10"&lt;br /&gt;  break&lt;br /&gt;}&lt;br /&gt;//Dentro del rango 1-4&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si ejecutamos el programa la salida es&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;No esta dentro del rango&lt;br /&gt;1 2 3 4 &lt;br /&gt;1 2 3 &lt;br /&gt;a b c d e f g &lt;br /&gt;1 2 3 4 5 6 7 8 9 10 &lt;br /&gt;5&lt;br /&gt;Dentro del rango 1-4&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-4228823661348522825?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/4228823661348522825/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2010/05/uso-de-rangos-en-groovy.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/4228823661348522825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/4228823661348522825'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2010/05/uso-de-rangos-en-groovy.html' title='Uso de Rangos en Groovy'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-8956357645509389491</id><published>2010-05-03T10:49:00.000-07:00</published><updated>2010-05-03T10:55:09.241-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB3'/><title type='text'>Uso de  env-entry de EJB 3.0</title><content type='html'>Uso de  env-entry de EJB 3.0&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Primero se define la clase SaludoBean como un Stateless con nombre InyeccionSaludoBean y JNDI ejb/InyeccionSaludoBean.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;@Stateless(name="InyeccionSaludoBean", mappedName="ejb/InyeccionSaludoBean")&lt;br /&gt;public class SaludoBean implements Saludo {&lt;br /&gt;&lt;br /&gt; @Resource(name="nombreCliente")&lt;br /&gt; private String nombreCliente;&lt;br /&gt; &lt;br /&gt; @Override&lt;br /&gt; public void imprimeSaludo() {&lt;br /&gt;  if (nombreCliente == null) {&lt;br /&gt;   System.out.println("El nombreCliente es NULL");&lt;br /&gt;  } else {&lt;br /&gt;   System.out.println("El nombreCliente NO! es NULL");&lt;br /&gt;  }&lt;br /&gt;  System.out.println("Dentro del metodo imprimeSaludo " + nombreCliente);  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Se observa que el EJB define la propiedad nombreCliente el cual se le inyectara el recurso con nombre nombreCliente.&lt;br /&gt;&lt;br /&gt;El recurso nombreCliente sera definido en el XML ejb-jar-xml como sigue&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;ejb-jar version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" &lt;br /&gt;  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" &lt;br /&gt;  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"&amp;gt;&lt;br /&gt;   &amp;lt;display-name&amp;gt;Inyeccion&amp;lt;/display-name&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;enterprise-beans&amp;gt;&lt;br /&gt;  &amp;lt;session&amp;gt;&lt;br /&gt;   &amp;lt;ejb-name&amp;gt;InyeccionSaludoBean&amp;lt;/ejb-name&amp;gt;&lt;br /&gt;   &amp;lt;env-entry&amp;gt;&lt;br /&gt;    &amp;lt;env-entry-name&amp;gt;nombreCliente&amp;lt;/env-entry-name&amp;gt;&lt;br /&gt;    &amp;lt;env-entry-type&amp;gt;java.lang.String&amp;lt;/env-entry-type&amp;gt;&lt;br /&gt;    &amp;lt;env-entry-value&amp;gt;Dracof&amp;lt;/env-entry-value&amp;gt;&lt;br /&gt;   &amp;lt;/env-entry&amp;gt;&lt;br /&gt;  &amp;lt;/session&amp;gt;&lt;br /&gt; &amp;lt;/enterprise-beans&amp;gt;&lt;br /&gt;&amp;lt;/ejb-jar&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;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).&lt;br /&gt;&lt;br /&gt;Se crea un cliente para ejecutar el metodo imprimeSaludo() del Stateless.&lt;br /&gt;&lt;br /&gt;Nota: Para este ejercicio el jar del EJB se deploya en un WebLogic 10&lt;br /&gt;&lt;pre name="code" class="java"&gt; &lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  Properties props = new Properties();&lt;br /&gt;  props.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");&lt;br /&gt;  props.put(Context.PROVIDER_URL, "t3://localhost:7030");&lt;br /&gt;  &lt;br /&gt;  try{&lt;br /&gt;   Context context = new InitialContext(props);&lt;br /&gt;   Object obj = context.lookup("ejb.InyeccionSaludoBean#org.dracof.inyeccion.Saludo");&lt;br /&gt;   Saludo saludo = (Saludo) PortableRemoteObject.narrow(obj, Saludo.class);&lt;br /&gt;   &lt;br /&gt;   saludo.imprimeSaludo();&lt;br /&gt;  } catch (Exception ex) {&lt;br /&gt;   ex.printStackTrace();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;El nombreCliente NO! es NULL&lt;br /&gt;Dentro del metodo imprimeSaludo Dracof&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-8956357645509389491?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/8956357645509389491/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2010/05/uso-de-env-entry-de-ejb-30.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/8956357645509389491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/8956357645509389491'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2010/05/uso-de-env-entry-de-ejb-30.html' title='Uso de  env-entry de EJB 3.0'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-9023226818772662392</id><published>2010-02-21T08:35:00.000-08:00</published><updated>2010-02-21T08:51:08.402-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Otros'/><title type='text'>Passwords en Oracle 11g</title><content type='html'>Despues de una instalacion exitosa de Oracle 11g en W7, intente entrar a la consola de administracion con&lt;br /&gt;&lt;br /&gt;https://localhost:1158/em/&lt;br /&gt;&lt;br /&gt;antes para usar el password SYS abri una session SQL PLUS usando el comando &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;sqlplus / as sysdba&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;y ejecutando el siguiente alter al usuario SYS&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;alter user SYS identified by "manager";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/otros/passorcl11/SQLplusPass.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Con esto ya puedo usar Oracle 11g y hacer uso de la BD.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-9023226818772662392?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/9023226818772662392/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2010/02/passwords-en-oracle-11g.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/9023226818772662392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/9023226818772662392'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2010/02/passwords-en-oracle-11g.html' title='Passwords en Oracle 11g'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-7746263768220578830</id><published>2010-01-13T20:16:00.000-08:00</published><updated>2010-01-13T20:28:20.563-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Struts2'/><title type='text'>Atributo method del action en Struts2</title><content type='html'>Atributo method del action en Struts2&lt;br /&gt;&lt;br /&gt;En el primer ejemplo de struts2 (&lt;a href="http://dracof.blogspot.com/2009/08/primer-programa-struts2.html "&gt;PrimerProgramaStruts2&lt;/a&gt;) se muestra la accion org.dracof.struts2.actions.MiAccion con alias miAccion, cuando se realice el llamado a esta por default struts buscara el metodo public String execute(), si no lo encuentra lanza una excepcion diciendo que El recurso requerido (No result defined for action org.dracof.struts2.actions.MiAccion  and result success) no esta disponible.&lt;br /&gt;&lt;br /&gt;Para escribir multiples metodos dentro del Action se puede usar el atributo method del elemento action de nuestro xml, quedando&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;…&lt;br /&gt;&amp;lt;struts&amp;gt;&lt;br /&gt; &amp;lt;package name="default" extends="struts-default" namespace="/"&amp;gt;&lt;br /&gt;  &amp;lt;action name="miAccion" method="otroMetodo" class="org.dracof.struts2.actions.MiAccion"&amp;gt;&lt;br /&gt;   &amp;lt;result name="success"&amp;gt;resultado.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt; &amp;lt;/package&amp;gt;&lt;br /&gt;&amp;lt;/struts&amp;gt;&lt;br /&gt;…&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Se modifica el nombre del metodo execute por otroMetodo de la clase MiAccion y se manda el mensaje ‘Pasando por el metodo otroMetodo de MiAccion’&lt;br /&gt;Quedando la clase como sigue&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public class MiAccion  {&lt;br /&gt;   public String otroMetodo() throws Exception {&lt;br /&gt;      System.out.println("Pasando por el metodo otroMetodo de MiAccion!");&lt;br /&gt;      return "success";&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Con esto cada vez que se llame a miAccion se ejecutara el metodo otroMetodo.&lt;br /&gt;&lt;br /&gt;Si probamos el ejercicio velos la salida a consola&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/struts2/methodaction-1/consolaAtributoMethod.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Descargar war &lt;a href=" http://sites.google.com/site/dracof/struts2/methodaction-1/MethodAction.war"&gt;MethodAction.war&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Descargar proyecto &lt;a href=" http://sites.google.com/site/dracof/struts2/methodaction-1/MethodAction.zip"&gt;MethodAction.zip&lt;/a&gt;war&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-7746263768220578830?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/7746263768220578830/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2010/01/atributo-method-del-action-en-struts2.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/7746263768220578830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/7746263768220578830'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2010/01/atributo-method-del-action-en-struts2.html' title='Atributo method del action en Struts2'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-3204193039366561823</id><published>2009-12-06T21:51:00.000-08:00</published><updated>2009-12-06T21:54:49.453-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Ejercicio Basico con Flex</title><content type='html'>Bueno, empiezo a jugar con Flex y aqui un Screencast mostrando un ejemplo.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/IECdQlkgfuY&amp;hl=es_MX&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/IECdQlkgfuY&amp;hl=es_MX&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-3204193039366561823?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/3204193039366561823/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/12/ejercicio-basico-con-flex.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/3204193039366561823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/3204193039366561823'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/12/ejercicio-basico-con-flex.html' title='Ejercicio Basico con Flex'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-5161955618404358148</id><published>2009-11-20T22:25:00.000-08:00</published><updated>2009-11-20T22:28:23.950-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Otros'/><title type='text'>Recuperar el arranque en Win7, eliminando el GRUB de Linux</title><content type='html'>Recuperar el arranque en Win7, eliminando el GRUB de Linux&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;bootrec.exe /fixmbr&lt;br /&gt;bootrec.exe /fixboot&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ejecutar esto desde la consola de recuperacion usando el DVD de instalacion Win7.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Suerte&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-5161955618404358148?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/5161955618404358148/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/11/recuperar-el-arranque-en-win7.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/5161955618404358148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/5161955618404358148'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/11/recuperar-el-arranque-en-win7.html' title='Recuperar el arranque en Win7, eliminando el GRUB de Linux'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-1098556341131896956</id><published>2009-11-17T09:33:00.001-08:00</published><updated>2009-11-17T09:44:38.455-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB3'/><title type='text'>Primer Stateless EJB3 con Eclipse y Weblogic 10</title><content type='html'>Primer Stateless EJB3 con Eclipse y Weblogic 10&lt;br /&gt;&lt;br /&gt;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&lt;br /&gt;&lt;br /&gt;La estructura del proyecto es &lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/EstructuraProyecto.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;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&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/NewProject.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Y configurando la version a usar&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/NewEJBProject.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Las librerias que se usan para este proyecto son&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;   javaee.jar &lt;br /&gt;   wlclient.jar (para uso del cliente)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Cabe señalar que se usa Eclipse 3.5 y WebLogic 10.3.1.0&lt;br /&gt;&lt;br /&gt;Creamos la inteface de negocio, &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.ejb3.calculadora;&lt;br /&gt;&lt;br /&gt;import javax.ejb.Remote;&lt;br /&gt;&lt;br /&gt;@Remote&lt;br /&gt;public interface Calculadora {&lt;br /&gt; &lt;br /&gt;   public int suma(int a, int b);&lt;br /&gt; &lt;br /&gt;   public int resta(int a, int b);&lt;br /&gt; &lt;br /&gt;   public float multiplicacion(int a, int b);&lt;br /&gt; &lt;br /&gt;   public float division(int a, int b);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Usando la anotacion @Remote indicamos que este EJB sera accesado remotamente, es decir, desde otra máquina virtual. Su implementacion &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.ejb3.calculadora;&lt;br /&gt;&lt;br /&gt;import javax.ejb.Stateless;&lt;br /&gt;&lt;br /&gt;@Stateless (mappedName="ejb/calculadora" )&lt;br /&gt;public class CalculadoraBean implements Calculadora {&lt;br /&gt;&lt;br /&gt;   public float division(int a, int b) {&lt;br /&gt;      if ( b!= 0 ) {&lt;br /&gt;         return a/b;&lt;br /&gt;      }&lt;br /&gt; return -1;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public float multiplicacion(int a, int b) {&lt;br /&gt;      return a*b;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public int resta(int a, int b) {&lt;br /&gt;      return a-b;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public int suma(int a, int b) {&lt;br /&gt;      return a+b;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;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&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;@Remote(Calculadora.class)&lt;br /&gt;@Stateless (mappedName="ejb/calculadora")&lt;br /&gt;public class CalculadoraBean {&lt;br /&gt;   …&lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para Weblogic la propiedad mappedName de Stateless le indica el nombre del JNDI.&lt;br /&gt;&lt;br /&gt;Dejamos el META-INF/MANIFEST.MF como lo genera Eclipse&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;Manifest-Version: 1.0&lt;br /&gt;Class-Path: &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para generar el jar simplemente hacemos clic derecho sobre el nombre del proyecto y seleccionamos &lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/ExportEclipse.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Después seleccionar el tipo de export&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/SelectTipoExport.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Y finalmente seleccionamos el destino y nombre del EJB, para este caso se exporta en la carpeta jar del proyecto&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/DestinationExport.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Ahora entramos a la consola de Weblogic, en mi caso usando&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;http://localhost:7011/console/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Seleccionamos del panel izquierdo Deployments&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/DomainStructureDeployments.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Seleccionamos install de la pantalla desplegada&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/DeploymentsInstall.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Desde upload your file(s)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/UploadYourFiles.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Seleccionamos el jar recien creado del ejb&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/SelectPathEJB.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Oprimimos Next, Selecciomos la aplicación BasicoLocalStateless.jar&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/SelectJarEJB.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Oprimimos Next y seleccionamos que lo instale como una aplicacion &lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/InstallDeploymentApplication.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Oprimimos Next y dejamos la configuración por default&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/InstallDeploymentApplicationConfig.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Oprimimos Finish, si todo esta correcto vemos una pantalla en la cual nos indica que el EJB esta Activo.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/SuccessFullInstallEJB.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;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&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/ListServers.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Con esto vemos la opcion ‘View JNDI Tree’, la seleccionamos y vemos una nueva ventana con el arbol JNDI&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/ViewJNDITree.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Vemos nuestro JNDI de Calculadora&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/ejb3/primerstateless/JNDICalculadora.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Creamos el cliente desde eclipse&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;import java.util.Properties;&lt;br /&gt;&lt;br /&gt;import javax.naming.Context;&lt;br /&gt;import javax.naming.InitialContext;&lt;br /&gt;import javax.naming.NamingException;&lt;br /&gt;import javax.rmi.PortableRemoteObject;&lt;br /&gt;&lt;br /&gt;public class ClienteCalculadora {&lt;br /&gt; &lt;br /&gt;   public static void main(String[] args) {&lt;br /&gt;      Properties prop = new Properties();&lt;br /&gt;      prop.put(Context.INITIAL_CONTEXT_FACTORY,&lt;br /&gt;             "weblogic.jndi.WLInitialContextFactory");&lt;br /&gt;      prop.put(Context.PROVIDER_URL, "t3://localhost:7011/");&lt;br /&gt;      try {&lt;br /&gt;         InitialContext contexto = new InitialContext(prop);&lt;br /&gt;         Object obj = contexto.lookup("ejb.calculadora#org.dracof.ejb3.calculadora.Calculadora");&lt;br /&gt;   &lt;br /&gt;         Calculadora calculadora = (Calculadora) PortableRemoteObject.narrow(obj, Calculadora.class);&lt;br /&gt;   &lt;br /&gt;         int a = 10;&lt;br /&gt;         int b = 13;&lt;br /&gt;         int res = calculadora.suma(a, b);&lt;br /&gt;         System.out.println( "La suma de " + a + " + " + b + " es " + res);&lt;br /&gt;      } catch (NamingException e) {&lt;br /&gt;         e.printStackTrace();&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Y al ejecutarlo vemos el resultado&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;La suma de 10 + 13 es 23&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Como vemos, para este ejercicio ya no es necesario crear el xml ejb-jar.xml !!&lt;br /&gt;&lt;br /&gt;&lt;a href=" http://sites.google.com/site/dracof/ejb3/primerstateless/BasicoLocalStatelessProject.zip "/&gt;Codigo Java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=" http://sites.google.com/site/dracof/ejb3/primerstateless/BasicoLocalStateless.zip"/&gt;JAR EJB&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-1098556341131896956?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/1098556341131896956/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/11/primer-stateless-ejb3-con-eclipse-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/1098556341131896956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/1098556341131896956'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/11/primer-stateless-ejb3-con-eclipse-y.html' title='Primer Stateless EJB3 con Eclipse y Weblogic 10'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-8583284660248992404</id><published>2009-11-03T09:36:00.001-08:00</published><updated>2009-11-03T09:39:47.197-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Integración Spring y Hibernate (1)</title><content type='html'>La integracion de Hibernate con Spring es muy sencilla, se puede hacer de varias formas. Aquí vamos a ver la primera y mas simple.&lt;br /&gt;&lt;br /&gt;Creamos una tabla Persona con la siguiente estructura&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;CREATE TABLE PERSONA (&lt;br /&gt; NOMBRE VARCHAR(10),&lt;br /&gt; APELLIDOP VARCHAR(20),&lt;br /&gt; EDAD INTEGER&lt;br /&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;La estructura de este ejemplo es &lt;br /&gt;&lt;br /&gt;&lt;img  src="http://sites.google.com/site/dracof/spring/integracionhibernate1/Proyecto.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Para obtener un sessionFactory usamos la clase HibernateUtil.java que se define como sigue &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.hibernate.util;&lt;br /&gt;&lt;br /&gt;import org.hibernate.SessionFactory;&lt;br /&gt;import org.hibernate.cfg.Configuration;&lt;br /&gt;&lt;br /&gt;public class HibernateUtil {&lt;br /&gt;&lt;br /&gt;   private static final SessionFactory sessionFactory;&lt;br /&gt; &lt;br /&gt;   static {&lt;br /&gt;      sessionFactory =   &lt;br /&gt;         new Configuration().configure().buildSessionFactory();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public static SessionFactory getSessionFactory () {&lt;br /&gt;      return sessionFactory;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;El mapeo de hibernate (Persona.hbml.xml) con la tabla Persona se realiza como sigue&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;hibernate-mapping&amp;gt;&lt;br /&gt;   &amp;lt;class name="org.dracof.hibernate.Persona" table="PERSONA"&amp;gt;&lt;br /&gt;      &amp;lt;id name="nombre" column="NOMBRE"&amp;gt;&lt;br /&gt;         &amp;lt;generator class="assigned"/&amp;gt;&lt;br /&gt;      &amp;lt;/id&amp;gt;&lt;br /&gt;      &amp;lt;property name="apellidoP" column="APELLIDOP"/&amp;gt;&lt;br /&gt;      &amp;lt;property name="edad" column="EDAD"/&amp;gt;&lt;br /&gt;   &amp;lt;/class&amp;gt;&lt;br /&gt;&amp;lt;/hibernate-mapping&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Se crea el POJO para este mapeo&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public class Persona {&lt;br /&gt; &lt;br /&gt;   private String nombre;&lt;br /&gt; &lt;br /&gt;   private String apellidoP;&lt;br /&gt; &lt;br /&gt;   private Integer edad;&lt;br /&gt;&lt;br /&gt;   //setters y getters&lt;br /&gt;   ...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Definimos la interface para el DAO &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.hibernate.dao;&lt;br /&gt;&lt;br /&gt;import org.dracof.hibernate.Persona;&lt;br /&gt;&lt;br /&gt;public interface PersonaDAO {&lt;br /&gt; &lt;br /&gt;   public void creaPersona (Persona persona);&lt;br /&gt;&lt;br /&gt;   public Persona obtienePersona (String nombre);&lt;br /&gt; &lt;br /&gt;   public void eliminaPersona (String nombre);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Y su implementacion &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.hibernate.dao.impl;&lt;br /&gt;&lt;br /&gt;import org.dracof.hibernate.Persona;&lt;br /&gt;import org.dracof.hibernate.dao.PersonaDAO;&lt;br /&gt;import org.hibernate.Session;&lt;br /&gt;import org.hibernate.SessionFactory;&lt;br /&gt;&lt;br /&gt;public class PersonaDAOImpl implements PersonaDAO {&lt;br /&gt; &lt;br /&gt;   private SessionFactory sessionFactory;&lt;br /&gt; &lt;br /&gt;   public void setSessionFactory (SessionFactory sessionFactory) {&lt;br /&gt;      this.sessionFactory = sessionFactory;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public void creaPersona (Persona persona) {&lt;br /&gt;      Session session = sessionFactory.getCurrentSession();&lt;br /&gt;      session.beginTransaction();&lt;br /&gt;      session.save(persona);&lt;br /&gt;      session.getTransaction().commit();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public Persona obtienePersona (String nombre) {&lt;br /&gt;      Session session = sessionFactory.getCurrentSession();&lt;br /&gt;  &lt;br /&gt;      session.beginTransaction();&lt;br /&gt;      Persona persona = (Persona)session.get(Persona.class, nombre);&lt;br /&gt;      session.getTransaction().commit();&lt;br /&gt;  &lt;br /&gt;      return persona;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public void eliminaPersona (String nombre) {&lt;br /&gt;      Persona persona = new Persona();&lt;br /&gt;      persona.setNombre(nombre);&lt;br /&gt;  &lt;br /&gt;      Session session = sessionFactory.getCurrentSession();&lt;br /&gt;  &lt;br /&gt;      session.beginTransaction();&lt;br /&gt;      session.delete(persona);&lt;br /&gt;      session.getTransaction().commit();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;En este caso vemos que se le inyecta el sessionFactory con Spring.&lt;br /&gt;&lt;br /&gt;El XML de configuración para hibernate es &lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"&lt;br /&gt;"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;hibernate-configuration&amp;gt;&lt;br /&gt;   &amp;lt;session-factory&amp;gt;&lt;br /&gt;      &amp;lt;property name="connection.driver_class"&amp;gt;&lt;br /&gt;         org.apache.derby.jdbc.ClientDriver&lt;br /&gt;      &amp;lt;/property&amp;gt;&lt;br /&gt;      &amp;lt;property name="connection.url"&amp;gt;&lt;br /&gt;         jdbc:derby://localhost:1531/dracof&lt;br /&gt;      &amp;lt;/property&amp;gt;&lt;br /&gt;      &amp;lt;property name="connection.username"&amp;gt;dracof&amp;lt;/property&amp;gt;&lt;br /&gt;      &amp;lt;property name="connection.password"&amp;gt;dracof&amp;lt;/property&amp;gt;&lt;br /&gt;  &lt;br /&gt;      &amp;lt;property name="current_session_context_class"&amp;gt;&lt;br /&gt;         thread&lt;br /&gt;      &amp;lt;/property&amp;gt;&lt;br /&gt;      &amp;lt;property name="dialect"&amp;gt;&lt;br /&gt;         org.hibernate.dialect.DerbyDialect&lt;br /&gt;      &amp;lt;/property&amp;gt;&lt;br /&gt;      &amp;lt;property name="show_sql"&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;  &lt;br /&gt;      &amp;lt;mapping resource="org/dracof/hibernate/Persona.hbm.xml"/&amp;gt;&lt;br /&gt;   &amp;lt;/session-factory&amp;gt;&lt;br /&gt;&amp;lt;/hibernate-configuration&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Con ayuda de Spring se inyecta el sessionFactory&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;beans&amp;gt;&lt;br /&gt;   &amp;lt;bean id="sessionFactory" factory-method="getSessionFactory" &lt;br /&gt;      class="org.dracof.hibernate.util.HibernateUtil"/&amp;gt;&lt;br /&gt; &lt;br /&gt;   &amp;lt;bean id="personaDAO" &lt;br /&gt;      class="org.dracof.hibernate.dao.impl.PersonaDAOImpl"&amp;gt;&lt;br /&gt; &amp;lt;property name="sessionFactory" ref="sessionFactory"/&amp;gt;&lt;br /&gt;   &amp;lt;/bean&amp;gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Podemos usar el factory-method para obtener el sessionFactory desde HibernateUtil, por ultimo se crea una clase para probar lo programado&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.test;&lt;br /&gt;&lt;br /&gt;import org.dracof.hibernate.Persona;&lt;br /&gt;import org.dracof.hibernate.dao.PersonaDAO;&lt;br /&gt;import org.springframework.context.ApplicationContext;&lt;br /&gt;import org.springframework.context.support.&lt;br /&gt;                  ClassPathXmlApplicationContext;&lt;br /&gt;&lt;br /&gt;public class Test {&lt;br /&gt;&lt;br /&gt;   public static void main(String[] args) {&lt;br /&gt;      String appxml = "applicationContext.xml";&lt;br /&gt;      ApplicationContext context = &lt;br /&gt;            new ClassPathXmlApplicationContext( appxml );&lt;br /&gt;  &lt;br /&gt;      PersonaDAO personaDAO = &lt;br /&gt;           (PersonaDAO)context.getBean("personaDAO");&lt;br /&gt;  &lt;br /&gt;      //Creacion de Persona&lt;br /&gt;      Persona persona = new Persona();&lt;br /&gt;      persona.setNombre("Juan");&lt;br /&gt;      persona.setApellidoP("Perez");&lt;br /&gt;      persona.setEdad(50);  &lt;br /&gt;      personaDAO.creaPersona( persona );&lt;br /&gt; &lt;br /&gt;      //Obtencion de Persona&lt;br /&gt;      persona = null;&lt;br /&gt;      persona = personaDAO.obtienePersona("Juan");&lt;br /&gt;      System.out.println( "Apellido de Juan: " + &lt;br /&gt;                           persona.getApellidoP() );&lt;br /&gt;&lt;br /&gt;      Borrado de Persona &lt;br /&gt;      personaDAO.eliminaPersona( "Juan" );&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si ejecutamos el Test la salida es la siguiente&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).&lt;br /&gt;log4j:WARN Please initialize the log4j system properly.&lt;br /&gt;Hibernate: insert into PERSONA (APELLIDOP, EDAD, NOMBRE) values (?, ?, ?)&lt;br /&gt;Hibernate: select persona0_.NOMBRE as NOMBRE0_0_, persona0_.APELLIDOP as APELLIDOP0_0_, persona0_.EDAD as EDAD0_0_ from PERSONA persona0_ where persona0_.NOMBRE=?&lt;br /&gt;Apellido de Juan: Perez&lt;br /&gt;Hibernate: select persona_.NOMBRE, persona_.APELLIDOP as APELLIDOP0_, persona_.EDAD as EDAD0_ from PERSONA persona_ where persona_.NOMBRE=?&lt;br /&gt;Hibernate: delete from PERSONA where NOMBRE=?&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Con este ejercicio tambien se puede omitir la construccion de la clase HibernateUtil modificando el applicationContext.xml inyectandole a la propiedad configLocation de &lt;br /&gt;LocalSessionFactoryBean el valor classpath:hibernate.cfg.xml&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;beans&amp;gt;&lt;br /&gt;   &amp;lt;bean id="sessionFactory" &lt;br /&gt;    class="org.springframework.orm.&lt;br /&gt;hibernate3.LocalSessionFactoryBean"&amp;gt;&lt;br /&gt; &amp;lt;property name="configLocation" &lt;br /&gt;               value="classpath:hibernate.cfg.xml"/&amp;gt;&lt;br /&gt;   &amp;lt;/bean&amp;gt;&lt;br /&gt; &lt;br /&gt;   &amp;lt;bean id="personaDAO" &lt;br /&gt;          class="org.dracof.hibernate.dao.impl.PersonaDAOImpl"&amp;gt;&lt;br /&gt;      &amp;lt;property name="sessionFactory" ref="sessionFactory"/&amp;gt;&lt;br /&gt;   &amp;lt;/bean&amp;gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=" http://sites.google.com/site/dracof/spring/integracionhibernate1/Codigo.zip&lt;br /&gt;"/&gt;Codigo Java&lt;/a&gt;&lt;br /&gt;&lt;a href=" http://sites.google.com/site/dracof/spring/integracionhibernate1/Script.zip"/&gt;Script SQL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-8583284660248992404?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/8583284660248992404/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/11/integracion-spring-y-hibernate-1.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/8583284660248992404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/8583284660248992404'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/11/integracion-spring-y-hibernate-1.html' title='Integración Spring y Hibernate (1)'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-1825644368270560822</id><published>2009-10-27T09:16:00.000-07:00</published><updated>2009-10-27T09:19:12.943-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Uso insert/update de property en Hibernate</title><content type='html'>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&lt;br /&gt;&lt;br /&gt;Veamos el primer caso usando el xml de mapeo de hibernate&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;   &amp;lt;hibernate-mapping&amp;gt;&lt;br /&gt;      &amp;lt;class name="org.dracof.hibernate.Persona" table="PERSONA"&amp;gt;&lt;br /&gt;         &amp;lt;id name="nombre" column="NOMBRE"&amp;gt;&lt;br /&gt;            &amp;lt;generator class="assigned"/&amp;gt;&lt;br /&gt;         &amp;lt;/id&amp;gt;&lt;br /&gt;         &amp;lt;property name="apellidoP" column="APELLIDOP"/&amp;gt;&lt;br /&gt;         &amp;lt;property name="edad" column="EDAD"/&amp;gt;&lt;br /&gt;      &amp;lt;/class&amp;gt;&lt;br /&gt;   &amp;lt;/hibernate-mapping&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si hacemos operaciones de insert de Persona hibernate genera lo siguiente&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Hibernate: insert into PERSONA (APELLIDOP, EDAD, NOMBRE) values (?, ?, ?)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;o update&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Hibernate: update PERSONA set APELLIDOP=?, EDAD=? where NOMBRE=?&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;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=?&lt;br /&gt;&lt;br /&gt;Si agregamos la propiedad insert="false" o update="false" en el tag property para edad &lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;   &amp;lt;property name="edad" column="EDAD" insert="false"/&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;property name="edad" column="EDAD" update="false"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O ambos &lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;   &amp;lt;property name="edad" column="EDAD" insert="false" update="false"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Vemos que el SQL generado ahora es &lt;br /&gt;&lt;br /&gt;Para insert &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;   Hibernate: insert into PERSONA (APELLIDOP, NOMBRE) values (?, ?)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para update&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;   Hibernate: update PERSONA set APELLIDOP=? where NOMBRE=?&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Con esto vemos que hibernate ya no toma la propiedad edad para los insert/update.&lt;br /&gt;&lt;br /&gt;Podemos tener el mismo resultado usando las anotaciones JPA con @Transient o la palabra reservada transient de java como sigue&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt; &lt;br /&gt;   @Transient&lt;br /&gt;   @Column (name="EDAD")&lt;br /&gt;   private Integer edad;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;o&lt;br /&gt;&lt;pre name="code" class="java"&gt; &lt;br /&gt;   @Column (name="EDAD")&lt;br /&gt;   private transient Integer edad;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Y obtenemos el mismo resultado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-1825644368270560822?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/1825644368270560822/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/10/uso-insertupdate-de-property-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/1825644368270560822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/1825644368270560822'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/10/uso-insertupdate-de-property-en.html' title='Uso insert/update de property en Hibernate'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-3417007671104529802</id><published>2009-10-24T20:12:00.000-07:00</published><updated>2009-10-24T20:15:05.171-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Uso de dynamic-insert y dynamic-update en Hibernate</title><content type='html'>Uso de dynamic-insert y dynamic-update en Hibernate&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Estructura de la tabla PERSONA&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;   CREATE TABLE PERSONA (&lt;br /&gt; NOMBRE VARCHAR(10),&lt;br /&gt; APELLIDOP VARCHAR(20),&lt;br /&gt; EDAD INTEGER&lt;br /&gt;   );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Todos los campos de la tabla aceptan valores nulos.&lt;br /&gt;&lt;br /&gt;Insertamos valores y queda como sigue&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/hibernate/dynamic-insert-update/DatosPersona.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Uso de dynamic-insert&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tenemos el objeto Persona para realizar la inserción como sigue&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;   Persona persona = new Persona();&lt;br /&gt;   persona.setNombre("Nombre");&lt;br /&gt;   persona.setApellidoP("ApellidoP");&lt;br /&gt;   //persona.setEdad(15);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;NOTA: Observamos que la propiedad EDAD contiene el valor NULL.&lt;br /&gt;&lt;br /&gt;Dentro del mapeo de la tabla PERSONA en Persona.hbm.xml, tenemos la propiedad dynamic-insert a false&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;   &amp;lt;class name="org.dracof.hibernate.Persona" table="PERSONA"    &lt;br /&gt;      dynamic-insert="false"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;El query del insert generado por hibernate es el siguiente &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;   Hibernate: insert into PERSONA (APELLIDOP, EDAD, NOMBRE) values (?, ?, ?)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;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&lt;br /&gt;&lt;br /&gt;Ahora probamos con dynamic-insert a TRUE , con esto se hará el insert con todos los campos que tengan un valor DIFERENTE DE NULL&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;   &amp;lt;class name="org.dracof.hibernate.Persona" table="PERSONA" &lt;br /&gt;      dynamic-insert="true"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;El query generado por Hibernate es &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;   Hibernate: insert into PERSONA (APELLIDOP, NOMBRE) values (?, ?)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;La columna EDAD ya no es tomada en cuenta por tener el valor NULL.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Uso de synamic-update&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Probamos primero el caso de dynamic-update con FALSE&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;   &amp;lt;class name="org.dracof.hibernate.Persona" table="PERSONA" &lt;br /&gt;      dynamic-update="false"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;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&lt;br /&gt;&lt;pre name="code" code="java"&gt;&lt;br /&gt;   Persona persona = (Persona) session.load(Persona.class, "Dracof");&lt;br /&gt;   persona.setApellidoP("Dracof XYZ");&lt;br /&gt;   session.update(persona);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;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 &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;   Hibernate: update PERSONA set APELLIDOP=?, EDAD=? where NOMBRE=?&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ahora con dynamic-update con TRUE&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;   &amp;lt;class name="org.dracof.hibernate.Persona" table="PERSONA" &lt;br /&gt;      dynamic-update="true"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;   Hibernate: update PERSONA set APELLIDOP=? where NOMBRE=?&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/dracof/hibernate/dynamic-insert-update/CodigoJava.zip"/&gt;Codigo Java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/dracof/hibernate/dynamic-insert-update/script.sql"/&gt;Script SQL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-3417007671104529802?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/3417007671104529802/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/10/uso-de-dynamic-insert-y-dynamic-update.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/3417007671104529802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/3417007671104529802'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/10/uso-de-dynamic-insert-y-dynamic-update.html' title='Uso de dynamic-insert y dynamic-update en Hibernate'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-8061099424153589716</id><published>2009-10-22T09:22:00.000-07:00</published><updated>2009-10-22T09:35:36.207-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Ejemplo de Hibernate 3 y Anotaciones JPA Basico</title><content type='html'>Ejemplo de Hibernate 3 y anotaciones JPA Basico&lt;br /&gt;&lt;br /&gt;Esta entrada muestra el uso de las anotaciones de JPA implementadas con Hibernate 3, la estructura del proyecto en eclipse es la siguiente&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/hibernate/hibernatejpabasico/EstructuraProyJPA.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Al terminar se encuentra el script SQL y codigo en java.&lt;br /&gt;&lt;br /&gt;Las librerias importadas son las siguientes&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;  hibernate3.jar&lt;br /&gt;  dom4j-1.6.1.jar&lt;br /&gt;  log4j-1.2.15.jar&lt;br /&gt;  slf4j-api-1.4.2.jar  &lt;br /&gt;  slf4j-log4j12-1.4.2.jar&lt;br /&gt;  commons-collections-3.1.jar&lt;br /&gt;  javassist-3.4.GA.jar&lt;br /&gt;  antlr-2.7.6.jar&lt;br /&gt;  jta-1.1.jar&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Las siguientes tres son para el uso de las anotaciones JPA en Hibernate&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;  hibernate-annotations.jar&lt;br /&gt;  hibernate-commons-annotations.jar&lt;br /&gt;  persistence.jar&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Este jar se usa para la conexion con Derby&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;  derbyclient.jar&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Iniciamos la construccion de la clase HibernateUtil el cual nos provee un sessionFactory&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;   public class HibernateUtil {&lt;br /&gt;      private static final SessionFactory sessionFactory;&lt;br /&gt; &lt;br /&gt;      static {&lt;br /&gt;         sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();&lt;br /&gt;      }&lt;br /&gt; &lt;br /&gt;      public static SessionFactory getSessionFactory(){&lt;br /&gt;         return sessionFactory;&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Hay que destacar que en este ejemplo no usamos &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;   Configuration().configure().buildSessionFactory();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si no que usamos  AnnotationConfiguration&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;   AnnotationConfiguration().configure().buildSessionFactory();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Usamos las anotaciones JPA en nuestra clase Persona&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;   import javax.persistence.Column;&lt;br /&gt;   import javax.persistence.Entity;&lt;br /&gt;   import javax.persistence.Id;&lt;br /&gt;   import javax.persistence.Table;&lt;br /&gt;&lt;br /&gt;   @Entity&lt;br /&gt;   @Table (name="PERSONA")&lt;br /&gt;   public class Persona {&lt;br /&gt;      @Id&lt;br /&gt;      @Column(name="ID_PERSONA")&lt;br /&gt;      private Long idPersona;&lt;br /&gt; &lt;br /&gt;      @Column (name="NOMBRE" , nullable=false)&lt;br /&gt;      private String nombre;&lt;br /&gt; &lt;br /&gt;      @Column (name="APELLIDOP", nullable=false)&lt;br /&gt;      private String apellidoPaterno;&lt;br /&gt; &lt;br /&gt;      @Column (name="EDAD")&lt;br /&gt;      private Integer edad;&lt;br /&gt;&lt;br /&gt;      public Long getIdPersona() {&lt;br /&gt;         return idPersona;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public void setIdPersona(Long idPersona) {&lt;br /&gt;         this.idPersona = idPersona;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public String getNombre() {&lt;br /&gt;         return nombre;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public void setNombre(String nombre) {&lt;br /&gt;         this.nombre = nombre;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public String getApellidoPaterno() {&lt;br /&gt;         return apellidoPaterno;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public void setApellidoPaterno(String apellidoPaterno) {&lt;br /&gt;         this.apellidoPaterno = apellidoPaterno;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public Integer getEdad() {&lt;br /&gt;         return edad;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public void setEdad(Integer edad) {&lt;br /&gt;         this.edad = edad;&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Usamos las anotaciones de JPA @Entity, @Table, @Id, @Column, estas son muy intuitivas y faciles de entender.&lt;br /&gt;&lt;br /&gt;El archivo hibernate.cfg.xml es el mismo pero con una excepcion&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;   &amp;lt;hibernate-configuration&amp;gt;&lt;br /&gt;      &amp;lt;session-factory&amp;gt;&lt;br /&gt;           &amp;lt;property name="connection.driver_class"&amp;gt;org.apache.derby.jdbc.ClientDriver&amp;lt;/property&amp;gt;&lt;br /&gt;           &amp;lt;property name="connection.url"&amp;gt;jdbc:derby://localhost:1521/dracof&amp;lt;/property&amp;gt;&lt;br /&gt;           &amp;lt;property name="connection.user"&amp;gt;dracof&amp;lt;/property&amp;gt;&lt;br /&gt;           &amp;lt;property name="connection.password"&amp;gt;dracof&amp;lt;/property&amp;gt;&lt;br /&gt;  &lt;br /&gt;           &amp;lt;property name="current_session_context_class"&amp;gt;thread&amp;lt;/property&amp;gt;&lt;br /&gt;           &amp;lt;property name="dialect"&amp;gt;org.hibernate.dialect.DerbyDialect&amp;lt;/property&amp;gt;&lt;br /&gt;           &amp;lt;property name="show_sql"&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;  &lt;br /&gt;           &amp;lt;mapping class="org.dracof.hibernate.annotations.Persona"/&amp;gt;&lt;br /&gt;      &amp;lt;/session-factory&amp;gt;&lt;br /&gt;   &amp;lt;/hibernate-configuration&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;El mapeo ya no lo hacemos con mapping resource y no creamos el archivo Persona.hbm.xml &lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;   &amp;lt;mapping resource="org/dracof/hibernate/relacional/Persona.hbm.xml"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si no con &lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;   &amp;lt;mapping class="org.dracof.hibernate.annotations.Persona"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Y con esto terminamos, hacemos un main con el siguiente codigo &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;   public static void main(String[] args) {&lt;br /&gt;      Session session =  HibernateUtil.getSessionFactory().getCurrentSession();&lt;br /&gt;      Transaction tx = session.getTransaction();&lt;br /&gt;&lt;br /&gt;      tx.begin();&lt;br /&gt;      Persona persona = (Persona)session.load(Persona.class, new Long(1));&lt;br /&gt;      System.out.println("Nombre: " + persona.getNombre());&lt;br /&gt;      tx.commit();&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Obteniendo como resultado&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;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=?&lt;br /&gt;Nombre: DRACOF&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/dracof/hibernate/hibernatejpabasico/script.sql"/&gt;Codigo SQL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/dracof/hibernate/hibernatejpabasico/CodigoEjercicio.zip"/&gt;Codigo Java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-8061099424153589716?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/8061099424153589716/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/10/ejemplo-de-hibernate-3-y-anotaciones.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/8061099424153589716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/8061099424153589716'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/10/ejemplo-de-hibernate-3-y-anotaciones.html' title='Ejemplo de Hibernate 3 y Anotaciones JPA Basico'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-5053334703639219261</id><published>2009-10-19T08:08:00.001-07:00</published><updated>2009-10-19T08:17:33.266-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Ejercicio Basico Hibernate</title><content type='html'>Ejercicio Basico Hibernate&lt;br /&gt;&lt;br /&gt;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 &lt;br /&gt;&lt;br /&gt;&lt;a href="http://dracof.blogspot.com/2009/10/instalacion-de-derby-en-windows.html"/&gt;Creacion Tabla Derby&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En la parte final están los scripts y código Java de este ejemplo.&lt;br /&gt;&lt;br /&gt;Estructura de la tabla persona&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;CREATE TABLE PERSONA (&lt;br /&gt; NOMBRE VARCHAR(10),&lt;br /&gt; APELLIDOP VARCHAR(20),&lt;br /&gt; EDAD INTEGER&lt;br /&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Valores insertados&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;INSERT INTO PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Dracof','Dracof',28);&lt;br /&gt;&lt;br /&gt;INSERT INTO PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Juan','Perez',33);&lt;br /&gt;&lt;br /&gt;INSERT INTO PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Maria E.','Andrade',60);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Estructura del proyecto en eclipse&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/hibernate/desdecero/EstructuraBasico.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Descargamos el archivo hibernate-distribution-3.3.0.GA-dist.zip desde la siguiente direccion &lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/hibernate/files/hibernate3/3.3.0.GA/hibernate-distribution-3.3.0.GA-dist.zip/download"&gt;hibernate-distribution-3.3.0.GA-dist.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Lo descomprimimos he importamos las liberarías en nuestro proyecto en eclipse&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;antlr-2.7.6.jar&lt;br /&gt;commons-collections-3.1.jar&lt;br /&gt;dom4j-1.6.1.jar&lt;br /&gt;javassist-3.4.GA.jar&lt;br /&gt;jta-1.1.jar&lt;br /&gt;slf4j-api-1.4.2.jar&lt;br /&gt;hibernate3.jar&lt;br /&gt;slf4j-log4j12-1.4.2.jar&lt;br /&gt;log4j-1.2.15.jar&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para usarlo con Derby importamos ademas las librerias &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;derbyclient.jar&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;De inicio creamos una clase para la creación de sessiones hibernate&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public class HibernateUtil {&lt;br /&gt; &lt;br /&gt; private static final SessionFactory sessionFactory;&lt;br /&gt; &lt;br /&gt; static { &lt;br /&gt;  try {&lt;br /&gt;   sessionFactory = new Configuration().configure().buildSessionFactory();&lt;br /&gt;  } catch (Throwable tr) {&lt;br /&gt;   tr.printStackTrace();&lt;br /&gt;   throw new ExceptionInInitializerError(tr);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public static SessionFactory getSessionFactory () {&lt;br /&gt;  return sessionFactory;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Creamos un pojo que representa la tabla persona&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public class Persona {&lt;br /&gt; &lt;br /&gt;   private String nombre;&lt;br /&gt;   private String apellidoP;&lt;br /&gt;   private Integer edad;&lt;br /&gt;&lt;br /&gt;   public String getNombre() {&lt;br /&gt;      return nombre;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public void setNombre(String nombre) {&lt;br /&gt;      this.nombre = nombre;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public String getApellidoP() {&lt;br /&gt;      return apellidoP;&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   public void setApellidoP(String apellidoP) {&lt;br /&gt;      this.apellidoP = apellidoP;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public Integer getEdad() {&lt;br /&gt;      return edad;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public void setEdad(Integer edad) {&lt;br /&gt;      this.edad = edad;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Con su archivo de configuración Persona.hbml.cml&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"&lt;br /&gt;"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;hibernate-mapping&amp;gt;&lt;br /&gt;   &amp;lt;class name="org.dracof.hibernate.Persona" table="PERSONA"&amp;gt;&lt;br /&gt;      &amp;lt;id name="nombre" column="NOMBRE"&amp;gt;&lt;br /&gt;    &amp;lt;generator class="assigned"/&amp;gt;&lt;br /&gt; &amp;lt;/id&amp;gt;&lt;br /&gt; &amp;lt;property name="apellidoP" column="APELLIDOP"/&amp;gt;&lt;br /&gt;      &amp;lt;property name="edad" column="EDAD"/&amp;gt;&lt;br /&gt;   &amp;lt;/class&amp;gt;&lt;br /&gt;&amp;lt;/hibernate-mapping&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Creamos el archivo de configuración de Hibernate (hibernate.cfg.xml)&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"&lt;br /&gt;"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;hibernate-configuration&amp;gt;&lt;br /&gt;   &amp;lt;session-factory&amp;gt;&lt;br /&gt;      &amp;lt;property name="connection.driver_class"&amp;gt;&lt;br /&gt;org.apache.derby.jdbc.ClientDriver&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;property name="connection.url"&amp;gt;&lt;br /&gt;     jdbc:derby://localhost:1530/dracof&lt;br /&gt;&amp;lt;/property&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;property name="connection.username"&amp;gt;dracof&amp;lt;/property&amp;gt;&lt;br /&gt; &amp;lt;property name="connection.password"&amp;gt;dracof&amp;lt;/property&amp;gt;&lt;br /&gt; &amp;lt;property name="current_session_context_class"&amp;gt;thread&amp;lt;/property&amp;gt;&lt;br /&gt; &amp;lt;property name="dialect"&amp;gt;&lt;br /&gt;org.hibernate.dialect.DerbyDialect&lt;br /&gt;&amp;lt;/property&amp;gt;&lt;br /&gt; &amp;lt;property name="show_sql"&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;mapping resource="org/dracof/hibernate/Persona.hbm.xml"/&amp;gt;&lt;br /&gt;   &amp;lt;/session-factory&amp;gt;&lt;br /&gt;&amp;lt;/hibernate-configuration&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Por último creamos una clase Test para probar lo anterios&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;   Session session =    &lt;br /&gt;              HibernateUtil.getSessionFactory().getCurrentSession();&lt;br /&gt;   session.beginTransaction();&lt;br /&gt;   Persona persona = (Persona)session.get(Persona.class, "Dracof");&lt;br /&gt;   System.out.println( persona.getApellidoP() );&lt;br /&gt;   session.close();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Este es el resultado de ejecutar el main&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Hibernate: select persona0_.NOMBRE as NOMBRE0_0_, persona0_.APELLIDOP as APELLIDOP0_0_, persona0_.EDAD as EDAD0_0_ from PERSONA persona0_ &lt;br /&gt;where persona0_.NOMBRE=?&lt;br /&gt;&lt;br /&gt;Dracof&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Script de este ejercicio &lt;a href=" http://sites.google.com/site/dracof/hibernate/desdecero/script.sql"&gt;script.sql&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Codigo de este ejercicio &lt;a href=" http://sites.google.com/site/dracof/hibernate/desdecero/ HibernateBasico.zip"&gt; HibernateBasico.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-5053334703639219261?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/5053334703639219261/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/10/ejercicio-basico-hibernate.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/5053334703639219261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/5053334703639219261'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/10/ejercicio-basico-hibernate.html' title='Ejercicio Basico Hibernate'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-3987012459889151567</id><published>2009-10-13T09:01:00.000-07:00</published><updated>2009-10-13T09:06:26.876-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Derby'/><title type='text'>Instalacion de Derby en Windows.</title><content type='html'>Descargamos Derby desde&lt;br /&gt;&lt;br /&gt;&lt;a href=" http://mirror.candidhosting.com/pub/apache/db/derby/db-derby-10.5.3.0/db-derby-10.5.3.0-bin.zip"/&gt; db-derby-10.5.3.0-bin.zip &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Lo descomprimimos en algún lugar de nuestra preferencia, en mi caso C:\Software\&lt;br /&gt;Iniciamos el servidor con el bat startNetworkServer.bat&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/derby/afuera/StartDerby.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;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&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/derby/afuera/HerramientaIJ.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Podemos ver los esquemas existentes con el comando show schemas;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/derby/afuera/ShowSchemas.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Creamos un esquema con create schema dracof; &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;ij&gt; create schema dracof;&lt;br /&gt;0 filas insertadas/actualizadas/suprimidas&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ejecutamos de nuevo el comando show schemas; nos muestra el esquema dracof que acabamos de crear.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/derby/afuera/ShowSchemasDracof.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Creamos la tabla Persona con &lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;CREATE TABLE DRACOF.PERSONA (&lt;br /&gt; NOMBRE VARCHAR(10),&lt;br /&gt; APELLIDOP VARCHAR(20),&lt;br /&gt; EDAD INTEGER&lt;br /&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Con el comando show tables; vemos las tablas existentes.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/derby/afuera/ShowTables.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Insertamos valores en nuestra tabla recién creada&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;INSERT INTO DRACOF.PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Dracof','Dracof',28);&lt;br /&gt;INSERT INTO DRACOF.PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Juan','Perez',33);&lt;br /&gt;INSERT INTO DRACOF.PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Maria E.','Andrade',60);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Y vemos el resultado lanzando un select sobre la tabla persona.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/derby/afuera/SelectPersona.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Ahora creamos una clasesita en Java para conectarnos a la base que hemos creado&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;   try {&lt;br /&gt;      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");&lt;br /&gt;   } catch (ClassNotFoundException e1) {&lt;br /&gt; e1.printStackTrace();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   try {&lt;br /&gt;Connection conn= &lt;br /&gt;          DriverManager.getConnection(&lt;br /&gt;"jdbc:derby://localhost:1527/dracof", "dracof", "dracof");&lt;br /&gt;   &lt;br /&gt; Statement st = conn.createStatement();&lt;br /&gt; ResultSet rs = st.executeQuery( "SELECT * FROM PERSONA" );&lt;br /&gt;   &lt;br /&gt; while (rs.next()) {&lt;br /&gt;   System.out.println( "Nombre: " + rs.getString("NOMBRE") );&lt;br /&gt;   System.out.println( "Apellido P: " + rs.getString("APELLIDOP") );&lt;br /&gt;    System.out.println( "Edad: " + rs.getString("EDAD") );&lt;br /&gt;   System.out.println( "_________________________________________");&lt;br /&gt;      }   &lt;br /&gt;   } catch (SQLException e) {&lt;br /&gt; e.printStackTrace();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Y obtenemos&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;  Nombre: Dracof&lt;br /&gt;  Apellido P: Dracof&lt;br /&gt;  Edad: 28&lt;br /&gt;  _____________________________________________&lt;br /&gt;  Nombre: Juan&lt;br /&gt;  Apellido P: Perez&lt;br /&gt;  Edad: 33&lt;br /&gt;  _____________________________________________&lt;br /&gt;  Nombre: Maria E.&lt;br /&gt;  Apellido P: Andrade&lt;br /&gt;  Edad: 60&lt;br /&gt;  _____________________________________________&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para evitar el calificar los objetos nos conectamos de la siguiente manera&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;connect 'jdbc:derby://localhost:1527/dracof;user=dracof;password=dracof';&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-3987012459889151567?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/3987012459889151567/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/10/instalacion-de-derby-en-windows.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/3987012459889151567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/3987012459889151567'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/10/instalacion-de-derby-en-windows.html' title='Instalacion de Derby en Windows.'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-6553154192174815931</id><published>2009-10-11T12:34:00.000-07:00</published><updated>2009-10-11T12:53:32.906-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Derby'/><title type='text'>Instalacion Plugin Apache Derby - Eclipse</title><content type='html'>Instalacion del Plugin de Apache Derby para el IDE Eclipse Galileo.&lt;br /&gt;&lt;br /&gt;Vemos que no existe una opción disponible para Apache Derby, la versión de eclipse para este ejemplo es la 3.5 (Galileo)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/derby/plugineclipse-1/EclipseSinDerby.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Descargamos los plugins desde las siguientes direcciones&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mirror.cc.columbia.edu/pub/software/apache/db/derby/db-derby-10.5.3.0/derby_core_plugin_10.5.3.zip"/&gt;derby_core_plugin_10.5.3.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mirror.cc.columbia.edu/pub/software/apache/db/derby/db-derby-10.5.3.0/derby_ui_doc_plugin_1.1.2.zip"/&gt; derby_ui_doc_plugin_1.1.2.zip &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Descomprimimos y copiamos los directorios &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;org.apache.derby.core_10.5.3&lt;br /&gt;org.apache.derby.plugin.doc_1.1.2&lt;br /&gt;org.apache.derby.ui_1.1.2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;a la carpeta ECLIPSE_HOME\plugins, reiniciamos eclipse y vemos que tenemos ya la opción en menú de Apache Derby&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/derby/plugineclipse-1/EclipseConDerby.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;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 &lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/derby/plugineclipse-1/FinishAddDerby.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Con esto el menú cambia mostrando &lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/derby/plugineclipse-1/DerbyStartEclipse.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Seleccionamos la opción “Start Derby Network Server” &lt;br /&gt;Si vemos un mensaje dentro de la consola de eclipse&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Se ha instalado el administrador de seguridad utilizando la directiva de seguridad de servidores básica.&lt;br /&gt;Apache Derby Network Server - 10.5.3.0 - (802917) se ha iniciado y est?° listo para aceptar conexiones en el puerto 1527&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ya esta listo para aceptar conexiones en el puerto 1527.&lt;br /&gt;&lt;br /&gt;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”&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/derby/plugineclipse-1/CambioPuertoDerbyEclipse.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-6553154192174815931?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/6553154192174815931/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/10/instalacion-plugin-apache-derby-eclipse.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/6553154192174815931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/6553154192174815931'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/10/instalacion-plugin-apache-derby-eclipse.html' title='Instalacion Plugin Apache Derby - Eclipse'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-8237247136113397564</id><published>2009-09-03T10:03:00.001-07:00</published><updated>2009-09-03T10:14:00.910-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Grails'/><title type='text'>Primer Clase de Dominio Grails</title><content type='html'>Creamos un proyecto llamado claseDominio como sigue &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;grails create-app claseDominio&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Nos metemos al proyecto recien creado&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;cd claseDominio&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Creamos una clase de dominio&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;grails create-domain-class org.dracof.persona&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Modificamos la clase de dominio Persona ubicada en ../claseDominio/grails-app/domain/org/dracof/ agragando&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;    String nombre&lt;br /&gt;    String apellidoPaterno&lt;br /&gt;    String apellidoMaterno&lt;br /&gt;    int edad&lt;br /&gt;&lt;/pre&gt;    &lt;br /&gt;Quedando al final como sigue&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof&lt;br /&gt;&lt;br /&gt;class Persona {&lt;br /&gt; &lt;br /&gt;    String nombre&lt;br /&gt;    String apellidoPaterno&lt;br /&gt;    String apellidoMaterno&lt;br /&gt;    int edad&lt;br /&gt; &lt;br /&gt;    static constraints = {&lt;br /&gt;    }&lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Creamos un controller Persona&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;grails create-controller org.dracof.Persona&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;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&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof&lt;br /&gt;&lt;br /&gt;class PersonaController {&lt;br /&gt; def scaffold = org.dracof.Persona  &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;y arrancamos nuestra aplicacion &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;grails run-app&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Entramos desde un navegador con&lt;br /&gt;&lt;br /&gt;http://localhost:8080/claseDominio/&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/grails/clasedominio/indexClaseDominio.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Oprimimos en &lt;br /&gt;&lt;br /&gt;org.dracof.PersonaController&lt;br /&gt;&lt;br /&gt;y nos muestra la lista de personas&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/grails/clasedominio/listClaseDominio.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Creamos una nueva persona en New Persona y aparece los campos de nuestra clase de dominio&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/grails/clasedominio/createPersona.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Llenamos los campos y oprimimos Create, nos muestra el registro recien creado listo par ser borrado o editado&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/grails/clasedominio/operacionesPersona.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Dentro de Persona List nos muestra la lista de personas creadas&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/grails/clasedominio/listClaseDominioNuevo.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Seleccionamos el Id de la persona y oprimimos delete, nos pregunta si estamos seguros de borrar&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/grails/clasedominio/seguroBorrar.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Aceptamos y el registro es borrado, tenemos tambien la opcion Edit con la que podemos editar por completo nuestro registro.&lt;br /&gt;&lt;br /&gt;Cabe mencionar que nuestros formularios no contienen ningun tipo de validación, por lo que los campos pueden insertarse sin valores y los acepta.&lt;br /&gt;&lt;br /&gt;Simple no?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-8237247136113397564?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/8237247136113397564/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/09/primer-clase-de-dominio-grails.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/8237247136113397564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/8237247136113397564'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/09/primer-clase-de-dominio-grails.html' title='Primer Clase de Dominio Grails'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-7262252561047976470</id><published>2009-08-20T07:54:00.000-07:00</published><updated>2009-08-20T08:05:44.686-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Grails'/><title type='text'>Primer Controller en Grails</title><content type='html'>Creamos un proyecto grails con el comando grails create-app como sigue&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;grails create-app test&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;dando paso a la creación de archivos y directorios de grails&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;C:\proyGrails: grails create-app test&lt;br /&gt;Welcome to Grails 1.2-M2 - http://grails.org/&lt;br /&gt;Licensed under Apache Standard License 2.0&lt;br /&gt;Grails home is set to: C:\Software\grails-1.2-M2&lt;br /&gt;&lt;br /&gt;Base Directory: C:\proyGrails&lt;br /&gt;Running script C:\Software\grails-1.2-M2\scripts\CreateApp_.groovy&lt;br /&gt;Environment set to development&lt;br /&gt;Application name not specified. Please enter:&lt;br /&gt;test&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\src&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\src\java&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\src\groovy&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app\controllers&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app\services&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app\domain&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app\taglib&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app\utils&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app\views&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app\views\layouts&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app\i18n&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app\conf&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\test&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\test\unit&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\test\integration&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\scripts&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\web-app&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\web-app\js&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\web-app\css&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\web-app\images&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\web-app\META-INF&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\lib&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app\conf\spring&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app\conf\hibernate&lt;br /&gt;[propertyfile] Creating new property file: C:\proyGrails\test\application.properties&lt;br /&gt;     [copy] Copying 1 resource to C:\proyGrails\test&lt;br /&gt;    [unjar] Expanding: C:\proyGrails\test\grails-shared-files.jar into C:\proyGrails\test&lt;br /&gt;   [delete] Deleting: C:\proyGrails\test\grails-shared-files.jar&lt;br /&gt;     [copy] Copying 1 resource to C:\proyGrails\test&lt;br /&gt;    [unjar] Expanding: C:\proyGrails\test\grails-app-files.jar into C:\proyGrails\test&lt;br /&gt;   [delete] Deleting: C:\proyGrails\test\grails-app-files.jar&lt;br /&gt;     [move] Moving 1 file to C:\proyGrails\test&lt;br /&gt;     [move] Moving 1 file to C:\proyGrails\test&lt;br /&gt;     [move] Moving 1 file to C:\proyGrails\test&lt;br /&gt;     [move] Moving 1 file to C:\proyGrails\test&lt;br /&gt;     [move] Moving 1 file to C:\proyGrails\test&lt;br /&gt;     [move] Moving 1 file to C:\proyGrails\test&lt;br /&gt;...&lt;br /&gt;Found events script in plugin tomcat&lt;br /&gt;Created Grails Application at C:\proyGrails/test&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Después nos posicionamos dentro del proyecto recien creado&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;C:\proyGrails: cd test&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ahora iniciamos nuestra aplicación con el siguiente comando de grails run-app&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;C:\proyGrails\test: grails run-app&lt;br /&gt;Welcome to Grails 1.2-M2 - http://grails.org/&lt;br /&gt;Licensed under Apache Standard License 2.0&lt;br /&gt;Grails home is set to: C:\Software\grails-1.2-M2&lt;br /&gt;&lt;br /&gt;Base Directory: C:\proyGrails\test&lt;br /&gt;Running script C:\Software\grails-1.2-M2\scripts\RunApp.groovy&lt;br /&gt;Environment set to development&lt;br /&gt;Running Grails application..&lt;br /&gt;18/08/2009 04:52:43 PM org.apache.coyote.http11.Http11Protocol init&lt;br /&gt;INFO: Initializing Coyote HTTP/1.1 on http-8080&lt;br /&gt;18/08/2009 04:52:43 PM org.apache.catalina.core.StandardService start&lt;br /&gt;INFO: Starting service Tomcat&lt;br /&gt;18/08/2009 04:52:43 PM org.apache.catalina.core.StandardEngine start&lt;br /&gt;INFO: Starting Servlet Engine: Apache Tomcat/6.0-snapshot&lt;br /&gt;18/08/2009 04:52:43 PM org.apache.catalina.startup.ContextConfig defaultWebConfig&lt;br /&gt;INFO: No default web.xml&lt;br /&gt;18/08/2009 04:52:45 PM org.apache.catalina.core.ApplicationContext log&lt;br /&gt;INFO: Initializing Spring root WebApplicationContext&lt;br /&gt;Server running. Browse to http://localhost:8080/test&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Con esto nuestra aplicación esta corriendo&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/grails/primercontroller/paginaInicioProyecto.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Por default corre en el puerto 8080 si deseamos cambiarla por ejemplo al puerto 8181 escribimos&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;grails -Dserver.port 8181 run-app&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si se quiere cambiar el puerto de la aplicación de forma permanente se puede crear el archvo BuildConfig.groovy con la entrada &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;grails.server.port.http=9090 en la ruta %proyecto%\grails-app\conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora para crear un controller escribimos el siguiente comando dentro del proyecto &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;grails create-controller contr &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Vemos que el comando se ejecuta de manera exitosa&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;C:\proyGrails\test&amp;gt;grails create-controller contr&lt;br /&gt;Welcome to Grails 1.2-M2 - http://grails.org/&lt;br /&gt;Licensed under Apache Standard License 2.0&lt;br /&gt;Grails home is set to: C:\Software\grails-1.2-M2&lt;br /&gt;&lt;br /&gt;Base Directory: C:\proyGrails\test&lt;br /&gt;Running script C:\Software\grails-1.2-M2\scripts\CreateController.groovy&lt;br /&gt;Environment set to development&lt;br /&gt;Created Controller for Contr&lt;br /&gt;    [mkdir] Created dir: C:\proyGrails\test\grails-app\views\contr&lt;br /&gt;Created Tests for Contr&lt;br /&gt;C:\proyGrails\test&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ahora solo refrescamos el navegador (Ctrl.+F5) y vemos el controller recien creado&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/grails/primercontroller/listaControllers.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;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 &lt;br /&gt;&lt;pre name="code" class="groovy"&gt;&lt;br /&gt;class ContrController {&lt;br /&gt;    def index = { &lt;br /&gt;     redirect (action:accion)&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    def accion = { &lt;br /&gt;     render "Desde controller ControlerController";  &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para llamar accion escribimos en el navegador&lt;br /&gt;&lt;br /&gt;http://localhost:8181/test/contr/accion&lt;br /&gt;o&lt;br /&gt;http://localhost:8181/test/contr/ (por default toma index y este es redireccionado a accion).&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/grails/primercontroller/textoDesdeController.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-7262252561047976470?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/7262252561047976470/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/primer-controller-en-grails.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/7262252561047976470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/7262252561047976470'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/primer-controller-en-grails.html' title='Primer Controller en Grails'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-4788391613759003859</id><published>2009-08-13T09:50:00.001-07:00</published><updated>2009-08-23T13:30:01.938-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servers'/><title type='text'>Instalacion OpenEJB en Windows</title><content type='html'>Descargamos los siguientes archivos&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;openejb-3.1.1.zip&lt;br /&gt;openejb.war,&lt;br /&gt;apache-tomcat-6.0.20.zip&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;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&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;C:\Software\openejb-3.1.1&lt;br /&gt;C:\Software\tomcat-6.0.20&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Colocamos la aplicación openejb.war en C:\Software\tomcat-6.0.20\webapps y arrancamos tomcat&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/instalacionopenejb/consolaTomcat1.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Abrirmos un navegador y tecleamos la siguiente ruta http://localhost:8080/openejb/&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/instalacionopenejb/paginaInicialOpenEjb1.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;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 &amp;lt;Deployments dir="C:\Software\openejb-3.1.1\apps\" /&amp;gt; como sigue&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/instalacionopenejb/openejbXml1.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Con un jar de pruebas lo colocamos en la ruta definida anteriormente y reiniciamos tomcat&lt;br /&gt;&lt;br /&gt;Con esto dentro entramos nuevemante a http://localhost:8080/openejb/ dentro de JNDI&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/instalacionopenejb/paginaInicialOpenEjbJNDI.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/instalacionopenejb/MuestraJNDICalc.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Seleccionamos CalculadoraBeanLocal mostrandonos lo siguiente&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/instalacionopenejb/InvokeEJB.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Seleccionamos Invoke this EJB&lt;br /&gt;&lt;br /&gt;Y nos muestra los metodos de este EJB&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/instalacionopenejb/muestraMetodosEJB.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Seleccionamos un servicio para escribir sus parametros&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/instalacionopenejb/parametrosEJB.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/instalacionopenejb/parametrosEJB2.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Y lo invocamos, dándonos el siguiente resultado&lt;br /&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/instalacionopenejb/resultadoInvokeEJB.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Descargar CalculadoraEJB&lt;br /&gt;&lt;a href="http://sites.google.com/site/dracof/instalacionopenejb/calculadoraEJB.jar"/&gt;calculadoraEJB.jar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-4788391613759003859?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/4788391613759003859/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/instalacion-openejb-en-windows.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/4788391613759003859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/4788391613759003859'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/instalacion-openejb-en-windows.html' title='Instalacion OpenEJB en Windows'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-4555894599543671850</id><published>2009-08-11T07:50:00.001-07:00</published><updated>2009-08-23T13:30:01.939-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>dependency-check en Spring</title><content type='html'>Uso de dependency-check en Spring&lt;br /&gt;&lt;br /&gt;A continuacion se muestra el uso del atributo dependency-check con varios ejemplos&lt;br /&gt;&lt;br /&gt;Librearias&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;commons-logging.jar&lt;br /&gt;spring.jar&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Listado de Interfaces&lt;br /&gt;&lt;br /&gt;Interface Trabajo&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.depcheck;&lt;br /&gt;&lt;br /&gt;public interface Trabajo {&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Interface Domicilio&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.depcheck;&lt;br /&gt;&lt;br /&gt;public interface Domicilio {&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Interface Persona&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.depcheck;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;public interface Persona {&lt;br /&gt; public void setNombre(String nombre);&lt;br /&gt; &lt;br /&gt; public void setApellido(String apellido);&lt;br /&gt; &lt;br /&gt; public void setEdad(int edad);&lt;br /&gt; &lt;br /&gt; public void setEstatura(float estatura);&lt;br /&gt; &lt;br /&gt; public void setDomicilio(Domicilio domcilio);&lt;br /&gt; &lt;br /&gt; public void setTrabajosList(List&amp;lt;Trabajo&amp;gt; trabajos);&lt;br /&gt; &lt;br /&gt; public void setNombreAmigos (String[] amigos);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Implementaciones&lt;br /&gt;&lt;br /&gt;Clase TrabajoImpl implementacion de Trabajo&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.depcheck.impl;&lt;br /&gt;&lt;br /&gt;import org.dracof.spring.depcheck.Trabajo;&lt;br /&gt;&lt;br /&gt;public class TrabajoImpl implements Trabajo {&lt;br /&gt; //metodos e implementacion de trabajo&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Clase DomicilioImpl implementacion de Domicilio&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.depcheck.impl;&lt;br /&gt;&lt;br /&gt;import org.dracof.spring.depcheck.Domicilio;&lt;br /&gt;&lt;br /&gt;public class DomicilioImpl implements Domicilio{&lt;br /&gt; //metodos e implementacion de Domicilio&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Clase PersonaImpl implementacion Persona&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.depcheck.impl;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import org.dracof.spring.depcheck.Domicilio;&lt;br /&gt;import org.dracof.spring.depcheck.Persona;&lt;br /&gt;import org.dracof.spring.depcheck.Trabajo;&lt;br /&gt;&lt;br /&gt;public class PersonaImpl implements Persona {&lt;br /&gt;&lt;br /&gt; private String nombre;&lt;br /&gt; private String apellido;&lt;br /&gt; private int edad;&lt;br /&gt; private float estatura;&lt;br /&gt; private Domicilio domicilio;&lt;br /&gt; private List&amp;lt;Trabajo&amp;gt; trabajos;&lt;br /&gt; private String[] amigos;&lt;br /&gt;  &lt;br /&gt; public void setApellido(String apellido) {&lt;br /&gt;  this.apellido = apellido;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setEdad(int edad) {&lt;br /&gt;  this.edad = edad;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setEstatura(float estatura) {&lt;br /&gt;  this.estatura = estatura;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setNombre(String nombre) {&lt;br /&gt;  this.nombre = nombre;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void setDomicilio(Domicilio domcilio) {&lt;br /&gt;  this.domicilio = domcilio;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setTrabajosList(List&amp;lt;Trabajo&amp;gt; trabajos) {&lt;br /&gt;  this.trabajos = trabajos;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setNombreAmigos(String[] amigos) {&lt;br /&gt;  this.amigos = amigos;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public String toString() {&lt;br /&gt;  StringBuilder s = new StringBuilder();&lt;br /&gt;  s.append("Nombre: " + nombre);&lt;br /&gt;  s.append("; Apellido: "+ apellido);&lt;br /&gt;  s.append("; Edad: " + edad);&lt;br /&gt;  s.append("; Estatura: " + estatura);&lt;br /&gt;  s.append("; Amigos: ");&lt;br /&gt;  for(String amigo:amigos) {&lt;br /&gt;   s.append(amigo+",");&lt;br /&gt;  }&lt;br /&gt;  return s.toString();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Application Context (applicationContext.xml)&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;beans&amp;gt;&lt;br /&gt; &amp;lt;bean id="persona1" class="org.dracof.spring.depcheck.impl.PersonaImpl" dependency-check="none"/&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;bean id="persona3" class="org.dracof.spring.depcheck.impl.PersonaImpl" dependency-check="simple"&amp;gt;&lt;br /&gt;  &amp;lt;property name="nombre" value="Dracof"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="apellido" value="ApellidoDracof"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="edad" value="28"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="estatura" value="1.70"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="nombreAmigos" value="Juanito, Pepito, Dracofito"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;bean id="persona4" class="org.dracof.spring.depcheck.impl.PersonaImpl" dependency-check="objects"&amp;gt;&lt;br /&gt;  &amp;lt;property name="domicilio"&amp;gt;&lt;br /&gt;   &amp;lt;bean class="org.dracof.spring.depcheck.impl.DomicilioImpl"/&amp;gt;&lt;br /&gt;  &amp;lt;/property&amp;gt;&lt;br /&gt;  &amp;lt;property name="trabajosList"&amp;gt;&lt;br /&gt;   &amp;lt;list&amp;gt;&lt;br /&gt;    &amp;lt;bean class="org.dracof.spring.depcheck.impl.TrabajoImpl"/&amp;gt;&lt;br /&gt;    &amp;lt;bean class="org.dracof.spring.depcheck.impl.TrabajoImpl"/&amp;gt;&lt;br /&gt;   &amp;lt;/list&amp;gt;&lt;br /&gt;  &amp;lt;/property&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;bean id="persona5" class="org.dracof.spring.depcheck.impl.PersonaImpl" dependency-check="all"&amp;gt;&lt;br /&gt;  &amp;lt;property name="nombre" value="Dracof"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="apellido" value="ApellidoDracof"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="edad" value="28"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="estatura" value="1.70"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="domicilio"&amp;gt;&lt;br /&gt;   &amp;lt;bean class="org.dracof.spring.depcheck.impl.DomicilioImpl"/&amp;gt;&lt;br /&gt;  &amp;lt;/property&amp;gt;&lt;br /&gt;  &amp;lt;property name="trabajosList"&amp;gt;&lt;br /&gt;   &amp;lt;list&amp;gt;&lt;br /&gt;    &amp;lt;bean class="org.dracof.spring.depcheck.impl.TrabajoImpl"/&amp;gt;&lt;br /&gt;    &amp;lt;bean class="org.dracof.spring.depcheck.impl.TrabajoImpl"/&amp;gt;&lt;br /&gt;   &amp;lt;/list&amp;gt;&lt;br /&gt;  &amp;lt;/property&amp;gt;&lt;br /&gt;  &amp;lt;property name="nombreAmigos" value="Juanito, Pepito, Dracofito"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Como se muestra el atributo dependency-check acepta none, simple, objects y all, siendo por default none.&lt;br /&gt;&lt;br /&gt;Por ejemplo si se borra el setter nombreAmigos de persona5 que tiene dependency-check="all", Spring lanza&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException: &lt;br /&gt;Error creating bean with name 'persona5' defined in class path resource [applicationContext.xml]: &lt;br /&gt;Unsatisfied dependency expressed through bean property 'nombreAmigos': Set this property value or disable dependency checking for this bean.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Referencia:&lt;br /&gt;&lt;a href="http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-factory-dependencies"&gt;Checking for dependencies&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Descargar Proyectito&lt;br /&gt;&lt;a href="http://sites.google.com/site/dracof/spring/DependencyCheck.zip"&gt;DependencyCheck.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-4555894599543671850?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/4555894599543671850/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/dependency-check-en-spring.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/4555894599543671850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/4555894599543671850'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/dependency-check-en-spring.html' title='dependency-check en Spring'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-313196993174546058</id><published>2009-08-09T15:24:00.000-07:00</published><updated>2009-08-09T15:33:27.865-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Grails'/><title type='text'>Instalando Grails en Windows</title><content type='html'>A continuacion se muestra como instalar Grails en Windows.&lt;br /&gt;&lt;br /&gt;Descargar el archivo grails-bin-1.2-M1.zip&lt;br /&gt;&lt;br /&gt;Descomprimirlo, en mi caso C:\Software\grails-1.2-M1&lt;br /&gt;&lt;br /&gt;Crear la variable de entorno GRAILS_HOME en mi casi apuntanto a C:\Software\grails-1.2-M1.&lt;br /&gt;&lt;br /&gt;Escribir en PATH la ruta C:\Software\grails-1.2-M1\bin&lt;br /&gt;&lt;br /&gt;Abrir una ventana MSDOS y escribir el comando grails help&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;grails help&lt;br /&gt;Invalid maximum heap size: -Xmx512m -XX:MaxPermSize=96m&lt;br /&gt;Could not create the Java virtual machine.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;En mi caso me marco el error anterior, la solucion es editar el archivo startGrails.bat ubicado en GRAILS_HOME\bin&lt;br /&gt;&lt;br /&gt;C:\Software\grails-1.2-M1\bin\startGrails.bat&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;...&lt;br /&gt;set JAVA_EXE=%JAVA_HOME%\bin\java.exe&lt;br /&gt;set TOOLS_JAR=%JAVA_HOME%\lib\tools.jar&lt;br /&gt;               &lt;br /&gt;if "%JAVA_OPTS%" == "" set JAVA_OPTS=-Xmx512m -XX:MaxPermSize=96m&lt;br /&gt;set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name="%PROGNAME%"&lt;br /&gt;set JAVA_OPTS=%JAVA_OPTS% -Dgrails.home="%GRAILS_HOME%"&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;modificar la linea&lt;br /&gt;if "%JAVA_OPTS%" == "" set JAVA_OPTS="-Xmx512m -XX:MaxPermSize=96m"&lt;br /&gt;por&lt;br /&gt;if "%JAVA_OPTS%" == "" set JAVA_OPTS=-Xmx512m -XX:MaxPermSize=96m&lt;br /&gt;&lt;br /&gt;Quitando las dobles comillas de "-Xmx512m -XX:MaxPermSize=96m"&lt;br /&gt;&lt;br /&gt;probamos nuevamente desde una consola msdos con el siguiente comando&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;grails help&lt;br /&gt;&lt;br /&gt;Welcome to Grails 1.2-M1 - http://grails.org/&lt;br /&gt;Licensed under Apache Standard License 2.0&lt;br /&gt;Grails home is set to: C:\Software\grails-1.2-M1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-313196993174546058?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/313196993174546058/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/instalando-grails-en-windows.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/313196993174546058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/313196993174546058'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/instalando-grails-en-windows.html' title='Instalando Grails en Windows'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-5672078774194369696</id><published>2009-08-07T15:39:00.001-07:00</published><updated>2009-08-07T15:39:37.756-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><title type='text'>Tipos de Datos en Groovy</title><content type='html'>En groovy todo es un objeto, groovy soporta todos los tipos de datos de Java sin primitivos.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="groovy"&gt;&lt;br /&gt;def numeroDef1 = 100;&lt;br /&gt;def numeroDef2 = 2.334;&lt;br /&gt;def cadenaDef1 = "hola";&lt;br /&gt;&lt;br /&gt;println "numeroDef1: " + numeroDef1.getClass()&lt;br /&gt;println "numeroDef2: " + numeroDef2.getClass()&lt;br /&gt;println "cadenaDef1: " + cadenaDef1.getClass()&lt;br /&gt;&lt;br /&gt;int numeroInt = 100&lt;br /&gt;Integer numeroInteger = 200&lt;br /&gt;&lt;br /&gt;println "numeroInt: " + numeroInt.getClass()&lt;br /&gt;println "numeroInteger: " + numeroInteger.getClass()&lt;br /&gt;&lt;br /&gt;float numerofloat = 3440.8f&lt;br /&gt;Float numeroFloat = 300.30f&lt;br /&gt;&lt;br /&gt;println "numerofloat: " + numerofloat.getClass()&lt;br /&gt;println "numeroFloat: " + numeroFloat.getClass()&lt;br /&gt;&lt;br /&gt;double numerodouble = 2312.33d&lt;br /&gt;Double numeroDouble = 123.33d&lt;br /&gt;&lt;br /&gt;println "numerodouble: " + numerodouble.getClass()&lt;br /&gt;println "numeroDouble: " + numeroDouble.getClass()&lt;br /&gt;&lt;br /&gt;short numeroshort = 22&lt;br /&gt;Short numeroShort = 2211&lt;br /&gt;&lt;br /&gt;println "numeroshort: " + numeroshort.getClass()&lt;br /&gt;println "numeroShort: " + numeroShort.getClass()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salida:&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;numeroDef1: class java.lang.Integer&lt;br /&gt;numeroDef2: class java.math.BigDecimal&lt;br /&gt;cadenaDef1: class java.lang.String&lt;br /&gt;numeroInt: class java.lang.Integer&lt;br /&gt;numeroInteger: class java.lang.Integer&lt;br /&gt;numerofloat: class java.lang.Float&lt;br /&gt;numeroFloat: class java.lang.Float&lt;br /&gt;numerodouble: class java.lang.Double&lt;br /&gt;numeroDouble: class java.lang.Double&lt;br /&gt;numeroshort: class java.lang.Short&lt;br /&gt;numeroShort: class java.lang.Short&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-5672078774194369696?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/5672078774194369696/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/tipos-de-datos-en-groovy.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/5672078774194369696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/5672078774194369696'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/tipos-de-datos-en-groovy.html' title='Tipos de Datos en Groovy'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-2879643509733608247</id><published>2009-08-06T13:59:00.000-07:00</published><updated>2009-08-23T13:30:01.939-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>Uso de inyeccion por constructor y setters en Spring</title><content type='html'>Muestra el uso basico de inyeccion por constructor y por setter con Spring.&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt; commons-logging.jar&lt;br /&gt; spring.jar&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Definicio de la interface DatosPersonales &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.inyeccion;&lt;br /&gt;&lt;br /&gt;public interface DatosPersonales {&lt;br /&gt; &lt;br /&gt; public void setNombre(String nombre);&lt;br /&gt; &lt;br /&gt; public void setEdad(int edad);&lt;br /&gt; &lt;br /&gt; public void setRfc(String rfc);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Implementacion de la interface DatosPersonales&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.inyeccion.impl;&lt;br /&gt;&lt;br /&gt;import org.dracof.spring.inyeccion.DatosPersonales;&lt;br /&gt;&lt;br /&gt;public class DatosPersonalesImpl implements DatosPersonales {&lt;br /&gt;&lt;br /&gt; private String nombre;&lt;br /&gt; private int edad;&lt;br /&gt; private String rfc;&lt;br /&gt; &lt;br /&gt; public DatosPersonalesImpl(){&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public DatosPersonalesImpl(String nombre, int edad, String rfc){&lt;br /&gt;  this.nombre = nombre;&lt;br /&gt;  this.edad = edad;&lt;br /&gt;  this.rfc = rfc;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void setEdad(int edad) {&lt;br /&gt;  this.edad = edad;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setNombre(String nombre) {&lt;br /&gt;  this.nombre = nombre;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setRfc(String rfc) {&lt;br /&gt;  this.rfc = rfc;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String toString() {&lt;br /&gt;  StringBuilder cadena = new StringBuilder();&lt;br /&gt;  cadena.append("Nombre:").append( this.nombre );&lt;br /&gt;  cadena.append("; Edad: ").append( this.edad );&lt;br /&gt;  cadena.append("; RFC: ").append( this.rfc );&lt;br /&gt;  return cadena.toString();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Application Context&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;beans&amp;gt;&lt;br /&gt; &amp;lt;!-- Inyeccion por setters --&amp;gt; &lt;br /&gt; &amp;lt;bean id="datosPersonalesJuanito" class="org.dracof.spring.inyeccion.impl.DatosPersonalesImpl"&amp;gt;&lt;br /&gt;  &amp;lt;property name="nombre" value="Juanito"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="edad" value="33"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="rfc" value="JAN32323212"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;!-- Inyeccion por setters usando &amp;lt;value&amp;gt;--&amp;gt;&lt;br /&gt; &amp;lt;bean id="datosPersonalesPepito" class="org.dracof.spring.inyeccion.impl.DatosPersonalesImpl"&amp;gt;&lt;br /&gt;  &amp;lt;property name="nombre"&amp;gt;&lt;br /&gt;   &amp;lt;value&amp;gt;Pepito&amp;lt;/value&amp;gt;&lt;br /&gt;  &amp;lt;/property&amp;gt;&lt;br /&gt;  &amp;lt;property name="edad"&amp;gt;&lt;br /&gt;   &amp;lt;value&amp;gt;54&amp;lt;/value&amp;gt;&lt;br /&gt;  &amp;lt;/property&amp;gt;&lt;br /&gt;  &amp;lt;property name="rfc"&amp;gt;&lt;br /&gt;   &amp;lt;value&amp;gt;PEP2145322&amp;lt;/value&amp;gt;&lt;br /&gt;  &amp;lt;/property&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;!-- Inyeccion por constructor respetando orden de parametros --&amp;gt;&lt;br /&gt; &amp;lt;bean id="datosPersonalesDracofito" class="org.dracof.spring.inyeccion.impl.DatosPersonalesImpl"&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg value="Drascofito"/&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg value="28"/&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg value="DRA231234"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;!-- Inyeccion por constructor indicando el orden de parametros con index --&amp;gt;&lt;br /&gt; &amp;lt;bean id="datosPersonalesDracofito2" class="org.dracof.spring.inyeccion.impl.DatosPersonalesImpl"&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg value="Drascofito" index="0"/&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg value="DRA231234" index="2"/&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg value="28" index="1"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;!-- Inyeccion por constructor usando &amp;lt;value&amp;gt; --&amp;gt;&lt;br /&gt; &amp;lt;bean id="datosPersonalesGordita" class="org.dracof.spring.inyeccion.impl.DatosPersonalesImpl"&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg&amp;gt;&lt;br /&gt;   &amp;lt;value&amp;gt;Gordita&amp;lt;/value&amp;gt;&lt;br /&gt;  &amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg&amp;gt;&lt;br /&gt;   &amp;lt;value&amp;gt;15&amp;lt;/value&amp;gt;&lt;br /&gt;  &amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg&amp;gt;&lt;br /&gt;   &amp;lt;value&amp;gt;GOR544321&amp;lt;/value&amp;gt;&lt;br /&gt;  &amp;lt;/constructor-arg&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;!-- Definicion de string para usarlo despues como ref --&amp;gt;&lt;br /&gt; &amp;lt;bean id="nombreX" class="java.lang.String"&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg value="Nombre Desconocido"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;!-- Definicion de Integer para usarlo despues como ref --&amp;gt;&lt;br /&gt; &amp;lt;bean id="edadX" class="java.lang.Integer"&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg value="0"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;!-- Definicion de string para usarlo despues como ref --&amp;gt;&lt;br /&gt; &amp;lt;bean id="rfcX" class="java.lang.String"&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg value="RFC Desconocido"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt; &lt;br /&gt; &lt;br /&gt; &amp;lt;!-- Inyeccion por constructor usando referencias a otros beans definidos--&amp;gt;&lt;br /&gt; &amp;lt;bean id="datosPersonalesDesconocido" class="org.dracof.spring.inyeccion.impl.DatosPersonalesImpl"&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg ref="nombreX"/&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg ref="edadX"/&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg ref="rfcX"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Clase de pruebas&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.test;&lt;br /&gt;&lt;br /&gt;import org.dracof.spring.inyeccion.DatosPersonales;&lt;br /&gt;import org.springframework.context.ApplicationContext;&lt;br /&gt;import org.springframework.context.support.ClassPathXmlApplicationContext;&lt;br /&gt;&lt;br /&gt;public class DatosPersonalesPrueba {&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");&lt;br /&gt;  &lt;br /&gt;  DatosPersonales datosJuanito = (DatosPersonales) context.getBean("datosPersonalesJuanito");&lt;br /&gt;  System.out.println( datosJuanito.toString() );&lt;br /&gt;  &lt;br /&gt;  DatosPersonales datosPepito = (DatosPersonales) context.getBean("datosPersonalesPepito");&lt;br /&gt;  System.out.println( datosPepito.toString() );&lt;br /&gt;  &lt;br /&gt;  DatosPersonales datosDracofito = (DatosPersonales) context.getBean("datosPersonalesDracofito");&lt;br /&gt;  System.out.println( datosDracofito.toString() );&lt;br /&gt;  &lt;br /&gt;  DatosPersonales datosDracofito2 = (DatosPersonales) context.getBean("datosPersonalesDracofito2");&lt;br /&gt;  System.out.println( datosDracofito2.toString() );&lt;br /&gt;  &lt;br /&gt;  DatosPersonales datosGordita = (DatosPersonales) context.getBean("datosPersonalesGordita");&lt;br /&gt;  System.out.println( datosGordita.toString() );&lt;br /&gt;&lt;br /&gt;  DatosPersonales datosDesconocido = (DatosPersonales) context.getBean("datosPersonalesDesconocido");&lt;br /&gt;  System.out.println( datosDesconocido.toString() );&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salida:&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Nombre:Juanito; Edad: 33; RFC: JAN32323212&lt;br /&gt;Nombre:Pepito; Edad: 54; RFC: PEP2145322&lt;br /&gt;Nombre:Drascofito; Edad: 28; RFC: DRA231234&lt;br /&gt;Nombre:Drascofito; Edad: 28; RFC: DRA231234&lt;br /&gt;Nombre:Gordita; Edad: 15; RFC: GOR544321&lt;br /&gt;Nombre:Nombre Desconocido; Edad: 0; RFC: RFC Desconocido&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Descargar Proyectito&lt;br /&gt;&lt;a href="http://sites.google.com/site/dracof/spring/InyeccionSpring.zip"&gt;InyeccionSpring.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-2879643509733608247?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/2879643509733608247/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/uso-de-inyeccion-por-constructor-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/2879643509733608247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/2879643509733608247'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/uso-de-inyeccion-por-constructor-y.html' title='Uso de inyeccion por constructor y setters en Spring'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-2389556530812032583</id><published>2009-08-06T12:12:00.000-07:00</published><updated>2009-08-06T12:15:17.170-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><title type='text'>GString - Groovy</title><content type='html'>Muestra el uso de GString&lt;br /&gt;&lt;pre name="code" class="groovy"&gt;&lt;br /&gt;class Persona {&lt;br /&gt;    def nombre&lt;br /&gt;    def edad&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//def persona = new Persona(nombre:'dracof', edad:2)&lt;br /&gt;def persona = new Persona()&lt;br /&gt;persona.setNombre('dracof')&lt;br /&gt;persona.setEdad(28)&lt;br /&gt;&lt;br /&gt;println "Nombre de persona: ${persona.getNombre()}"; //&lt;-- Uso de GString ${}&lt;br /&gt;println "Edad de persona: ${persona.getEdad()}"      //&lt;-- Uso de GString ${}&lt;br /&gt;&lt;br /&gt;variable='Esta es una variable'&lt;br /&gt;println "Valor de variable:  ${variable}"    //&lt;-- Uso de GString ${}&lt;br /&gt;println 'Valor de variable:  ${variable}' //&lt;-OJO con la salida&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salida:&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Nombre de persona: dracof&lt;br /&gt;Edad de persona: 28&lt;br /&gt;Valor de variable:  Esta es una variable&lt;br /&gt;Valor de variable:  ${variable}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-2389556530812032583?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/2389556530812032583/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/gstring-groovy.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/2389556530812032583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/2389556530812032583'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/gstring-groovy.html' title='GString - Groovy'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-8601975790832111326</id><published>2009-08-06T12:08:00.000-07:00</published><updated>2009-08-06T12:10:18.431-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><title type='text'>Numeros en Groovy</title><content type='html'>En groovy los numeros son objetos&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="groovy"&gt;&lt;br /&gt;numero1 = 5&lt;br /&gt;numero2 = 10&lt;br /&gt;&lt;br /&gt;println 'numero1 instanceof java.lang.Integer: '  + (numero1 instanceof java.lang.Integer)&lt;br /&gt;println 'println numero1 instanceof Integer: ' + (numero1 instanceof Integer)&lt;br /&gt;println 'numero1 instanceof java.lang.String: '  + (numero1 instanceof java.lang.String)&lt;br /&gt;println 'numero1 instanceof java.lang.String: '  + numero1 instanceof java.lang.String   //&lt;- OJO con el resultado&lt;br /&gt;println 'numero1+numero2 = ' + (numero1+numero2)&lt;br /&gt;println 'usando numero2.intValue(): ' + (numero2.intValue())&lt;br /&gt;&lt;br /&gt;def sumaNumeros = numero1.plus(numero2)           //&lt;- suma usando el metodo plus&lt;br /&gt;println 'numero1.plus(numero2): ' + sumaNumeros    &lt;br /&gt;&lt;br /&gt;def restaNumeros = numero1.minus(numero2)           //&lt;- resta usando el metodo minus&lt;br /&gt;println 'numero1.minus(numero2):  ' + restaNumeros&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salida:&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;numero1 instanceof java.lang.Integer: true&lt;br /&gt;println numero1 instanceof Integer: true&lt;br /&gt;numero1 instanceof java.lang.String: false&lt;br /&gt;true&lt;br /&gt;numero1+numero2 = 15&lt;br /&gt;usando numero2.intValue(): 10&lt;br /&gt;numero1.plus(numero2): 15&lt;br /&gt;numero1.minus(numero2):  -5&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Suerte&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-8601975790832111326?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/8601975790832111326/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/numeros-en-groovy.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/8601975790832111326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/8601975790832111326'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/numeros-en-groovy.html' title='Numeros en Groovy'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-6805115324972465639</id><published>2009-08-06T11:25:00.000-07:00</published><updated>2009-08-23T13:30:01.939-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>Uso de Scope Basico en Spring</title><content type='html'>Muestra el uso del scope singleton y prototype en spring&lt;br /&gt;&lt;br /&gt;Librerias&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt; spring.jar&lt;br /&gt; commons-logging.jar&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Interface IPrototype&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.scope;&lt;br /&gt;&lt;br /&gt;public interface IPrototype {}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Interface ISingleton&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.scope;&lt;br /&gt;&lt;br /&gt;public interface ISingleton {}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Implementacion de IPrototype&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.scope.impl;&lt;br /&gt;&lt;br /&gt;import org.dracof.spring.scope.IPrototype;&lt;br /&gt;&lt;br /&gt;public class ClasePrototypeImpl implements IPrototype{&lt;br /&gt; public ClasePrototypeImpl() {&lt;br /&gt;  System.out.println("Creando nueva instancia de ClasePrototypeImpl!");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Implementacion de ISingleton &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.scope.impl;&lt;br /&gt;&lt;br /&gt;import org.dracof.spring.scope.ISingleton;&lt;br /&gt;&lt;br /&gt;public class ClaseSingletonImpl implements ISingleton {&lt;br /&gt; public ClaseSingletonImpl() {&lt;br /&gt;  System.out.println("Creando nueva instancia de ClaseSingletonImpl!");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;applicationContext.xml&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;beans&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;!-- Por default es singleton --&amp;gt;&lt;br /&gt; &amp;lt;bean id="claseSingleton" &lt;br /&gt;  class="org.dracof.spring.scope.impl.ClaseSingletonImpl"&lt;br /&gt;   scope="singleton"/&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;bean id="clasePrototype" &lt;br /&gt;  class="org.dracof.spring.scope.impl.ClasePrototypeImpl"&lt;br /&gt;  scope="prototype"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Clase de prueba &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.spring.test;&lt;br /&gt;&lt;br /&gt;import org.dracof.spring.scope.IPrototype;&lt;br /&gt;import org.dracof.spring.scope.ISingleton;&lt;br /&gt;import org.springframework.context.ApplicationContext;&lt;br /&gt;import org.springframework.context.support.ClassPathXmlApplicationContext;&lt;br /&gt;&lt;br /&gt;public class PruebaScope {&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");&lt;br /&gt;  &lt;br /&gt;  ISingleton claseSingleton1 = (ISingleton)context.getBean("claseSingleton");&lt;br /&gt;  ISingleton claseSingleton2 = (ISingleton)context.getBean("claseSingleton");&lt;br /&gt;  ISingleton claseSingleton3 = (ISingleton)context.getBean("claseSingleton");&lt;br /&gt;&lt;br /&gt;  IPrototype clasePrototype1 = (IPrototype)context.getBean("clasePrototype");&lt;br /&gt;  IPrototype clasePrototype2 = (IPrototype)context.getBean("clasePrototype");&lt;br /&gt;  IPrototype clasePrototype3 = (IPrototype)context.getBean("clasePrototype");&lt;br /&gt; }&lt;br /&gt;}  &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salida&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Creando nueva instancia de ClaseSingletonImpl!&lt;br /&gt;Creando nueva instancia de ClasePrototypeImpl!&lt;br /&gt;Creando nueva instancia de ClasePrototypeImpl!&lt;br /&gt;Creando nueva instancia de ClasePrototypeImpl!&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Descargar proyectito&lt;br /&gt;&lt;a href="http://sites.google.com/site/dracof/spring/ScopeSpring.zip"&gt;ScopeSpring.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-6805115324972465639?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/6805115324972465639/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/uso-de-scope-basico-en-spring.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/6805115324972465639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/6805115324972465639'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/uso-de-scope-basico-en-spring.html' title='Uso de Scope Basico en Spring'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-7449475378754307099</id><published>2009-08-06T08:49:00.000-07:00</published><updated>2009-08-23T13:30:21.776-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Struts2'/><title type='text'>Primer Programa Struts2</title><content type='html'>Este es un ejemplo muy simple del uso de Struts2, primeramente se inicia con una pagina index.jsp la cual muestra una link que pasa por una accion e imprime un mensaje en consola para despues mostrar una pagina de resultado (resultado.jsp) &lt;br /&gt;&lt;br /&gt;Librerias usadas&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;commons-fileupload-1.2.1.jar&lt;br /&gt;freemarker-2.3.13.jar&lt;br /&gt;ognl-2.6.11.jar&lt;br /&gt;struts2-core-2.1.6.jar&lt;br /&gt;xwork-2.1.2.jar&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Paginas y XML&lt;br /&gt;&lt;br /&gt;index.jsp&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags" %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Insert title here&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt; &amp;lt;br/&amp;gt;&lt;br /&gt;  &amp;lt;s:a href="miAccion.action"&amp;gt;Enviar...&amp;lt;/s:a&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;resultado.jsp&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Insert title here&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt; Primer programita en Struts2. &amp;lt;br/&amp;gt;&lt;br /&gt; Se escribe un mensaje desde la consola del servidor (verificar)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt; Suerte.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt; &amp;lt;a href="javascript:history.back()"&amp;gt;Regresar&amp;lt;/a&amp;gt; &lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;MiAccion.java&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.dracof.struts2.actions;&lt;br /&gt;&lt;br /&gt;public class MiAccion  {&lt;br /&gt; public String execute() throws Exception {&lt;br /&gt;  System.out.println("Pasando por el execute de MiAccion!");&lt;br /&gt;  return "success";&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;struts.xml&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration2.0//EN"&lt;br /&gt; "http://struts.apache.org/dtds/struts-2.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;struts&amp;gt;&lt;br /&gt; &amp;lt;package name="default" extends="struts-default" namespace="/"&amp;gt;&lt;br /&gt;  &amp;lt;action name="miAccion" class="org.dracof.struts2.actions.MiAccion"&amp;gt;&lt;br /&gt;   &amp;lt;result name="success"&amp;gt;resultado.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt; &amp;lt;/package&amp;gt;&lt;br /&gt;&amp;lt;/struts&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;web.xml&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" &lt;br /&gt;  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" &lt;br /&gt;  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;display-name&amp;gt;Basico&amp;lt;/display-name&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;filter&amp;gt;&lt;br /&gt;  &amp;lt;filter-name&amp;gt;struts2&amp;lt;/filter-name&amp;gt;&lt;br /&gt;  &amp;lt;filter-class&amp;gt;org.apache.struts2.dispatcher.FilterDispatcher&amp;lt;/filter-class&amp;gt;&lt;br /&gt; &amp;lt;/filter&amp;gt;&lt;br /&gt; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;  &amp;lt;filter-name&amp;gt;struts2&amp;lt;/filter-name&amp;gt;&lt;br /&gt;  &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;  &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;&lt;br /&gt; &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Estructura del proyecto&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/struts2basico/estructuraStrust2Basico.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;index.jsp&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/struts2basico/indexStruts2Basico.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;consola de tomcat&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/struts2basico/consoleStruts2Basico.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;resultado.jsp&lt;br /&gt;&lt;img src="http://sites.google.com/site/dracof/struts2basico/resultadoStrutsBasico2.JPG"/&gt;&lt;br /&gt;&lt;br /&gt;Descargar war&lt;br /&gt;&lt;a href="http://sites.google.com/site/dracof/struts2basico/basico.war"&gt;basico.war&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Descargr proyecto&lt;br /&gt;&lt;a href="http://sites.google.com/site/dracof/struts2basico/Basico.zip"&gt;ProyectoBasico.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-7449475378754307099?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/7449475378754307099/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/primer-programa-struts2.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/7449475378754307099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/7449475378754307099'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/primer-programa-struts2.html' title='Primer Programa Struts2'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-87218081547823286</id><published>2009-08-04T19:59:00.000-07:00</published><updated>2009-08-04T20:03:11.258-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Instalar Plugin de Flasplayer en Firefox Opensolaris</title><content type='html'>Descargar el archivo flash_player_10_solaris_x86.tar &lt;br /&gt;&lt;br /&gt;Desempaquetarlo&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;tar -xvf flash_player_10_solaris_x86.tar &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Entramos al directorio creado por tar&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;cd flash_player_10_solaris_r22_87_x86/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Copiaamos el so al directorio de plugins de firefox&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;cp libflashplayer.so /usr/lib/firefox/plugins/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Y listo...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-87218081547823286?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/87218081547823286/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/instalar-plugin-de-flasplayer-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/87218081547823286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/87218081547823286'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/instalar-plugin-de-flasplayer-en.html' title='Instalar Plugin de Flasplayer en Firefox Opensolaris'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-158175687675236717</id><published>2009-08-03T06:37:00.000-07:00</published><updated>2009-08-13T10:07:14.614-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><title type='text'>Recorriendo una lista basicamente en Groovy</title><content type='html'>Algunas formas de recorrer una lista...&lt;br /&gt;&lt;pre name="code" class="groovy"&gt;&lt;br /&gt;def lista = [1,4,5,"Cadena",]&lt;br /&gt;&lt;br /&gt;lista.size().times {&lt;br /&gt;    print it + " "&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;print "\nElementos en lista : " &lt;br /&gt;for( i in lista ) {&lt;br /&gt;    print "${i}  "&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;print "\nOtra forma de mostrarlos : "&lt;br /&gt;for (indice=0; indice&amp;lt;lista.size(); indice++) {&lt;br /&gt;    print " ${lista[indice]} "&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;print "\nUna forma mas : "&lt;br /&gt;lista.size().times {&lt;br /&gt;    print lista[it] + ' ' ;&lt;br /&gt;}    &lt;br /&gt;&lt;br /&gt;print "\nPor si fuera poco : "&lt;br /&gt;for(i in 0..lista.size()-1){&lt;br /&gt;    print lista[i] + ' ' ;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salida: &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;0 1 2 3 &lt;br /&gt;Elementos en lista : 1  4  5  Cadena  &lt;br /&gt;Otra forma de mostrarlos :  1  4  5  Cadena &lt;br /&gt;Una forma mas : 1 4 5 Cadena &lt;br /&gt;Por si fuera poco : 1 4 5 Cadena &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-158175687675236717?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/158175687675236717/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/recorriendo-una-lista-basicamente.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/158175687675236717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/158175687675236717'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/recorriendo-una-lista-basicamente.html' title='Recorriendo una lista basicamente en Groovy'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-4719120220337452075</id><published>2009-08-02T21:58:00.000-07:00</published><updated>2009-08-03T06:25:36.774-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Grails'/><title type='text'>Instalando Grails</title><content type='html'>Descargamos el archivo grails-bin-1.2-M1.tar.gz&lt;br /&gt;&lt;br /&gt;Lo desempaquetamos &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;tar -xvf grails-bin-1.2-M1.tar.gz&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Establecemos la variable de entorno &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;export JAVA_HOME=/usr/java&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Nos establecemos dentro del directorio bin de grails, en mi caso &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;cd /opt/grails-1.2-M1/bin&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ejecutamos el siguiente comando de grails &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;sh grails help&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Obteniendo la salida &lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Welcome to Grails 1.2-M1 - http://grails.org/&lt;br /&gt;Licensed under Apache Standard License 2.0&lt;br /&gt;Grails home is set to: /opt/grails-1.2-M1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Se puede establecer las variables JAVA_HOME y GROOVY_HOME de forma permanenete al igual que escribir en PATH la ruta /opt/grails-1.2-M1/bin&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-4719120220337452075?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/4719120220337452075/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/instalando-grails.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/4719120220337452075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/4719120220337452075'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/instalando-grails.html' title='Instalando Grails'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-6861413136842259711</id><published>2009-08-02T00:32:00.000-07:00</published><updated>2009-08-13T10:06:45.515-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><title type='text'>Uso Basico de Rangos en Groovy</title><content type='html'>Muestra el uso b&amp;aacute;sico de rangos con groovy&lt;br /&gt;&lt;pre name="code" class="groovy"&gt;&lt;br /&gt;def rango = 1..5&lt;br /&gt;&lt;br /&gt;println 'Rango inicial: ' + rango.from&lt;br /&gt;println 'Rango final: ' + rango.to&lt;br /&gt;println "Tamanio de rango: ${rango.size()}"&lt;br /&gt;&lt;br /&gt;def r= rango.each {&lt;br /&gt;    println "  Numero actual: ${it}"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;println 'r = ' + r&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salida:&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Rango inicial: 1&lt;br /&gt;Rango final: 5&lt;br /&gt;Tamanio de rango: 5&lt;br /&gt;  Numero actual: 1&lt;br /&gt;  Numero actual: 2&lt;br /&gt;  Numero actual: 3&lt;br /&gt;  Numero actual: 4&lt;br /&gt;  Numero actual: 5&lt;br /&gt;r = [1, 2, 3, 4, 5]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-6861413136842259711?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/6861413136842259711/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/08/rangos-basicos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/6861413136842259711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/6861413136842259711'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/08/rangos-basicos.html' title='Uso Basico de Rangos en Groovy'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-7870079822768817037</id><published>2009-07-31T13:42:00.000-07:00</published><updated>2009-08-13T10:06:33.975-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><title type='text'>Uso Basico de Mapas en Groovy</title><content type='html'>Muestra el uso b&amp;aacute;sico de mapas: &lt;br /&gt;&lt;pre name="code" class="groovy"&gt;&lt;br /&gt;def mapaEdades = ['Juan':10, 'Pepe':0, 'Carlitos':0]&lt;br /&gt;&lt;br /&gt;print '\nEdad de Juan: ' + mapaEdades.Juan&lt;br /&gt;mapaEdades["Pepe"]=55&lt;br /&gt;print '\nEdad de Pepe: ' + mapaEdades["Pepe"] //mas comun para los que venimos de Java&lt;br /&gt;mapaEdades.Carlitos=30&lt;br /&gt;print '\nEdad de Carlitos: ' + mapaEdades.Carlitos&lt;br /&gt;print '\nTamanio del mapa: ' + mapaEdades.size()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salida:&lt;br /&gt;&lt;pre name="code" class="groovy"&gt;&lt;br /&gt;Edad de Juan: 10&lt;br /&gt;Edad de Pepe: 55&lt;br /&gt;Edad de Carlitos: 30&lt;br /&gt;Tamanio del mapa: 3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-7870079822768817037?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/7870079822768817037/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/07/uso-basico-de-mapas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/7870079822768817037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/7870079822768817037'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/07/uso-basico-de-mapas.html' title='Uso Basico de Mapas en Groovy'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-1772401326446823618</id><published>2009-07-31T13:37:00.000-07:00</published><updated>2009-08-13T10:06:22.024-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><title type='text'>Uso Basico de Listas en Groovy</title><content type='html'>Muestra el uso b&amp;aacute;sico de listas: &lt;br /&gt;&lt;pre name="code" class="groovy"&gt;&lt;br /&gt;def lista = ['Hola', 'Pepe', 10]&lt;br /&gt;&lt;br /&gt;print lista[0] + ' '&lt;br /&gt;print lista[1] + ' de '&lt;br /&gt;print lista[2] + ' '&lt;br /&gt;&lt;br /&gt;lista[3] = 'anios ' //nuevo elemento a la lista&lt;br /&gt;&lt;br /&gt;print lista[3] + '\n'&lt;br /&gt;&lt;br /&gt;print 'Tamanio de lista: ' + lista.size&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salida:&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Hola Pepe de 10 anios &lt;br /&gt;Tamanio de lista: 4&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-1772401326446823618?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/1772401326446823618/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/07/uso-basico-de-listas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/1772401326446823618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/1772401326446823618'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/07/uso-basico-de-listas.html' title='Uso Basico de Listas en Groovy'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-1826108485373332983</id><published>2009-07-31T13:28:00.000-07:00</published><updated>2009-08-13T10:06:06.831-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><title type='text'>Clase Basica en Groovy</title><content type='html'>Creaci&amp;oacute;n y uso de una clase&lt;br /&gt;&lt;pre name="code" class="groovy"&gt;&lt;br /&gt;class Persona {&lt;br /&gt;    def nombre&lt;br /&gt;    def edad&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;def persona = new Persona()&lt;br /&gt;persona.setNombre('Juan')&lt;br /&gt;persona.setEdad(10)&lt;br /&gt;&lt;br /&gt;print 'Nombre: ' + persona.getNombre() + ' Edad: ' + persona.getEdad() + '\n' &lt;br /&gt;&lt;br /&gt;persona.nombre = 'Pepe'&lt;br /&gt;persona.edad= 100&lt;br /&gt;&lt;br /&gt;print 'Nombre: ' + persona.getNombre() + ' Edad: ' + persona.getEdad()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salida:&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Nombre: Juan Edad: 10&lt;br /&gt;Nombre: Pepe Edad: 100&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-1826108485373332983?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/1826108485373332983/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/07/clase-basica.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/1826108485373332983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/1826108485373332983'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/07/clase-basica.html' title='Clase Basica en Groovy'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-6468348224894230735</id><published>2009-07-31T13:20:00.000-07:00</published><updated>2009-07-31T13:31:11.777-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><title type='text'>Primer Programa Groovy</title><content type='html'>Facil no?&lt;br /&gt;&lt;pre name="code" class="groovy"&gt; &lt;br /&gt;/*&lt;br /&gt;  Comentario linea 1&lt;br /&gt;  Comentario linea 2&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;def ciclos = 10&lt;br /&gt;ciclos.times {&lt;br /&gt;    print 'Primer programa ('+ciclos+') \n' //comentario de una linea&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salida:&lt;br /&gt;&lt;pre name="code" class="bash"&gt;&lt;br /&gt;Primer programa (10) &lt;br /&gt;Primer programa (10) &lt;br /&gt;Primer programa (10) &lt;br /&gt;Primer programa (10) &lt;br /&gt;Primer programa (10) &lt;br /&gt;Primer programa (10) &lt;br /&gt;Primer programa (10) &lt;br /&gt;Primer programa (10) &lt;br /&gt;Primer programa (10) &lt;br /&gt;Primer programa (10) &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Suerte.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-6468348224894230735?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/6468348224894230735/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/07/primer-programa-groovy.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/6468348224894230735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/6468348224894230735'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/07/primer-programa-groovy.html' title='Primer Programa Groovy'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-6539019757492839984</id><published>2009-07-27T12:57:00.000-07:00</published><updated>2009-07-27T13:25:05.503-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Ejemplo Validacion de Formulario con JQuery</title><content type='html'>Un ejemplo usando mas validaciones (required, digits, min, max, email, number) con jQuery&lt;br /&gt;&lt;br /&gt;JS:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&gt; &lt;span style="font-style: italic; color: rgb(204, 0, 0);"&gt;jquery.js&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&gt;&lt;span style="color: rgb(204, 0, 0);"&gt; jquery.validate.js&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt; &amp;lt;script src='../js/jquery.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;script src='../js/jquery.validate.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&amp;gt;&lt;br /&gt; &amp;lt;title&amp;gt;Insert title here&amp;lt;/title&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;style type="text/css"&amp;gt;&lt;br /&gt;input.error, input select.error {&lt;br /&gt;border: 1px solid red;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;label.error{&lt;br /&gt;color:blue;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;form name="nombreForm" id="idNombreForm"&amp;gt;&lt;br /&gt;&amp;lt;table&amp;gt;&lt;br /&gt; &amp;lt;tr&amp;gt;&lt;br /&gt;  &amp;lt;td&amp;gt;Nombre:&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;td&amp;gt;&amp;lt;input type="text" name="nombre" id="nombre"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;/tr&amp;gt;&lt;br /&gt; &amp;lt;tr&amp;gt;&lt;br /&gt;  &amp;lt;td&amp;gt;Edad:&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;td&amp;gt;&amp;lt;input type="text" name="edad" id="edad"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;/tr&amp;gt;&lt;br /&gt; &amp;lt;tr&amp;gt;&lt;br /&gt;  &amp;lt;td&amp;gt;Sueldo:&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;td&amp;gt;&amp;lt;input type="text" name="sueldo" id="sueldo"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;/tr&amp;gt;&lt;br /&gt; &amp;lt;tr&amp;gt;&lt;br /&gt;  &amp;lt;td&amp;gt;Email:&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;td&amp;gt;&amp;lt;input type="text" name="email" id="email"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;input type="submit" value="Enviar"/&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt;var reglas = {&lt;br /&gt; nombre: {required:true},&lt;br /&gt; edad: {required:true, digits:true, min:1, max:150},&lt;br /&gt; sueldo: {required:true, number:true,},&lt;br /&gt; email:{required: true, email:true},&lt;br /&gt;};&lt;br /&gt;var mensajes = {&lt;br /&gt; nombre: {required:"Nombre Requerido"},&lt;br /&gt; edad:{required:"Edad Requerida", digits:"Campo edad acepta solo numeros enteros",&lt;br /&gt;   min:"Edad minima 1" , max:"Edad maxima 150"},&lt;br /&gt; sueldo:{required:"Sueldo Requerido", number:"Campo acepta solo numeros reales"},&lt;br /&gt; email:{required:"Email Requerido", email:"Formato de Email incorrecto"},&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;$(document).ready (&lt;br /&gt;function(){&lt;br /&gt;$("#idNombreForm").validate ({&lt;br /&gt; rules:reglas,&lt;br /&gt; messages:mensajes&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;} );&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ejemplo Funcional:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dracof.googlepages.com/DatosPersonales.html" target="_blank"&gt;Ver Ejemplo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Suerte.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-6539019757492839984?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/6539019757492839984/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/07/ejemplo-validacion-de-formulario-con.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/6539019757492839984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/6539019757492839984'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/07/ejemplo-validacion-de-formulario-con.html' title='Ejemplo Validacion de Formulario con JQuery'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-3898919367903977138</id><published>2009-07-27T11:23:00.000-07:00</published><updated>2009-07-31T13:15:33.557-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Ejemplo Basico de Validacion de Formulario con JQuery</title><content type='html'>Ejemplo Basico de Validacion de formulario con jQuery&lt;br /&gt;&lt;br /&gt;JS:&lt;br /&gt; &lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&gt;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;jquery.js&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&gt; &lt;/span&gt;&lt;span style="font-style: italic;"&gt;jquery.validate.js&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;  &amp;lt;script src='../js/jquery.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;  &amp;lt;script src='../js/jquery.validate.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;  &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&amp;gt;&lt;br /&gt;  &amp;lt;title&amp;gt;Insert title here&amp;lt;/title&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;style type="text/css"&amp;gt;&lt;br /&gt;  input.error, input select.error {&lt;br /&gt;    border: 1px solid red;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  label.error{&lt;br /&gt;    color:blue;&lt;br /&gt;  }&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;form name="nombreForm" id="idNombreForm"&amp;gt;&lt;br /&gt;    Nombre: &amp;lt;input type="text" name="nombre" id="nombre"/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;    &amp;lt;input type="submit" value="Enviar"/&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt; var reglas = {nombre: {required:true}};&lt;br /&gt; var mensajes = {nombre: {required:"Nombre Requerido"}};&lt;br /&gt;&lt;br /&gt; $(document).ready (function(){&lt;br /&gt;    $("#idNombreForm").validate ({&lt;br /&gt;       rules:reglas,&lt;br /&gt;       messages:mensajes&lt;br /&gt;    });&lt;br /&gt; } );&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Suerte.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-3898919367903977138?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/3898919367903977138/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/07/ejemplo-basico-de-validacion-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/3898919367903977138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/3898919367903977138'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/07/ejemplo-basico-de-validacion-de.html' title='Ejemplo Basico de Validacion de Formulario con JQuery'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-860049657591309383</id><published>2009-07-26T11:25:00.000-07:00</published><updated>2009-08-13T10:07:35.647-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Comandos Basicos VI en Unix</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;Comando&lt;/span&gt; =&gt; Acción&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;k&lt;/span&gt; =&gt; Hacia arriba&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;l&lt;/span&gt; =&gt;Hacia la derecha&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;j&lt;/span&gt; =&gt;Hacia abajo&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;h &lt;/span&gt;=&gt; Hacia la izquierda&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;0&lt;/span&gt; =&gt; Inicio de línea&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;$&lt;/span&gt; =&gt;Fin de línea&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;w&lt;/span&gt; =&gt; Word: Avanza una palabra&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;b&lt;/span&gt; =&gt; Back: Retrocede una palabra&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;e&lt;/span&gt; =&gt; End: Al final de la palabra&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;H&lt;/span&gt; =&gt; Home: Esquina superior izquierda de la ventana&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;L&lt;/span&gt; =&gt; Last: Esquina inferior izquierda de la ventana&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;i&lt;/span&gt; =&gt; Insertar (delante del cursor)&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;I&lt;/span&gt; =&gt; Insertar al principio de la linea&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;a&lt;/span&gt; =&gt; Añadir (detrás del cursor)&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;A&lt;/span&gt; =&gt; Añadir al final de la linea&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;o&lt;/span&gt; =&gt; Insertar una linea debajo de la actual&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;O&lt;/span&gt; =&gt; Insertar una linea encima de la actual&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;&lt;br /&gt;x&lt;/span&gt; =&gt; Borrar carácter actual&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;X&lt;/span&gt; =&gt; Borrar carácter anterior&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;dd&lt;/span&gt; =&gt; Borrar linea actual&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;D&lt;/span&gt; =&gt; Borrar hasta final de linea&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;dw&lt;/span&gt; =&gt; Borrar palabra&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;&lt;br /&gt;yy&lt;/span&gt; =&gt; Copiar en el buffer la linea actual&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;p&lt;/span&gt; =&gt; Pega el buffer detrás del cursor&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;P&lt;/span&gt; =&gt; Pega el buffer delante del cursor&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;&lt;br /&gt;u&lt;/span&gt; =&gt; Deshacer último comando de actualización&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;U&lt;/span&gt; =&gt; Deshacer todos los cambios en la linea actual&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;&lt;br /&gt;:w&lt;/span&gt; =&gt; Graba las modificaciones efectuadas en el fichero&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;:q&lt;/span&gt; =&gt; Salir (si no hay cambios)&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;:q!&lt;/span&gt; =&gt; Salir (sin grabar)&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;:wq&lt;/span&gt; =&gt; Grabar cambios y salir&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;:=&lt;/span&gt; =&gt; Muestra el número total de líneas del archivo&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;:.= &lt;/span&gt;=&gt; Muestra el número de línea actual&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;number &lt;/span&gt;=&gt;  numeración de líneas&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Suerte.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-860049657591309383?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/860049657591309383/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/07/comandos-basicos-vi.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/860049657591309383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/860049657591309383'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/07/comandos-basicos-vi.html' title='Comandos Basicos VI en Unix'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6104584203949807739.post-1465898809157835232</id><published>2009-07-24T06:33:00.000-07:00</published><updated>2009-08-23T13:30:38.698-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Commons Lang (Arreglos)</title><content type='html'>Trabajo para agregar/eliminar elementos de un arreglo&lt;br /&gt;JAR: commons-lang.jar&lt;br /&gt;&lt;br /&gt;Agregar Elemento:&lt;br /&gt;&lt;pre name="code" class="java"&gt;  &lt;br /&gt;...&lt;br /&gt;import org.apache.commons.lang.ArrayUtils;&lt;br /&gt;...&lt;br /&gt;String []capas = new String[0];&lt;br /&gt;capas = (String[]) ArrayUtils.add(capas, "");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Eliminar Elemento:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;  &lt;br /&gt;...&lt;br /&gt;import org.apache.commons.lang.ArrayUtils;&lt;br /&gt;...&lt;br /&gt;String []capas = new String[5];&lt;br /&gt;int index = 2;&lt;br /&gt;//elimina el elemento 2 del arreglo&lt;br /&gt;capas = (String[]) ArrayUtils.remove(capas, index);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Suerte.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6104584203949807739-1465898809157835232?l=dracof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dracof.blogspot.com/feeds/1465898809157835232/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dracof.blogspot.com/2009/07/trabajo-para-agregareliminar-elementos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/1465898809157835232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6104584203949807739/posts/default/1465898809157835232'/><link rel='alternate' type='text/html' href='http://dracof.blogspot.com/2009/07/trabajo-para-agregareliminar-elementos.html' title='Commons Lang (Arreglos)'/><author><name>dracof</name><uri>http://www.blogger.com/profile/13686087354598736545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
