<?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:blogger='http://schemas.google.com/blogger/2008' 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-2050062303212170805</id><updated>2025-10-30T12:58:03.459-06:00</updated><category term="java"/><category term="grails"/><category term="cursos"/><category term="mysql"/><category term="spring"/><category term="familia"/><category term="liferay"/><category term="oracle"/><category term="appfuse"/><category term="escuela sabática"/><category term="jasperreports"/><category term="jsf"/><category term="mac"/><category term="opensolaris"/><category term="religión"/><category term="Fábrica SW"/><category term="academic java center"/><category term="ajax"/><category term="consultoría"/><category term="google"/><category term="groovy"/><category term="hibernate"/><category term="inventarios"/><category term="javaee"/><category term="jquery"/><category term="mail"/><category term="mejores prácticas"/><category term="netbeans"/><category term="patrones"/><category term="poi"/><category term="postgres"/><category term="reportes"/><category term="security"/><category term="ubuntu"/><category term="alfresco"/><category term="alta disponibilidad"/><category term="ant"/><category term="aventureros"/><category term="balanceo de cargas"/><category term="bienvenida"/><category term="bootstrap"/><category term="calendario"/><category term="chart"/><category term="cluster"/><category term="creencias"/><category term="debian"/><category term="docs"/><category term="glassfish"/><category term="googleapps"/><category term="i18n"/><category term="iReport"/><category term="jee"/><category term="linux"/><category term="muerte"/><category term="métodos ágiles"/><category term="openbravo"/><category term="pam"/><category term="scrum"/><category term="struts"/><category term="sábado"/><category term="transacciones"/><category term="transactions"/><category term="virtualbox"/><category term="windows"/><title type='text'>Java and stuff</title><subtitle type='html'>Blog de experiencias en Java y tecnología con la que me topo</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>78</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-1370706055704991527</id><published>2014-03-07T09:55:00.001-06:00</published><updated>2014-03-07T09:59:08.452-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="alta disponibilidad"/><category scheme="http://www.blogger.com/atom/ns#" term="balanceo de cargas"/><category scheme="http://www.blogger.com/atom/ns#" term="cluster"/><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="spring"/><title type='text'>Tomcat Cluster en Debian 7 (Wheezy)</title><content type='html'>Pues nos hemos animado a crear un cluster de tomcat. La verdad es muy sencillo hacerlo, simplemente &lt;a href=&quot;http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html&quot; target=&quot;_blank&quot;&gt;habilitas unas opciones que ya vienen en tomcat&lt;/a&gt; y configuras mod_jk en apache para que administre el cluster y haga el balanceo de cargas. Muy, muy fácil, el detalle está en que no tienes alta disponibilidad, razón por la que puse el cluster en primer lugar. ¿Y entonces? Pues me puse a investigar, ya probé LiveRebel, y funciona de maravilla, pero igual te cobran... Así que busqué un poco más y di con &lt;a href=&quot;https://www.jboss.org/mod_cluster&quot; target=&quot;_blank&quot;&gt;mod_cluster&lt;/a&gt; de RedHat. Esta herramienta te permite lo mismo que mod_jk, pero le agrega alta disponibilidad, ¿a qué me refiero con alta disponibilidad? Al hecho de que cuando hay que hacer un redeploy de la aplicación si estas con mod_jk, apache no va a darse cuenta y te va a seguir enviando al tomcat que está haciendo el redeploy, y el cliente recibe el error de que no hay nada ahí, lo que sí hace mod_jk es notar que una instancia de tomcat ha sido dada de baja, entonces para lograr alta disponibilidad cuando necesitas actualizar alguna aplicación tendrías que detener la instancia en la que vas a hacer la actualización, actualizar mientras está detenida y levantar la instancia para que tome los cambios, de esta forma el apache con mod_jk si va a redirigir el tráfico a la instancia que este activa mientras la otra se esta actualizando. El problema es que si tienes una buena cantidad de aplicaciones spring/grails el server toma su buena cantidad de tiempo para reiniciar. En fin, no me pareció práctico, con mod_cluster resuelves este problema, las instancias le avisan a apache que están haciendo un redeploy y apache cambia todos los clientes de esta instancia a algún otra, por lo que el cliente no pierde su sesión y puede seguir trabajando sin problema.&lt;br /&gt;
Hice el intento de hacerlo trabajar con java 8, pero todavía está muy inestable, se caía de cuando en cuando, por lo que puse java 7, la otra cosa que intenté fue echarlo a andar con Tomcat 8, pero tampoco funcionó porque mod_cluster usa unas funciones que ya no están en Tomcat 8, por lo que tuve que usar la siguiente infraestructura:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Debian 7&lt;/li&gt;
&lt;li&gt;apache 2.2.22 (instalado con aptitude)&lt;/li&gt;
&lt;li&gt;tomcat 7.0.52&lt;/li&gt;
&lt;li&gt;java 7 (1.7.0_51)&lt;/li&gt;
&lt;li&gt;mod_cluster 1.2.6.Final&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Todo lo tengo instalado en un solo servidor, apache hace de balanceador de cargas y único punto de entrada a las dos instancias de tomcat que tengo.&lt;br /&gt;
Para instalarlo hay que bajar los binarios para tu apache (en mi caso fue el x64) y el java bundle de mod_cluster. Los binarios de apache (*.so) van en donde están tus binarios en apache. En Debian 7 se encuentran en /usr/lib/apache2/modules y creas los archivos /etc/apache2/mods-available/cluster.load y /etc/apache2/mods-available/cluster.conf&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/jdmr/9413587.js&quot;&gt;&lt;/script&gt;
&lt;br /&gt;
Luego hay que ejecutar como root la instrucción: &lt;br /&gt;
&lt;code&gt;
a2enmod mod_cluster
&lt;/code&gt;
&lt;br/&gt;
Para habilitarlo.&lt;br/&gt;
Ahora necesitas copiar las librerías del java bundle de mod_cluster en el lib de cada instancia de tomcat que vayas a usar. En el bundle viene una libreria para tomcat7 y otra para tomcat6, usa la de tomcat7 y no pongas la de tomcat6. Y luego modificas los archivos server.xml de cada instancia de tomcat en ${INSTANCIA_TOMCAT}/conf/server.xml&lt;br /&gt;
&lt;br/&gt;
&lt;script src=&quot;https://gist.github.com/jdmr/9414040.js&quot;&gt;&lt;/script&gt;
&lt;br/&gt;
Es necesario iniciar apache primero y luego las instancias de tomcat, puedes revisar que aplicaciones estan publicadas en http://192.168.1.47:9999/cluster-manager.&lt;br/&gt;
Si haces cambios en tomcat no es necesario reiniciar apache (de eso se trata la alta disponibilidad), pero si haces cambios en apache, las instancias de tomcat pierden su conexión con apache y no se van a encontrar, es necesario reiniciar las instancias de tomcat cada vez que reinicies apache.</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/1370706055704991527/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/1370706055704991527' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/1370706055704991527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/1370706055704991527'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2014/03/tomcat-cluster-en-debian-7-wheezy.html' title='Tomcat Cluster en Debian 7 (Wheezy)'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-8791909605769689678</id><published>2013-05-31T10:13:00.001-05:00</published><updated>2013-05-31T10:14:29.753-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="escuela sabática"/><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><title type='text'>Escuela Sabática Universitaria</title><content type='html'>Había olvidado mencionarles que el sitio de la escuela sabática la tuve que migrar de Liferay a una aplicación en Grails debido a que la implementación en Liferay estaba basada en el uso de etiquetas, y la búsqueda de Liferay basada en etiquetas no es muy óptima, por lo que cada vez que teníamos más artículos se hacía exponencialmente más lento, llegó a tal lentitud que tuve que implementarle un cache a la aplicación, así sólo un cliente al día le tocaba esperar los más de 30 segundos que tardaba en cargar la página, en fin no era lo mejor, por lo que durante el invierno estuvimos trabajando en una versión basada en Grails con un diseño que hiciera que la búsqueda basada en las etiquetas que necesitamos para catalogar cada lección y tema que se publica, lo cual ha hecho que el sitio vuele :). En fin ya tenemos desde el segundo trimestre volando en esta nueva plataforma, a la cual le añadimos búsqueda textual entre otras cosas, pero ahora puedes buscar un texto tanto en título como en contenido de todas los temas y lecciones que hemos publicado. Estaremos trabajando en otras mejoras próximamente, pero por lo pronto quería avisarles que no olviden visitar el sitio de la &lt;a href=&quot;http://escuelasabaticauniversitaria.org/&quot; target=&quot;_blank&quot;&gt;Escuela Sabática&lt;/a&gt;. Oh! Y casi lo olvido, &amp;nbsp;si quieren ver el código que está detrás de ese sitio lo encuentran &lt;a href=&quot;https://github.com/jdmr/esu&quot; target=&quot;_blank&quot;&gt;aquí en github&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/8791909605769689678/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/8791909605769689678' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/8791909605769689678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/8791909605769689678'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2013/05/escuela-sabatica-universitaria.html' title='Escuela Sabática Universitaria'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-5691069997388452513</id><published>2013-05-31T10:01:00.000-05:00</published><updated>2013-05-31T10:01:04.129-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="spring"/><title type='text'>JQuery Image Upload en Spring MVC</title><content type='html'>Utilizar el &lt;a href=&quot;https://github.com/blueimp/jQuery-File-Upload&quot; target=&quot;_blank&quot;&gt;jQuery File Upload&lt;/a&gt; de &lt;a href=&quot;https://github.com/blueimp&quot; target=&quot;_blank&quot;&gt;blueimp&lt;/a&gt;&amp;nbsp;en Grails&amp;nbsp;es una delicia. Pero necesito hacer una aplicación grande y no sé lo suficiente como para mantenerla óptima dentro de Grails, así que decidí portarla a Spring MVC, pero no encontré una implementación de esta herramienta en Java que hiciera lo que hace el plugin, que simplemente implementa lo que la herramienta ya hace en otras plataformas. Así que me puse a implementarla y ya quedó. La pueden encontrar en &lt;a href=&quot;https://github.com/jdmr/fileUpload&quot; target=&quot;_blank&quot;&gt;github&lt;/a&gt;... Sólo necesitan clonarla, y ejecutarla con maven:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
mvn tomcat7:run
&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/5691069997388452513/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/5691069997388452513' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/5691069997388452513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/5691069997388452513'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2013/05/jquery-image-upload-en-spring-mvc.html' title='JQuery Image Upload en Spring MVC'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-3770862340011241206</id><published>2013-02-18T15:40:00.000-06:00</published><updated>2013-05-31T10:03:13.128-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bootstrap"/><category scheme="http://www.blogger.com/atom/ns#" term="hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="spring"/><title type='text'>Aplicación básica Spring MVC 3.2</title><content type='html'>Aplicación basada en:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Spring 3.2.1&lt;/li&gt;
&lt;li&gt;Hibernate 4.1.9&lt;/li&gt;
&lt;/ul&gt;
Utilizaré Maven para administrar la aplicación por lo que pueden utilizar NetBeans, IntelliJ, Eclipse o un editor de textos si así lo desean :)&lt;br /&gt;
&lt;br /&gt;
Para los que ya tienen experiencia y sólo necesitan ver los archivos, estos se encuentran en &lt;a href=&quot;https://github.com/jdmr/demo&quot; target=&quot;_blank&quot;&gt;mi proyecto demo en github&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Primero necesitas crear el proyecto base con&lt;br /&gt;
&lt;code&gt;mvn archetype:generate&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Y buscar la opción de aplicación web JEE ó crear una aplicación web con maven con cualquier IDE que lo soporte. Luego necesitamos asegurarnos de tener estas dependencias (el orden es importante):&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/jdmr/4980682.js&quot;&gt;&lt;/script&gt;
Puedes encontrar el &lt;a href=&quot;https://github.com/jdmr/demo/blob/master/pom.xml&quot; target=&quot;_blank&quot;&gt;pom.xml aquí&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
El web.xml ya no es necesario en una aplicación web JEE 6, pero dado que estoy utilizando los perfiles de Spring (aunque esos creo que se pueden configurar sin el XML) y unas páginas de errores, estas necesitan estar en el &lt;a href=&quot;https://github.com/jdmr/demo/blob/master/src/main/webapp/WEB-INF/web.xml&quot; target=&quot;_blank&quot;&gt;web.xml&lt;/a&gt;, como lo muestro &lt;a href=&quot;https://github.com/jdmr/demo/blob/master/src/main/webapp/WEB-INF/web.xml&quot; target=&quot;_blank&quot;&gt;aquí&lt;/a&gt;, claro que puedes poner más cosas pero son las que necesitamos para nuestro proyecto.&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/jdmr/4980742.js&quot;&gt;&lt;/script&gt;
Ahora los archivos que configuran Spring, aunque todos pueden estar en uno sólo, decidí separarlos para cuestiones de legibilidad (todos los puedes encontrar &lt;a href=&quot;https://github.com/jdmr/demo/tree/master/src/main/java/org/davidmendoza/demo/config&quot; target=&quot;_blank&quot;&gt;aquí&lt;/a&gt;) (Para que no tengas errores de compilación al hacer el DataConfig.java, necesitas hacer primero el PropertyPlaceHolder.java): 
&lt;script src=&quot;https://gist.github.com/jdmr/4980854.js&quot;&gt;&lt;/script&gt;
Con el ComponentConfig habilitamos la búsqueda automática de componentes de Spring en la ruta que especificamos en @ComponentScan, en el DataConfig configuramos el acceso a base de datos y en este ejemplo utilizo dos ambientes: production y tests. Cuando corre toma la configuración que va a utilizar del web.xml. En el PropertyPlaceHolder configuramos propiedades que no queremos que estén en nuestro control de versiones(IP&#39;s, contraseñas, etc.) y por último el WebConfig, donde habilitamos Spring MVC, configuramos algunas cosas como si vamos a utilizar jsp&#39;s y dónde las tiene que encontrar, la internacionalización y también tengo un filtro que intercepta las peticiones para ponerles el idioma que el usuario quiere utilizar en la página y la cambia con ?locale=xx, en donde xx se sustituye por el idioma (es, en, pt, etc). Ahora si arrancamos nuestra aplicación ahora Spring todavía no estará cargado en nuestra aplicación. Esto se debe a que no lo configuramos en el web.xml y porque nos falta o ya sea cargarlo ahí o cargarlo con Java, vamos a hacer está última:
&lt;script src=&quot;https://gist.github.com/jdmr/4980963.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
En esta clase configuramos Spring, y otros filtros como el de codificación de caracteres para que intercepte las peticiones y las haga UTF-8. Y ahora sí, cuando levantemos nuestra aplicación esta va a estar trabajando con Spring MVC 3.2 funcionando. Para que la aplicación tenga una base sólida en HTML5 pueden utilizar &lt;a href=&quot;http://html5boilerplate.com/&quot; target=&quot;_blank&quot;&gt;http://html5boilerplate.com/&lt;/a&gt; y &lt;a href=&quot;http://getbootstrap.com/&quot; target=&quot;_blank&quot;&gt;http://getbootstrap.com/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/3770862340011241206/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/3770862340011241206' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/3770862340011241206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/3770862340011241206'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2013/02/aplicacion-basica-spring-mvc-32.html' title='Aplicación básica Spring MVC 3.2'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-6371280133508977872</id><published>2012-11-09T11:07:00.000-06:00</published><updated>2013-05-31T10:03:31.607-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="spring"/><title type='text'>Un bootstrap como en Grails para una aplicación Spring</title><content type='html'>Siempre que me encuentro haciendo una nueva aplicación en Spring en algún momento en el tiempo empiezo a requerir de un estado inicial para que esta funcione. En Grails es bien fácil manejar esto, solo lo metes en el Bootstrap.groovy y listo. ¿Pero en una aplicación con Spring cómo lo hago? Aquí está una posible solución.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4046886.js&quot;&gt; &lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/6371280133508977872/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/6371280133508977872' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/6371280133508977872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/6371280133508977872'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2012/11/un-bootstrap-como-en-grails-para-una.html' title='Un bootstrap como en Grails para una aplicación Spring'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-8449689350918837015</id><published>2012-11-09T11:01:00.001-06:00</published><updated>2013-05-31T10:04:19.863-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="spring"/><title type='text'>Conexiones colgadas en cada redeploy</title><content type='html'>¿Tienes conexiones que se quedan colgadas después de cada redeploy en tu aplicación Spring? Resulta que seguramente estas utilizando el DBCP de Apache para conectarte a tus bases de datos y este no cierra las conexiones cuando la aplicación le dice que es hora de cerrar todo. Aquí les voy a poner el código y configuración necesaria para que no tengan que estar reiniciando tanto su servidor de aplicaciones (Tomcat, JBoss, Glassfish, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4046857.js&quot;&gt; &lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/8449689350918837015/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/8449689350918837015' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/8449689350918837015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/8449689350918837015'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2012/11/conexiones-colgadas-en-cada-redeploy.html' title='Conexiones colgadas en cada redeploy'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-1222065240601121186</id><published>2012-08-30T09:04:00.000-05:00</published><updated>2012-08-30T09:04:47.664-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jasperreports"/><title type='text'>Mostrar imagen en reporte html</title><content type='html'>Si estas usando JasperReports para armar tu reporte HTML, habrás notado que no es tan sencillo mostrar las imágenes. Existe una webapp demo con un ejemplo de cómo lo puedes lograr si bajas el proyecto completo de JasperReports (que es la recomendada). Pero si solo quieres que funcione en HTML, además de configurar el ImageServlet (que eso no lo puedes evitar, porque lo necesita para el posicionamiento de los elementos dentro de la página), solo le habilitas la opción &lt;b&gt;Is Lazy&lt;/b&gt; a tu imagen. Y le pasas la ruta a la imagen. De esta forma JasperReports no intentará cambiarla.</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/1222065240601121186/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/1222065240601121186' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/1222065240601121186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/1222065240601121186'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2012/08/mostrar-imagen-en-reporte-html.html' title='Mostrar imagen en reporte html'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-1790152598270180496</id><published>2012-01-06T06:54:00.002-06:00</published><updated>2012-01-23T16:53:54.485-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><category scheme="http://www.blogger.com/atom/ns#" term="groovy"/><category scheme="http://www.blogger.com/atom/ns#" term="i18n"/><title type='text'>Grails 2.0 y los campos con decimales</title><content type='html'>Si tienes tu navegador configurado para que muestre el contenido en español, es posible que puede estar mostrando las cantidades separando miles por punto (.) y decimales con coma (,). Si este es el caso, no va a mostrar el contenido de tu campo. Para que lo muestre hay que hacer un cambio en el campo generado por grails:
&lt;script src=&quot;https://gist.github.com/1570837.js?file=gistfile1.gsp&quot;&gt;
&lt;/script&gt;
por
&lt;script src=&quot;https://gist.github.com/1570844.js?file=gistfile1.gsp&quot;&gt;
&lt;/script&gt;
y por ultimo en tu controller después de que cargues el objeto tienes que pasarle la propiedad
&lt;script src=&quot;https://gist.github.com/1666039.js?file=ProductoController.groovy&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/1790152598270180496/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/1790152598270180496' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/1790152598270180496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/1790152598270180496'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2012/01/grails-20-y-los-campos-con-decimales.html' title='Grails 2.0 y los campos con decimales'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-8155083114286145919</id><published>2011-09-28T14:39:00.000-05:00</published><updated>2011-09-28T14:39:03.504-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fábrica SW"/><title type='text'>Fábricas de Software</title><content type='html'>Pues estamos a un mes de haber iniciado, y aunque ha funcionado lo del scrum dentro de las fábricas de software, la motivación sigue siendo un problema debo de encontrar la forma en que pueda estar ahí motivando a los muchachos pero a la vez sacando el trabajo que me toca... Si para mantenerse uno motivado se complica ahora para todo un equipo de muchachos que no saben qué es lo que quieren de su vida... Pero en fin, sólo me estoy quejando... Son muchachos muy buenos, y me ha tocado un grupo que se mueve muy bien... Pero definitivamente necesito ayuda... ya veremos cómo le hacemos.</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/8155083114286145919/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/8155083114286145919' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/8155083114286145919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/8155083114286145919'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2011/09/fabricas-de-software.html' title='Fábricas de Software'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-8926215643104765966</id><published>2011-09-28T07:57:00.000-05:00</published><updated>2011-09-28T07:57:39.363-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ajax"/><category scheme="http://www.blogger.com/atom/ns#" term="escuela sabática"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="liferay"/><title type='text'>Mejoras a Escuela Sabática Universitaria</title><content type='html'>Hemos estado trabajando duro en mejorar el sitio &lt;a href=&quot;http://escuelasabaticauniversitaria.org/&quot;&gt;Escuela Sabática Universitaria&lt;/a&gt;... La última novedad es que, si cuentas con un navegador reciente, buscará las ligas que sean de versículos en la página de estudia y en lugar de tener que hacer una recarga completa de la página utilizamos AJAX con JQuery para que estas sólo actualicen la sección de lectura del versículo, así también como la navegación dentro de la sección de la Biblia.&amp;nbsp;Esto es muy interesante debido a que si se conecta con un navegador que no soporte esto (javascript), debe de seguir funcionando de manera normal.&lt;br /&gt;
&lt;br /&gt;
Para resolverlo utilizé lo recomendado en &lt;a href=&quot;http://yensdesign.com/2009/06/safe-ajax-links-using-jquery/&quot;&gt;este sitio&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/8926215643104765966/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/8926215643104765966' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/8926215643104765966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/8926215643104765966'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2011/09/escuela-sabatica-universitaria.html' title='Mejoras a Escuela Sabática Universitaria'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total><georss:featurename>Montemorelos, NL, México</georss:featurename><georss:point>25.1834959 -99.8296789</georss:point><georss:box>25.1547569 -99.869160900000011 25.212234900000002 -99.7901969</georss:box></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-4987912567669507079</id><published>2011-08-31T17:16:00.000-05:00</published><updated>2011-08-31T17:16:47.638-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="academic java center"/><category scheme="http://www.blogger.com/atom/ns#" term="consultoría"/><category scheme="http://www.blogger.com/atom/ns#" term="cursos"/><category scheme="http://www.blogger.com/atom/ns#" term="mejores prácticas"/><category scheme="http://www.blogger.com/atom/ns#" term="métodos ágiles"/><category scheme="http://www.blogger.com/atom/ns#" term="patrones"/><category scheme="http://www.blogger.com/atom/ns#" term="scrum"/><title type='text'>Seguimiento a Fábrica de Software 2010</title><content type='html'>Pues ha funcionado +/-. El detalle está en el tiempo que podemos dedicarle a los muchachos para orientarlos. Hasta ahora sólo yo estoy apoyando a los muchachos, no he recibido apoyo de los maestros para revisar qué es lo que están haciendo y guiarles... en fin, son cosas con las que tenemos que trabajar. Gracias a Dios, hemos tenido un número estable de estudiantes asistiendo a trabajar... ahora estamos aplicando SCRUM más formalmente, por lo que ellos están viendo si avanzan o están estancados por su cuenta y no necesitan que yo se los muestre... Precisamente hoy tuvimos reunión de iteración y pues ellos mismos dieron con sus respectivos problemas para esta iteración y pues, esperemos, posibles soluciones. Veremos cómo nos va en la siguiente iteración.</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/4987912567669507079/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/4987912567669507079' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/4987912567669507079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/4987912567669507079'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2011/08/seguimiento-fabrica-de-software-2010.html' title='Seguimiento a Fábrica de Software 2010'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-7699195725531019446</id><published>2011-04-07T09:49:00.000-05:00</published><updated>2011-04-07T09:49:18.669-05:00</updated><title type='text'>Lincoln Baxter III&#39;s Blog: Seam Forge 1.0.0.Alpha3 &quot;Angry Kittens&quot; Released - JBoss Community</title><content type='html'>&lt;a href=&quot;http://community.jboss.org/people/lincolnthree/blog/2011/04/04/seam-forge-100alpha3-angry-kittens-released&quot;&gt;Lincoln Baxter III&amp;#39;s Blog: Seam Forge 1.0.0.Alpha3 &amp;quot;Angry Kittens&amp;quot; Released - JBoss Community&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/7699195725531019446/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/7699195725531019446' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/7699195725531019446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/7699195725531019446'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2011/04/lincoln-baxter-iiis-blog-seam-forge.html' title='Lincoln Baxter III&#39;s Blog: Seam Forge 1.0.0.Alpha3 &quot;Angry Kittens&quot; Released - JBoss Community'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-3889407949013174789</id><published>2011-01-29T12:07:00.000-06:00</published><updated>2011-01-29T12:07:38.110-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="creencias"/><category scheme="http://www.blogger.com/atom/ns#" term="escuela sabática"/><category scheme="http://www.blogger.com/atom/ns#" term="religión"/><title type='text'>Culpa</title><content type='html'>La lección de esta semana nos explico el sentimiento de culpa... Un sentimiento que se sintió por primera vez cuando Adan y Eva pecaron... Es un sentimiento que Dios programo en el ser humano para que este pueda darse cuenta que ha obrado mal y pueda buscar pasar al siguiente sentimiento que es el arrepentimiento e intentar buscar el perdón.</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/3889407949013174789/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/3889407949013174789' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/3889407949013174789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/3889407949013174789'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2011/01/culpa.html' title='Culpa'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-4785394521679199106</id><published>2010-12-29T11:59:00.002-06:00</published><updated>2012-01-06T08:43:23.237-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="liferay"/><title type='text'>Búsqueda de Artículos por Etiqueta en Liferay</title><content type='html'>Pues no me había encontrado con nada interesante para escribir, por lo que había dejado a un lado el blog ya por un tiempo, en fin... ahora me encontré queriendo hacer una búsqueda por tag de contenido en liferay debido a una aplicación que estoy realizando, y me topé con que no hay mucha información al respecto por lo que hago este post para que le sirva a alguien y para acordarme cómo hacerlo después... :) &lt;script src=&quot;https://gist.github.com/1570874.js?file=gistfile1.java&quot;&gt;&lt;/script&gt;
Donde curso es una variable de entorno que cuando le pides su código, te regresa un string... Si quisieras hacer la búsqueda por varias etiquetas solo le pasas &quot;TAG1,TAG2,TAG3&quot; al StringUtil y te va a hacer el arreglo que necesitas para hacer la búsqueda por los tags, la primera opción que está puesta en false significa que si buscas por varios tags lo hagas con un AND si es true o con un OR si es false, esto es, que si le pones true, lo que busques debe tener todos los tags asignados, con false, solo hace falta que tenga uno. Si necesitas solo articulos, busca el id de la clase com.liferay.portlet.journal.model.JournalArticle. En fin, se esto se puede hacer extenso, y realmente no necesito tanta info para acordarme de lo que hice...</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/4785394521679199106/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/4785394521679199106' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/4785394521679199106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/4785394521679199106'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2010/12/busqueda-de-articulos-por-etiqueta-en.html' title='Búsqueda de Artículos por Etiqueta en Liferay'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-3974924436720908396</id><published>2010-09-09T17:56:00.000-05:00</published><updated>2012-01-06T08:59:21.727-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="alfresco"/><title type='text'>Alfresco 3.3 &amp; GMail (Google Apps)</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://www.alfresco.com/&quot;&gt;Alfresco&lt;/a&gt;&amp;nbsp;es una excelente herramienta para administrar documentos de una manera más amigable que &lt;a href=&quot;http://git-scm.com/&quot;&gt;GIT&lt;/a&gt;. Esta es la herramienta perfecta para el almacenamiento de documentos en una empresa y el trabajo en equipo, ya en esta versión está integrada con Google Docs para la edición de documentos, y viene más fuerte su implementación del protocolo SPP (este es el que permite que puedas editar documentos entre varias personas desde Word, Excel y PowerPoint). En fin, se los recomiendo...&lt;/p&gt;&lt;p&gt;Hay una documentación en el sitio de alfresco acerca de cómo configurar la herramienta para mandar correos por GMail, pero no me funcionó así que tuve que ir a otro sitio para obtener lo que faltaba, en fin, voy a ponerlo aquí para recordarme yo cómo lo hice y para ayudarle a alguien que lo esté buscando. Es fácil sólo hay que editar un archivo y crear otro, primero por el que hay que editar, se llama alfresco-global.properties y se encuentra en &amp;nbsp;[INSTALACIÓN DE ALFRESCO]/tomcat/shared/classes/alfresco-global.properties al cual hay que configurarle las siguientes propiedades&lt;/p&gt;&lt;script src=&quot;https://gist.github.com/1570898.js?file=alfresco-global.properties&quot;&gt;&lt;/script&gt;
&lt;p&gt;Y el archivo hay que crearlo en [INSTALACIÓN DE ALFRESCO]/tomcat/shared/classes/extension/custom-email-context.xml&lt;/p&gt;&lt;script src=&quot;https://gist.github.com/1570932.js?file=custom-email-context.xml&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/3974924436720908396/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/3974924436720908396' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/3974924436720908396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/3974924436720908396'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2010/09/alfresco-33-gmail-google-apps.html' title='Alfresco 3.3 &amp; GMail (Google Apps)'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-5154877045421398303</id><published>2010-08-20T19:59:00.002-05:00</published><updated>2010-08-20T20:00:53.334-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fábrica SW"/><title type='text'>Nuevo Proyecto de Fábrica de Software (Intento 2010)</title><content type='html'>Henos aquí después de una semana algo llena, &quot;lamentablemente&quot; no pude trabajar todo el tiempo en el desarrollo de software (mi pasión), me tomé el tiempo para dedicarle a los muchachos que están trabajando para el departamento de sistemas. Estos muchachos son estudiantes y tienen una beca-trabajo u horas de servicio. Este año estamos intentando algo nuevo, en vez de que ellos tengan que asistir a las oficinas de sistemas, estamos proveyéndoles de un lugar de trabajo en la facultad, dentro de su laboratorio de computación, de tal forma que más muchachos se puedan unir sin sentirse fuera de lugar o menos, dado que son sus instalaciones... realmente tanto el personal administrativo de la facultad, sus maestros y nosotros (personal de sistemas) esperamos que funcione y que dé varios resultados (mejorar el nivel de los alumnos egresados de nuestra facultad, una mayor participación maestro-estudiante, involucrar a los estudiantes con un ambiente laboral y demás), la verdad es que todos estamos un poco escépticos... trato de no serlo tanto, pero la verdad es que no lo puedo evitar dado que ya hemos hecho varios intentos para que esto camine de una mejor forma, pero bueno, mejor es probar que no hacer nada, ¿verdad? En fin, esperamos que Dios bendiga la labor de esta semana, y ahora que estamos por entrar en nuestro día de descanso, vamos a disfrutar de las bendiciones que Él nos da sin merecer y esperamos seguir compartiéndolas a los muchachos y demás personas que nos rodean o nos busquen.&lt;br /&gt;
&lt;br /&gt;
Feliz Sábado</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/5154877045421398303/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/5154877045421398303' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/5154877045421398303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/5154877045421398303'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2010/08/sabado.html' title='Nuevo Proyecto de Fábrica de Software (Intento 2010)'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-511088650709186911</id><published>2010-08-14T18:36:00.000-05:00</published><updated>2010-08-14T18:37:36.212-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="religión"/><title type='text'>Pablo y la ley</title><content type='html'>Pablo no disminuye en nada la necesidad o la importancia de la ley moral; por el contrario, su evangelio en realidad sirve para ensalzar la ley. Una de sus principales preocupaciones es que los hombres comprendan la relación correcta que existe entre la ley y el Evangelio, y su gran mensaje es que los pecadores no deben depender de ley, ni siquiera de la ley de Dios , para que haga por ellos lo que sólo puede alcanzarse mediante la gracia de Dios que justifica y santifica por medio de Jesucristo. La comprensión de esta verdad fundamental para la salvación no disminuye el respeto por la ley de Dios; por el contrario, produce un efecto precisamente opuesto en los que tienen fe.</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/511088650709186911/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/511088650709186911' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/511088650709186911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/511088650709186911'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2010/08/pablo-y-la-ley.html' title='Pablo y la ley'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-1556351094925614373</id><published>2010-07-28T16:08:00.007-05:00</published><updated>2012-01-06T09:14:49.108-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="postgres"/><title type='text'>Grails, Imágenes y Postgresql</title><content type='html'>Pues he estado probando postgresql desde que salió la versión 9.0 beta1, y el no saber qué pasará con MySQL, en fin, eso es otra historia. El chiste es que hoy, bueno desde ayer, me topé con algo que me hacia considerar regresar a MySQL, aunque sé que en MySQL no es cualquier cosa hacerlo. Estoy guardando en la base de datos unas imágenes, y aquí van a empezar a polemizar en cuanto a si es mejor o no guardar datos binarios en la BD, pero una rápida respuesta a sus interrogantes es que pienso poner mi aplicación en clúster, por lo que me es más fácil si esos recursos se encuentran en la BD, no me importa tanto el rendimiento. En fin, intenté hacer eso, porque no funcionó, llegué al punto de intentarlo en una aplicación vacía con HSQLDB, y que funciona... charros, entonces es Postgresql, seguí debugueando y encontré el problema, resulta que en Postgresql 9.0 (ya estoy en el beta2, por bajar el beta3), cambiaron una opción que en versiones anteriores estaba de otra forma, la regresé a como se maneja en la version anterior y listo, funcionó. La opción se llama &lt;span style=&quot;font-weight: bold;&quot;&gt;bytea_output&lt;/span&gt; y su valor por defecto, ahora, es &#39;&lt;span style=&quot;font-style: italic;&quot;&gt;hex&lt;/span&gt;&#39;, y la necesitamos en &lt;span style=&quot;font-weight: bold;&quot;&gt;&#39;escape&#39;&lt;/span&gt;. Este valor se puede cambiar de dos formas una es editando el postgresql.conf de la base de datos creada, buscando este valor dentro del archivo y cambiándolo y la otra es hacerlo directamente en la base de datos con la siguiente instrucción&lt;br /&gt;
&lt;code&gt;ALTER DATABASE gisdb SET bytea_output=&#39;escape&#39;;&lt;/code&gt;&lt;br /&gt;
Esto lo encontre en &lt;a href=&quot;http://www.postgresonline.com/journal/archives/164-What-is-new-in-PostgreSQL-9.0.html&quot;&gt;postgresonline&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Bueno y cómo se hace? Pues utilizando la documentación de &lt;a href=&quot;http://www.grails.org/Controllers+-+File+Uploads&quot;&gt;grails&lt;/a&gt; y del buen &lt;a href=&quot;http://fbflex.wordpress.com/2008/04/22/image-uploading-in-grails-with-5-lines-of-code/&quot;&gt;Tomás Lin&lt;/a&gt;&lt;br /&gt;
Dominio que va a aceptar el binario&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/1570970.js?file=Image.groovy&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
GSP para captura de imagen (archivo binario)&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/1570981.js?file=upload.gsp&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Controlador que guarda el archivo&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/1571001.js?file=UploadController.groovy&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Y para ver la imagen, en el controlador ponemos una accion&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/1571005.js?file=ShowImageController.groovy&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/1556351094925614373/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/1556351094925614373' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/1556351094925614373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/1556351094925614373'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2010/07/grails-imagenes-y-postgresql.html' title='Grails, Imágenes y Postgresql'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-543644348751348780</id><published>2010-07-26T15:20:00.008-05:00</published><updated>2010-08-29T12:40:55.214-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="liferay"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><title type='text'>Migración de Webspace a Liferay</title><content type='html'>Deseas cambiar de webspace de sun a liferay? Tengo una instalación de webspace basado en liferay 5.2.2 y decidimos actualizar a la versión 5.2.3, ya que liferay acaba de liberar su versión 6.0.0. &lt;a href=&quot;http://www.sgcampus.com.mx/&quot;&gt;SGCampus&lt;/a&gt; es uno de los sitios administrados en esa instancia, visítalo. Para la migración fue necesario montarlo en una máquina virtual, en la cual estuvimos probando hasta que le dimos... una vez encontrados los pasos apropiados para la migración es bastante sencillo (CUIDADO: Siga este procedimiento bajo su responsabilidad).&lt;br /&gt;
&lt;br /&gt;
Las especificaciones del servidor son: Web Space Server 10.1 Community Build 2, esto está instalado sobre un glassfish v2 y conectado a una base de datos MySQL 5.&lt;br /&gt;
&lt;div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Descomprimir liferay en donde lo vas a usar en el servidor (yo lo pongo en /opt/portal/liferay-portal-5.2.3)&lt;/li&gt;
&lt;li&gt;Respaldar directorio donde webspace sube los archivos del portlet de documentos, en mi caso se encuentra en [instalación de webspace]/var/webspace/data y ponerla en [instalación de liferay]/data, que si lo pusiste donde yo, quedaría en /opt/portal/liferay-portal-5.2.3/data&lt;/li&gt;
&lt;li&gt;Respaldar base de datos con mysqldump lportal &amp;gt; lportal.sql&lt;/li&gt;
&lt;li&gt;Necesitamos editar el lportal.sql, dado que, depende de su portal, este archivo puede ser muy grande, les recomiendo utilizar vim, si no la saben utilizar, utilicen algo que pueda cargar un archivo de texto de megas o hasta gigas y que pueda buscar y grabar sin problemas. Hay que buscar &#39;jobTitle&#39;, se los va a encontrar dentro de la tabla Contact_, copien esa linea y añádanla a la tabla User_ (para eso hay que buscar la tabla en el archivo). Si no hacen este paso, cuando levante la nueva versión de liferay e intente actualizar la base de datos, es probable que encuentren a algún usuario con un jobTitle de 100 caracteres y no les permita migrarlo, porque el campo que introducen en User_, sólo es de 75. Bueno, esto fue necesario para mi migración.&lt;/li&gt;
&lt;li&gt;Otra cosa que hay que editar es el directorio de autodeploy, no sé por qué, pero así es, lo puse en el portal-ext.properties como viene en la documentación y no funcionó, así que tuve que editarlo directamente en la base de datos. Busque la ruta de su instalación de webspace [instalación de webspace]/var/wespace/deploy y cámbiela por [instalación de liferay]/deploy y con eso grabamos el dump.&lt;/li&gt;
&lt;li&gt;Hay que restaurar la base de datos con estas modificaciones mysql lportal &amp;lt; lportal.sql&lt;/li&gt;
&lt;li&gt;Copiamos todos los temas y portlets que no se encuentren en nuestra nueva instalación como archivos war en la carpeta [instalación de liferay]/deploy. ¿Dónde están estos archivos? Se encuentran en [instalación de webspace]/glassfishv2/domains/domain1/applications/j2ee-modules. NOTA IMPORTANTE: Elimine la aplicación sevencogs_hook de su nueva instalación o le borrará sus usuarios y configuraciones iniciales, y no pase la aplicación webspace (entre otras, revise cuales son las que ya tiene instaladas) Si lo está instalando en tomcat la carpeta para revisar qué tiene instalado es [instalación de liferay]/tomcat-6.0.18/webapps&lt;/li&gt;
&lt;li&gt;Levantamos la nueva versión de liferay y revisamos los logs para ver si todo pasó sin problemas, de ser así ya debe de tener su portal corriendo en liferay 5.2.3.&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/543644348751348780/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/543644348751348780' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/543644348751348780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/543644348751348780'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2010/07/migracion-de-webspace-liferay.html' title='Migración de Webspace a Liferay'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-4980031013825010523</id><published>2010-07-15T10:56:00.006-05:00</published><updated>2010-07-26T15:54:59.990-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="googleapps"/><category scheme="http://www.blogger.com/atom/ns#" term="liferay"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><title type='text'>Configuración Inicial de Liferay 5.2.3</title><content type='html'>Una vez instalado Java 6, mysql 5 en tu servidor, imagino que ya bajaste liferay 5.2.3 con tomcat 6 desde liferay.com. Bueno lo desempacamos y lo corremos y que pasa, pues resulta que correo bien y todo pero con Hypersonic DB y esta base de datos no es suficiente para un ambiente productivo, por lo que tenemos que configurar liferay para que se conecte a MySQL. Para esto creamos un archivo de texto con el nombre de portal-ext.properties en el home del usuario que va a levantar el tomcat, en mi caso el usuario que estoy utilizando es jdmr y el servidor es ubuntu así es que mi archivo queda en /home/jdmr/portal-ext.properties y le ponemos lo siguiente adentro&lt;br /&gt;&lt;code&gt;    #&lt;br /&gt;   # MySQL&lt;br /&gt;   #&lt;br /&gt;   jdbc.default.driverClassName=com.mysql.jdbc.Driver&lt;br /&gt;   jdbc.default.url=jdbc:mysql:///lportal?createDatabaseIfNotExist=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=UTF-8&amp;amp;useFastDateParsing=false&lt;br /&gt;   jdbc.default.username=lportal&lt;br /&gt;   jdbc.default.password=lportal&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Por supuesto puedes cambiar el usuario, password, base de datos, y demás configuraciones para que quede como más te guste, para aquellos que no saben mucho de mysql pueden crear el usuario abriendo una consola de mysql e introduciendo los siguientes comandos&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mysql&gt; grant all privileges on lportal.* to lportal@localhost identified by &#39;lportal&#39;;&lt;br /&gt;mysql&gt; flush privileges;&lt;br /&gt;mysql&gt; exit;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Con esto tienes configurado liferay con mysql, solo necesitas levantar nuevamente tomcat y liferay encontrará la nueva configuración y te creará la base de datos y sus tablas, y te va a crear un sitio por defecto, ahora bien, si no quieres este sitio y quieres empezar sin él, lo que tienes que hacer es eliminar el directorio sevencoogs-hook del directorio webapps de la instalación de tomcat.&lt;br /&gt;&lt;br /&gt;Todavía vas a tener apuntando el wol portlet a hypersonic, si quieres apuntar ese portlet también a mysql hay que editar su archivo jdbc.properties, que en mi caso esta en /opt/portal/liferay-portal-5.2.3/tomcat-6.0.18/webapps/wol-portlet/WEB-INF/jdbc.properties, y lo dejé de la siguiente manera&lt;br /&gt;&lt;code&gt;jira.driverClassName=com.mysql.jdbc.Driver&lt;br /&gt;jira.url=jdbc:mysql:///lportal?useUnicode=true&amp;amp;characterEncoding=UTF-8&amp;amp;useFastDateParsing=false&lt;br /&gt;jira.username=lportal&lt;br /&gt;jira.password=lportal&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Si necesitas utilizar tu portal detrás de un proxy necesitas crear un archivo en &lt;instalacion_tomcat&gt;/webapps/ROOT/WEB-INF/classes/system-ext.properties con el siguiente contenido:&lt;br /&gt;&lt;code&gt;http.proxyHost=polaris.um.edu.mx&lt;br /&gt;http.proxyPort=8080&lt;br /&gt;http.nonProxyHosts=&quot;localhost&quot;&lt;/code&gt;&lt;br /&gt;Claro que puede ser una IP en vez de polaris, así se llama el mio...&lt;br /&gt;&lt;br /&gt;Si necesitas configurar el correo que en mi caso esta en Google Apps necesitas volver a editar el portal-ext.properties que se encuentra en tu home y ponerle lo siguiente:&lt;br /&gt;&lt;code&gt;mail.session.mail.store.protocol=imap&lt;br /&gt;mail.session.mail.transport.protocol=smtp&lt;br /&gt;#smtp properties&lt;br /&gt;mail.session.mail.smtp.host=smtp.gmail.com&lt;br /&gt;mail.session.mail.smtp.password=ElP455w0r6&lt;br /&gt;mail.session.mail.smtp.user=correo@tudominio.com&lt;br /&gt;mail.session.mail.smtp.port=465&lt;br /&gt;mail.session.mail.smtp.auth=true&lt;br /&gt;mail.session.mail.smtp.starttls.enable=true&lt;br /&gt;mail.session.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory&lt;br /&gt;mail.session.mail.pop3.host=localhost&lt;br /&gt;mail.session.mail.imap.host=localhost&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;En fin, con eso debes de tener un servidor corriendo con mysql y el usuario que manda los correos de registro, contraseña perdida y demás funcionando&lt;/instalacion_tomcat&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/4980031013825010523/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/4980031013825010523' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/4980031013825010523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/4980031013825010523'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2010/07/configuracion-inicial-de-liferay-523.html' title='Configuración Inicial de Liferay 5.2.3'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-2813404987315508835</id><published>2010-07-01T11:53:00.006-05:00</published><updated>2012-01-06T09:24:51.146-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><category scheme="http://www.blogger.com/atom/ns#" term="transacciones"/><category scheme="http://www.blogger.com/atom/ns#" term="transactions"/><title type='text'>Grails Transactions</title><content type='html'>Las transacciones en Grails la podemos hacer con&lt;br /&gt;&lt;script src=&quot;https://gist.github.com/1571028.js?file=transaction.groovy&quot;&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Aunque esta no es la forma recomendada, es la más fácil, porque funciona en todos lados (controladores, servicios, etc). Ahora bien, si usamos la capa de servicios de grails, esta viene con esa funcionalidad&lt;br /&gt;&lt;script src=&quot;https://gist.github.com/1571039.js?file=DominioService.groovy&quot;&gt;&lt;/script&gt;&lt;br /&gt;Como pueden ver, es interesante el manejo de transacciones en Grails...</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/2813404987315508835/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/2813404987315508835' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/2813404987315508835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/2813404987315508835'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2010/07/grails-transactions.html' title='Grails Transactions'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-8007897555751068855</id><published>2010-06-22T06:47:00.002-05:00</published><updated>2013-05-31T10:14:54.561-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><title type='text'>Pruebas de Integración con seguridad en Grails</title><content type='html'>Pues no existe mucha documentación en cuanto a las pruebas de integración con el nuevo plugin de Burt Beckwith, así que aquí les voy a poner lo que necesitan, use una clase base para las pruebas de integración aunque, si lo desean, pueden poner ese código en cada prueba que necesite la seguridad&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;BaseTest.groovy&lt;/span&gt;&lt;br /&gt;
&lt;code&gt;package general&lt;br /&gt;&lt;br /&gt;import groovy.util.GroovyTestCase&lt;br /&gt;import org.springframework.security.core.GrantedAuthority&lt;br /&gt;import org.springframework.security.core.authority.GrantedAuthorityImpl&lt;br /&gt;import org.codehaus.groovy.grails.plugins.springsecurity.GrailsUser&lt;br /&gt;import org.springframework.security.core.context.SecurityContextHolder as SCH&lt;br /&gt;import org.springframework.security.authentication.TestingAuthenticationToken&lt;br /&gt;&lt;br /&gt;abstract class BaseTest extends GroovyTestCase {&lt;br /&gt;&lt;br /&gt;    def authenticateAdmin() {&lt;br /&gt;        def user = general.Usuario.get(1)&lt;br /&gt;        def authorities = [new GrantedAuthorityImpl(&#39;ROLE_ADMIN&#39;),new GrantedAuthorityImpl(&#39;ROLE_USER&#39;)]&lt;br /&gt;        def credentials = &#39;test&#39;&lt;br /&gt;        def principal = new GrailsUser(user.username,credentials,true,true,true,true,authorities,user.id)&lt;br /&gt;        authenticate(principal,credentials,authorities)&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    def authenticate(principal, credentials, authorities) {&lt;br /&gt;        def authentication = new TestingAuthenticationToken(principal, credentials, authorities as GrantedAuthority[])&lt;br /&gt;        authentication.authenticated = true&lt;br /&gt;        SCH.context.authentication = authentication&lt;br /&gt;        return authentication&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;UsuarioServiceIntegrationTests.groovy&lt;/span&gt;&lt;br /&gt;
&lt;code&gt;package general&lt;br /&gt;&lt;br /&gt;import groovy.util.GroovyTestCase;&lt;br /&gt;import org.junit.Before &lt;br /&gt;import org.junit.Test &lt;br /&gt;&lt;br /&gt;class UsuarioServiceIntegrationTests extends BaseTest {&lt;br /&gt; def springSecurityService&lt;br /&gt; def usuarioId&lt;br /&gt; def usuarioService&lt;br /&gt; &lt;br /&gt; @Before&lt;br /&gt; public void setUp() {&lt;br /&gt;  def usuario = new Usuario(&lt;br /&gt;    username:&#39;test10&#39;&lt;br /&gt;    ,password:springSecurityService.encodePassword(&#39;test&#39;)&lt;br /&gt;    ,enabled:true&lt;br /&gt;                                ,nombre:&#39;Test1&#39;&lt;br /&gt;                                ,apellido:&#39;User&#39;&lt;br /&gt;                                ,correo:&#39;test1@test.com&#39;&lt;br /&gt;   ).save()&lt;br /&gt;                def rol = Rol.findByAuthority(&#39;ROLE_ADMIN&#39;)&lt;br /&gt;                UsuarioRol.create(usuario,rol,true)&lt;br /&gt;  usuarioId = usuario.id&lt;br /&gt;  assert usuarioId&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; @Test&lt;br /&gt; void testLista() {&lt;br /&gt;  def lista = usuarioService.lista(null)&lt;br /&gt;  assert lista&lt;br /&gt;  assertTrue lista.size() &amp;gt;= 1&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; @Test&lt;br /&gt; void testObtiene() {&lt;br /&gt;  def usuario = usuarioService.obtiene(&quot;$usuarioId&quot;)&lt;br /&gt;  assert usuario&lt;br /&gt;  assertEquals &#39;test10&#39;, usuario.username&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; @Test&lt;br /&gt; void testNuevo() {&lt;br /&gt;        authenticateAdmin()&lt;br /&gt;  def usuario = new Usuario(&lt;br /&gt;    username:&#39;test11&#39;&lt;br /&gt;    ,password:springSecurityService.encodePassword(&#39;test&#39;)&lt;br /&gt;    ,enabled:true&lt;br /&gt;                                ,nombre:&#39;Test1&#39;&lt;br /&gt;                                ,apellido:&#39;User&#39;&lt;br /&gt;                                ,correo:&#39;test1@test.com&#39;&lt;br /&gt;   )&lt;br /&gt;  usuario = usuarioService.crea(usuario, [])&lt;br /&gt;  assert usuario&lt;br /&gt;  assert usuario.id&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; @Test&lt;br /&gt; void testActualiza() {&lt;br /&gt;        authenticateAdmin()&lt;br /&gt;  def usuario = usuarioService.obtiene(&quot;$usuarioId&quot;)&lt;br /&gt;  assert usuario &lt;br /&gt;  assertEquals &#39;test10&#39;, usuario.username&lt;br /&gt;  &lt;br /&gt;  usuario.username = &#39;PRUEBA&#39;&lt;br /&gt;  usuario = usuarioService.actualiza(usuario, [])&lt;br /&gt;  assert usuario&lt;br /&gt;  assertEquals &#39;PRUEBA&#39;,usuario.username&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; @Test&lt;br /&gt; void testElimina() {&lt;br /&gt;        authenticateAdmin()&lt;br /&gt;  def nombre = usuarioService.elimina(&quot;$usuarioId&quot;)&lt;br /&gt;  assert nombre&lt;br /&gt;  assertEquals &#39;test10&#39;,nombre&lt;br /&gt; }&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;UsuarioService&lt;/span&gt;&lt;br /&gt;
&lt;code&gt;package general&lt;br /&gt;&lt;br /&gt;import java.util.List&lt;br /&gt;import auditoria.general.XUsuario&lt;br /&gt;&lt;br /&gt;class UsuarioService {&lt;br /&gt;&lt;br /&gt;    static transactional = true&lt;br /&gt;    def springSecurityService&lt;br /&gt;&lt;br /&gt;    List&lt;usuario&gt; lista(def params) {&lt;br /&gt;        log.debug &quot;Lista de usuarios&quot;&lt;br /&gt;        return Usuario.list(params)&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    def listaConCantidad(def params) {&lt;br /&gt;        def usuarios = this.lista(params)&lt;br /&gt;        def cantidad = Usuario.count()&lt;br /&gt;        return [lista:usuarios, cantidad:cantidad]&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    Usuario obtiene(String id) {&lt;br /&gt;        return Usuario.get(id)&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    Usuario crea(Usuario usuario, List roles) {&lt;br /&gt;        usuario.save()&lt;br /&gt;        for(rol in roles) {&lt;br /&gt;            general.UsuarioRol.create(usuario, rol, false)&lt;br /&gt;        }&lt;br /&gt;        audita(usuario,Constantes.CREAR)&lt;br /&gt;        return usuario&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    Usuario actualiza(Usuario usuario, List roles) {&lt;br /&gt;        log.debug &quot;Actualizando al usuario $usuario, $roles&quot;&lt;br /&gt;        usuario.save()&lt;br /&gt;        general.UsuarioRol.removeAll(usuario)&lt;br /&gt;        for(rol in roles) {&lt;br /&gt;            general.UsuarioRol.create(usuario, rol, false)&lt;br /&gt;        }&lt;br /&gt;        audita(usuario,Constantes.ACTUALIZAR)&lt;br /&gt;        return usuario&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    String elimina(String id) {&lt;br /&gt;        def usuario = Usuario.get(id)&lt;br /&gt;        String nombre = usuario.username&lt;br /&gt;        UsuarioRol.removeAll(usuario)&lt;br /&gt;        usuario.delete()&lt;br /&gt;        audita(usuario,Constantes.ELIMINAR)&lt;br /&gt;        return nombre&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    void audita(Usuario usuario, String actividad) {&lt;br /&gt;        log.debug &quot;[AUDITA] $actividad $usuario&quot;&lt;br /&gt;        def creador = springSecurityService.authentication.name&lt;br /&gt;        //def xusuario = new XUsuario(usuario.properties)&lt;br /&gt;        def xusuario = new XUsuario(usuario.properties)&lt;br /&gt;        StringBuilder roles = new StringBuilder()&lt;br /&gt;        for(rol in usuario.authorities) {&lt;br /&gt;            roles.append(rol.authority)&lt;br /&gt;            roles.append(&quot;|&quot;)&lt;br /&gt;        }&lt;br /&gt;        xusuario.roles = roles.toString()&lt;br /&gt;        xusuario.usuarioId = usuario.id&lt;br /&gt;        xusuario.creador = creador&lt;br /&gt;        xusuario.actividad = actividad&lt;br /&gt;        xusuario.save()&lt;br /&gt;    }&lt;br /&gt;}&lt;/usuario&gt;&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/8007897555751068855/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/8007897555751068855' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/8007897555751068855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/8007897555751068855'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2010/06/pruebas-de-integracion-con-seguridad-en.html' title='Pruebas de Integración con seguridad en Grails'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-915954662186309902</id><published>2010-06-16T11:46:00.000-05:00</published><updated>2010-06-16T11:47:08.957-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><title type='text'>Grails TIP</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;   style=&quot;font-family:&#39;Lucida Grande&#39;, serif;color:#141414;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium; line-height: 14px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;; &quot;&gt;#&lt;a href=&quot;http://search.twitter.com/search?q=%23grails&quot; title=&quot;http://search.twitter.com/search?q=%23grails&quot; style=&quot;word-wrap: break-word; color: rgb(0, 51, 204); &quot;&gt;grails&lt;/a&gt; #&lt;a href=&quot;http://search.twitter.com/search?q=%23tip&quot; title=&quot;http://search.twitter.com/search?q=%23tip&quot; style=&quot;word-wrap: break-word; color: rgb(0, 51, 204); &quot;&gt;tip&lt;/a&gt; Lots of projects? Avoid conflicts with grails.project.work.dir = &quot;target&quot; in ~/.grails/settings.groovy (via @pledbrook)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/915954662186309902/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/915954662186309902' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/915954662186309902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/915954662186309902'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2010/06/grails-tip.html' title='Grails TIP'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-6892727210812326484</id><published>2010-04-01T16:25:00.003-06:00</published><updated>2010-04-01T16:32:04.915-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="javaee"/><category scheme="http://www.blogger.com/atom/ns#" term="jsf"/><title type='text'>JSF y el javax.validation.UnexpectedTypeException</title><content type='html'>Pues nos encontramos aprendiendo una nueva tecnología, y como todo lo nuevo, uno se topa con varias dificultades en el camino... existe un error del cual no encontré mucha información y es por lo que la publico en el blog; el error es&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; &quot;&gt;javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Integer&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pero igual aplica para java.math.BigDecimal o algunos otros tipos, por el error y el stacktrace uno no da con cuál es el verdadero problema, hasta que me topé con &lt;a href=&quot;http://forum.springsource.org/showthread.php?t=81984&quot;&gt;este link&lt;/a&gt; de &quot;solid&quot;. El cual me dio idea de lo que era, resulta que yo tenía para los campos en los que tenía problemas una anotacion @Size(min=0), me imagino que tendré que investigar cómo utilizar bien esas validaciones, pero quitándolas se resolvió el problema, mientras aprendo a utilizarlas tendré que hacer las validaciones por afuera...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Espero le sirva a alguien... &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;font-family:verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif;font-size:100%;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/6892727210812326484/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/6892727210812326484' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/6892727210812326484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/6892727210812326484'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2010/04/jsf-y-el-javaxvalidationunexpectedtypee.html' title='JSF y el javax.validation.UnexpectedTypeException'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2050062303212170805.post-7332158697809060869</id><published>2010-01-03T17:56:00.004-06:00</published><updated>2010-01-03T18:02:27.986-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="postgres"/><title type='text'>Instalando Oracle en Desarrollo</title><content type='html'>Pues ahora que hice todo para que jalara en producción (ya en dos equipos diferentes) resulta que tengo que hacer que funcione en desarrollo, pues no soporta importar los dumps... Pero el DVD que bajé, sólo funciona para equipos x64 y desarrollo es de i686 (32 bits), por lo que tengo que bajar nuevamente el DVD para esa máquina, y mientras tanto no puedo subir los presupuestos del 2010 (podría, si apunto todo para que se vaya a producción directamente, pero no me parece bien)... En fin, estoy bajándolo, pero cada más me decido más y más a cambiar de base de datos... realmente no creo que valga la pena pagar lo que estamos pagando por tener oracle, cuando claramente lo estamos subutilizando. Espero este año, poder hacer el esfuerzo de migrar nuestras aplicaciones a otra base de datos (Postgres es la que tiene la ventaja, y ahora con lo de MySQL, pues más...).</content><link rel='replies' type='application/atom+xml' href='http://jdmendoza.blogspot.com/feeds/7332158697809060869/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2050062303212170805/7332158697809060869' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/7332158697809060869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2050062303212170805/posts/default/7332158697809060869'/><link rel='alternate' type='text/html' href='http://jdmendoza.blogspot.com/2010/01/instalando-oracle-en-desarrollo.html' title='Instalando Oracle en Desarrollo'/><author><name>David Mendoza</name><uri>http://www.blogger.com/profile/12749855845004535158</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOnQoGrnukI_AC2WAoKwiRiUx9hPVySaaFuL8_xPHeqZXQXLvH3eExO6XodrPPwQQ5gvdZhpwzCaxeQUEJokRjhxSG0AXnK4kSoEwgIJJIF4I581uGyQ4smLcUKdIXVA/s1600/e41a8c5633c80cb07799073f80208478%3Fs%3D80'/></author><thr:total>0</thr:total></entry></feed>