<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;DkUFQH8yeCp7ImA9WxJUFUQ.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894</id><updated>2009-07-14T10:56:51.190-07:00</updated><title>Anécdotas de las Curvas del Seno</title><subtitle type="html">Software Libre, Programación, Informática y #Bacil</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>353</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/AnecdotasDeLasCurvasDelSeno" type="application/atom+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">AnecdotasDeLasCurvasDelSeno</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;DkUFQHw9cSp7ImA9WxJUFUQ.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-9210917113471425648</id><published>2009-07-14T08:03:00.000-07:00</published><updated>2009-07-14T10:56:51.269-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-14T10:56:51.269-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="persistencia" /><category scheme="http://www.blogger.com/atom/ns#" term="jpa" /><category scheme="http://www.blogger.com/atom/ns#" term="facelets" /><category scheme="http://www.blogger.com/atom/ns#" term="SelectOneMenu" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><category scheme="http://www.blogger.com/atom/ns#" term="derby" /><title>ICEfaces: Incluir dropdown List (combos) en tablas</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s320/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 63px; height: 70px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s320/ICEfaces.jpg" alt="" border="0" /&gt;&lt;/a&gt;El día de ayer el compañero &lt;a href="http://www.blogger.com/profile/09732801508756249569"&gt;Hugo&lt;/a&gt; me manifestaba su inquietud de como incluir un combo (SelectOneMenu) dentro de una tabla con &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; a su vez que este combo tuviera seleccionado el elemento correspondiente a cada registro de tabla para posteriormente poder modificarlo.&lt;br /&gt;&lt;br /&gt;Pues bien me parecio buena idea desarrollar la solución al problema planteado anteriormente, pues para el ejemplo que expondre a continuación se utilizaran las siguiente herramientas:&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;IDE Netbeans&lt;/a&gt; 6.7&lt;/li&gt;&lt;li&gt;&lt;a href="http://krypto84sv.blogspot.com/search/label/facelets"&gt;Facelets&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://krypto84sv.blogspot.com/search/label/derby"&gt;Apache Derby&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://krypto84sv.blogspot.com/2008/11/introduciendo-al-uso-de-persistencia-de.html"&gt;Java Persistence API&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Antes de iniciar cabe aclara que siempre es fundamental utilizar &lt;a href="http://krypto84sv.blogspot.com/2009/07/icefaces-custom-converter.html"&gt;Convertidores personalizados&lt;/a&gt; a la hora de utilizar SelectOneMenu y &lt;a href="http://es.wikipedia.org/wiki/JavaBean"&gt;JavaBeans&lt;/a&gt; pues resuelven la vida muchisimo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso Uno&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://krypto84sv.blogspot.com/2008/11/introduciendo-al-uso-de-persistencia-de.html"&gt;Crear un proyecto de Persistencia de datos&lt;/a&gt; para la base de datos Sample en Derby que viene con Netbeans, pero lo principal es a clase "Dao" que es donde obtengo todos mis Entity Class:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SlyiLZB1y5I/AAAAAAAABnQ/dUc3QsD0cTQ/s1600-h/ClaseDao.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 315px; height: 320px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SlyiLZB1y5I/AAAAAAAABnQ/dUc3QsD0cTQ/s320/ClaseDao.bmp" alt="" id="BLOGGER_PHOTO_ID_5358335973244914578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso Dos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Crear nuestro &lt;a href="http://krypto84sv.blogspot.com/2009/06/uso-de-facelets-y-icefaces-en-netbeans.html"&gt;proyecto Web utilizando los frameworks ICEfaces y Facelets&lt;/a&gt;, y crear nuestro Convertirdor para el objeto Manufacturer y posteriormente registrarlo en faces-config.xml&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SlykjeQEYeI/AAAAAAAABnY/Giw34N-pz6w/s1600-h/Convertirdor.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 194px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SlykjeQEYeI/AAAAAAAABnY/Giw34N-pz6w/s320/Convertirdor.PNG" alt="" id="BLOGGER_PHOTO_ID_5358338585986884066" border="0" /&gt;&lt;/a&gt;Registro del convertidor en faces-config.xml&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/Slyk4HcMleI/AAAAAAAABng/jmbqa3KuREk/s1600-h/faces-config.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 89px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/Slyk4HcMleI/AAAAAAAABng/jmbqa3KuREk/s320/faces-config.PNG" alt="" id="BLOGGER_PHOTO_ID_5358338940640990690" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Paso Tres&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora creamos nuestro Managed Bean que le llamaremos TemplateClient al igual que la página template-client.xhtml, nada mas para efectos de saber que corresponde a ese xhtml y será de tipo request.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SlylzE5z9_I/AAAAAAAABno/pEXLYFEzAdM/s1600-h/TemplateClient.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 238px; height: 320px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SlylzE5z9_I/AAAAAAAABno/pEXLYFEzAdM/s320/TemplateClient.PNG" alt="" id="BLOGGER_PHOTO_ID_5358339953572182002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso Cuatro&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nada mas debemos diseñar nuestro página xhtml que es la template-client.xhtml&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SlynYSGWFeI/AAAAAAAABnw/CZI3FYBLx_c/s1600-h/template-client.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 310px; height: 320px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SlynYSGWFeI/AAAAAAAABnw/CZI3FYBLx_c/s320/template-client.PNG" alt="" id="BLOGGER_PHOTO_ID_5358341692281198050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ahora solo debemos ejecutar la aplicación que se verá de la siguiente manera&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SlyoEOqOEyI/AAAAAAAABn4/BZj6U0l5sRk/s1600-h/RunEjemplo.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 318px; height: 320px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SlyoEOqOEyI/AAAAAAAABn4/BZj6U0l5sRk/s320/RunEjemplo.PNG" alt="" id="BLOGGER_PHOTO_ID_5358342447272170274" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.mediafire.com/?sharekey=5455cd43eb345dd0d5a101cf914073b49730a35054fe6752"&gt;Adjunto el proyecto&lt;/a&gt; para efectos de estudio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-9210917113471425648?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/9210917113471425648/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=9210917113471425648" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/9210917113471425648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/9210917113471425648?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/07/icefaces-incluir-dropdown-list-combos.html" title="ICEfaces: Incluir dropdown List (combos) en tablas" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s72-c/ICEfaces.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;D0UNRn04fyp7ImA9WxJUEkk.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-8051133555081441757</id><published>2009-07-10T09:08:00.001-07:00</published><updated>2009-07-10T10:01:37.337-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-10T10:01:37.337-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="custom" /><category scheme="http://www.blogger.com/atom/ns#" term="converter" /><category scheme="http://www.blogger.com/atom/ns#" term="SelectOneMenu" /><category scheme="http://www.blogger.com/atom/ns#" term="framework" /><category scheme="http://www.blogger.com/atom/ns#" term="ajax" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="navegador web" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><title>ICEfaces: Custom Converter</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s1600-h/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 63px; height: 70px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s320/ICEfaces.jpg" alt="" id="BLOGGER_PHOTO_ID_5356864225121295602" border="0" /&gt;&lt;/a&gt;Ya hace un buen rato &lt;a href="http://services.nexodyne.com/email/icon/gcOdCPEkVXm6mqo156SAuQ%3D%3D/pjHtuGY%3D/R01haWw%3D/0/image.png"&gt;Hugol&lt;/a&gt; me preguntaba de como poder obtener un objeto seleccionado a través de un componente SelectOneMenu con &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt;, ya que siempre le tocaba obtener el valor del id y despues volver a reconstruir el objeto y esa tarea es super tediosa, entonces alli surge la necesidad de utilizar "Converter", ¿que es esto? el mecanismo es el de conversión      y está definido por el interfaz  javax.faces.convert.Converter      y sus múltiples implementaciones. Las      conversiones aseguran que el tipo de un dato introducido en un formulario      JSF sea el correcto.&lt;br /&gt;&lt;br /&gt;Como es de costumbre en este blog desarrollare un pequeño ejemplo de como crear un Custom Converter, para un conjunto de objetos de tipo Product &lt;a href="http://krypto84sv.blogspot.com/2008/11/introduciendo-al-uso-de-persistencia-de.html"&gt;generado a través de JPA con Netbeans   6.7 y Apache Derby&lt;/a&gt; en un SelectOneMenu (dropdown List).&lt;br /&gt;&lt;br /&gt;Lo primero es crear una clase que implemente la interfaz javax.faces.convert.Converter y desarrollar los métodos getAsString y getAsObject. El primero convierte el valor de la cadena del item seleccionado al objeto que queremos obtener, el según convierte el objeto ya convertido en cadena para colocarlo en el value de la etiqueta Option que genera &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Mi clase ConvertidorProducto quedó así:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/Sldqy8D7AEI/AAAAAAAABmo/AoqLzLB0CPg/s1600-h/ConvertidorProducto.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 218px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/Sldqy8D7AEI/AAAAAAAABmo/AoqLzLB0CPg/s320/ConvertidorProducto.PNG" alt="" id="BLOGGER_PHOTO_ID_5356867705129074754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Creamos nuestro managed bean de tipo request en mi caso lo llame TemplateClient al igual que el xhtml de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SldrbX7CiII/AAAAAAAABmw/1X16PT2V15g/s1600-h/TemplateClientClass.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 309px; height: 320px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SldrbX7CiII/AAAAAAAABmw/1X16PT2V15g/s320/TemplateClientClass.PNG" alt="" id="BLOGGER_PHOTO_ID_5356868399802779778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Luego se debe registrar nuestro convertidor en faces-config.xml de nuestro proyecto quedando así:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/Sldrg2UIoUI/AAAAAAAABm4/W6jaxpzemgY/s1600-h/faces-config.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 174px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/Sldrg2UIoUI/AAAAAAAABm4/W6jaxpzemgY/s320/faces-config.PNG" alt="" id="BLOGGER_PHOTO_ID_5356868493860446530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Luego desarrollamos el archivo, en mi caso, template-client.xhtml de la siguiente manera&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SldsT-V2YXI/AAAAAAAABnA/SlSy7rcphaI/s1600-h/TemplateClientXhtml.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 271px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SldsT-V2YXI/AAAAAAAABnA/SlSy7rcphaI/s320/TemplateClientXhtml.PNG" alt="" id="BLOGGER_PHOTO_ID_5356869372188451186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Y por ultimo deployamos el proyecto que se verá así:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SldsY3NR5PI/AAAAAAAABnI/42WkxeNCc1A/s1600-h/firefox.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 92px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SldsY3NR5PI/AAAAAAAABnI/42WkxeNCc1A/s320/firefox.PNG" alt="" id="BLOGGER_PHOTO_ID_5356869456172803314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mediafire.com/file/4yfmx4knnzb/EjemploConverter.rar"&gt;Adjunto el proyecto&lt;/a&gt; para que pueda ser estudiado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-8051133555081441757?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/8051133555081441757/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=8051133555081441757" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8051133555081441757?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8051133555081441757?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/07/icefaces-custom-converter.html" title="ICEfaces: Custom Converter" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s72-c/ICEfaces.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DUEARHwyfip7ImA9WxJXGUQ.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-6042715418121250740</id><published>2009-06-13T13:35:00.000-07:00</published><updated>2009-06-14T09:40:45.296-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-14T09:40:45.296-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="jpa" /><category scheme="http://www.blogger.com/atom/ns#" term="facelets" /><category scheme="http://www.blogger.com/atom/ns#" term="crosstab" /><category scheme="http://www.blogger.com/atom/ns#" term="columnas" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="tablas" /><category scheme="http://www.blogger.com/atom/ns#" term="navegador web" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><title>Crosstab con ICEfaces</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SjRVww1Uq3I/AAAAAAAABl4/kHal25WjDwQ/s1600-h/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 63px; height: 70px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SjRVww1Uq3I/AAAAAAAABl4/kHal25WjDwQ/s320/ICEfaces.jpg" alt="" id="BLOGGER_PHOTO_ID_5346992953826257778" border="0" /&gt;&lt;/a&gt;Una de las cosas que se hace bastante uso en las aplicaciones de gestión es la elaboración de tablas para presentar datos, y entre muchos casos que se me han presentado a veces es necesario generar tablas en la cual tanto las filas como las columnas van creciendo a esta situación se le denomina Crosstab en inglés.&lt;br /&gt;&lt;br /&gt;Últimamente en mi trabajo los recientes proyectos los he estado realizando mediante &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; que me ha reducido considerablemente el tiempo desarrollo gracias a su implementación de Ajax y por el lado de los usuarios que obtienen aplicaciones mucho mas parecidas como si fueran de escritorio como están acostumbrados.&lt;br /&gt;&lt;br /&gt;Antes que comenzar a desarrollar el proyecto necesitamos tener una base de datos, para este caso utilizare derby que ya esta embebido con &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt;, así no tengo que obligar a mi lectores instalar ya sea &lt;a href="http://krypto84sv.blogspot.com/search/label/mysql"&gt;MySQL&lt;/a&gt;, &lt;a href="http://krypto84sv.blogspot.com/search/label/postgresql"&gt;PostgreSQL&lt;/a&gt; u &lt;a href="http://krypto84sv.blogspot.com/search/label/oracle"&gt;Oracle&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Mi base de datos le llame crosstab y la estructura de las tablas es la siguiente:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;create table producto (&lt;br /&gt;id int not null primary key generated always as identity,&lt;br /&gt;descripcion varchar(20) not null&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;create table periodo (&lt;br /&gt;id int not null primary key generated always as identity,&lt;br /&gt;inicio date not null,&lt;br /&gt;fin date not null&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;create table precio (&lt;br /&gt;id int not null primary key generated always as identity,&lt;br /&gt;valor double not null,&lt;br /&gt;fk_producto int not null,&lt;br /&gt;fk_periodo int not null,&lt;br /&gt;constraint precio_producto foreign key(fk_producto) references producto(id),&lt;br /&gt;constraint precio_periodo foreign key(fk_periodo) references periodo(id)&lt;br /&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Nota: Es necesario agregarle registros, la aplicación que se desarrollara no tendrá ninguna validación en cuanto si en la tabla se encuentran datos nulos en la tabla Precio. Adjuntare el código fuente del proyecto con el respectivo script SQL de la estructura de la base de datos que puede ser descargado al final de este post.&lt;br /&gt;&lt;br /&gt;Pues bien ahora es el momento de echarle mano al desarrollo de la aplicación, en mi caso me gusta crear mis Entity Class como un proyecto de librería de Java para tener separada la lógica del negocio con la interfaz web mi proyecto se llamara JavaCrosstab.&lt;br /&gt;&lt;br /&gt;La forma para generar Entity Class con &lt;a href="http://krypto84sv.blogspot.com/search/label/jpa"&gt;JPA&lt;/a&gt; ya fue tratado a anteriormente, así que en el proyecto se agregara nada mas una Clase llamada &lt;span style="font-weight: bold;"&gt;Control&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SjRYXYYpz9I/AAAAAAAABmA/8jpLV3owtew/s1600-h/ClaseControl.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 300px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SjRYXYYpz9I/AAAAAAAABmA/8jpLV3owtew/s320/ClaseControl.png" alt="" id="BLOGGER_PHOTO_ID_5346995816301711314" border="0" /&gt;&lt;/a&gt;Nota: Hay que recordar que habrá que &lt;a href="http://krypto84sv.blogspot.com/2009/05/habilitar-tomcat-y-glassfish-para.html"&gt;agregar posteriormente las librerías &lt;/a&gt;&lt;a href="http://krypto84sv.blogspot.com/2009/05/habilitar-tomcat-y-glassfish-para.html"&gt;TopLink&lt;/a&gt;&lt;a href="http://krypto84sv.blogspot.com/2009/05/habilitar-tomcat-y-glassfish-para.html"&gt; y derbyClient al &lt;/a&gt;&lt;a href="http://krypto84sv.blogspot.com/2009/05/habilitar-tomcat-y-glassfish-para.html"&gt;Tomcat&lt;/a&gt;, por que el proyecto web lo hare con este servidor.&lt;br /&gt;&lt;br /&gt;Ahora el ejemplo que desarrollare estará hecho con &lt;a href="http://krypto84sv.blogspot.com/search/label/facelets"&gt;Facelets&lt;/a&gt;, no entrare en detalles como crear un proyecto &lt;a href="http://krypto84sv.blogspot.com/search/label/facelets"&gt;Facelets&lt;/a&gt; ya que esto &lt;a href="http://krypto84sv.blogspot.com/2009/06/uso-de-facelets-y-icefaces-en-netbeans.html"&gt;ya lo he hecho&lt;/a&gt;, pues nada mas me centrare en la forma de crear la tabla mediante &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; y &lt;a href="http://krypto84sv.blogspot.com/search/label/jpa"&gt;JPA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pues procedemos a crear un proyecto Web con &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; con los frameworks ICEfaces y Facelets llamado WebCrosstab, deberemos agregar el proyecto donde se encuentra nuestros Entity Class creado anteriormente llamado JavaCrosstab luego crear un Managed Bean llamado ConversorDolares, a este Bean deberá tener la siguiente estructura:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SjRcCxy-UwI/AAAAAAAABmQ/-yqSqaDDyTk/s1600-h/ManagedBean.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 262px; height: 320px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SjRcCxy-UwI/AAAAAAAABmQ/-yqSqaDDyTk/s320/ManagedBean.png" alt="" id="BLOGGER_PHOTO_ID_5346999860392252162" border="0" /&gt;&lt;/a&gt;Este Managed Bean hereda de la clase "AbstractPageBean" para poder acceder a los métodos "getValue" y obtener el valor de la columna y fila actual cuando se este generando la tabla en la pagina template-client.xhtml.&lt;br /&gt;&lt;br /&gt;Ahora editaremos la página template-client.xhtml con el siguiente contenido:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SjRbX58PBRI/AAAAAAAABmI/PG89TF97GEg/s1600-h/template-client.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 231px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SjRbX58PBRI/AAAAAAAABmI/PG89TF97GEg/s320/template-client.png" alt="" id="BLOGGER_PHOTO_ID_5346999123844203794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Hecho esto nada mas bastara iniciar la base de datos crosstab de derby en Netbeans, realizar deploy al proyecto WebCrosstab y acceder a la ruta http://localhost:8084/WebCrosstab.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SjReDOkXuPI/AAAAAAAABmY/aXTxtm7w444/s1600-h/EjemploCrosstab.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 194px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SjReDOkXuPI/AAAAAAAABmY/aXTxtm7w444/s320/EjemploCrosstab.png" alt="" id="BLOGGER_PHOTO_ID_5347002067138885874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Adjunto el código fuente del &lt;a href="http://www.mediafire.com/file/ohtyylooyet/WebCrosstab.tar.gz"&gt;proyecto WebCrosstab&lt;/a&gt; y la estructura de la base de datos.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-6042715418121250740?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/6042715418121250740/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=6042715418121250740" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/6042715418121250740?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/6042715418121250740?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/06/crosstab-con-icefaces.html" title="Crosstab con ICEfaces" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tPLVjrBRifE/SjRVww1Uq3I/AAAAAAAABl4/kHal25WjDwQ/s72-c/ICEfaces.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;D0EESHw5fCp7ImA9WxJXGU8.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-8079719992516636250</id><published>2009-06-13T08:47:00.000-07:00</published><updated>2009-06-13T13:40:09.224-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-13T13:40:09.224-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="facelets" /><category scheme="http://www.blogger.com/atom/ns#" term="jsp" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><title>Uso de Facelets y ICEfaces en Netbeans 6.5</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SjPKUwu5EvI/AAAAAAAABkg/bgy5U4h3XjQ/s1600-h/Facelets.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 100px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SjPKUwu5EvI/AAAAAAAABkg/bgy5U4h3XjQ/s320/Facelets.jpg" alt="" id="BLOGGER_PHOTO_ID_5346839640646685426" border="0" /&gt;&lt;/a&gt;Hace unos días una amiga me mencionaba que le hicieron de la comparación entre Struts y &lt;a href="http://krypto84sv.blogspot.com/search/label/jsf"&gt;JSF&lt;/a&gt; algo muy curioso que me contó fue que le dijeron que Struts es mucho mas rápido que &lt;a href="http://krypto84sv.blogspot.com/search/label/jsf"&gt;JSF&lt;/a&gt;, que tan cierto sea esto no me consta, ojala alguien pueda confirmarlo, pero de todas formas como informático siempre tengo la misión de buscar la eficiencia en mis aplicaciones aún cuando la tecnología que estoy usando de por si sea de las más veloces, así que por esa razón he decidido utilizar Facelets en mis proyectos del trabajo, en lugar de JSP convencionales.
&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;¿Pero en realidad que es Facelets?, para entenderlo enumerare sus características:
&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Es un framework para trabajar con plantillas.&lt;/li&gt;&lt;li&gt;Creación de componentes personalizados.&lt;/li&gt;&lt;li&gt;Utilización de etiquetas lógicas.&lt;/li&gt;&lt;/ul&gt;¿Pero que diferencia Facelets de los JSP?
&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;JSP&lt;/span&gt; son etiquetas para plantillas que al compilarse generan servlets.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Facelets &lt;/span&gt;es un lenguaje de plantillas para construir un árbol de componentes, no un servlet.&lt;/li&gt;&lt;li&gt;Por otra parte Facelet fue creado para cumplir con el ciclo de vida de JSF, al contrario de los JSP que el ciclo de vida de los servlet producidos es independiente al de JSF.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Como aquí no solo se trata de solamente conocer la tecnología al estilo del &lt;a href="http://www.srbyte.com/"&gt;Sr Byte&lt;/a&gt; (no se vayan a molestar compas, recuerden que soy fiel lector suyo), así que como es costumbre en este su espacio curvilíneo desarrollare un ejemplo practico de como utilizar Facelets, &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; y &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; 6.5 de forma muy simple.
&lt;br /&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SjQOZcR5TqI/AAAAAAAABlw/NkDnr1msXtQ/s1600-h/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 63px; height: 70px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SjQOZcR5TqI/AAAAAAAABlw/NkDnr1msXtQ/s320/ICEfaces.jpg" alt="" id="BLOGGER_PHOTO_ID_5346914487846391458" border="0" /&gt;&lt;/a&gt;Lo primero es tener &lt;a href="http://krypto84sv.blogspot.com/2009/05/empecemos-con-icefaces.html"&gt;instalado el plugin de ICEfaces&lt;/a&gt;, luego debemos instalar el plugin de Facelets, esto es muy sencillo, se hace mediante el menú "Tools" de Netbeans, la ruta es Tools -&gt; Plugins, en la pantalla de plugins nos posicionamos en la pestaña de "Available plugins" buscamos el que se llama &lt;span style="font-weight: bold;"&gt;Facelets Support&lt;/span&gt;, lo marcamos y procedemos a instalarlo.
&lt;br /&gt;
&lt;br /&gt;Ya teniendo instalado los respectivos plugins, procedemos a crear un proyecto Web, en este ejemplo le pondré de nombre EjemploFacelets y ocupare como servidor Tomcat 6.0.18 que ya viene integrado con &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt;.
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SjPYcJ5xAiI/AAAAAAAABkw/uEYznPdHmiI/s1600-h/ServidorEjemplo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 220px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SjPYcJ5xAiI/AAAAAAAABkw/uEYznPdHmiI/s320/ServidorEjemplo.png" alt="" id="BLOGGER_PHOTO_ID_5346855160825053730" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Al dar siguiente seleccionaremos los frameworks &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; y Facelets, notamos que al posicionarnos sobre el framework Facelets, en la parte de abajo aparece las propiedades de configuración del framework, para este debemos ubicarnos en la pestaña "Libraries" y en la propiedad "Register Libraries" seleccionamos la opción &lt;span style="font-weight: bold;"&gt;Facelets ICEfaces Run-Time 1.7.2&lt;/span&gt; y damos clic en finalizar.
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SjPYfEt581I/AAAAAAAABk4/9VMMMQf6sOU/s1600-h/ConfiguracionFacelets.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 218px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SjPYfEt581I/AAAAAAAABk4/9VMMMQf6sOU/s320/ConfiguracionFacelets.png" alt="" id="BLOGGER_PHOTO_ID_5346855210972738386" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Luego de creado veremos que se nos abrirá un jsp llamado welcomeJSF.jsp ese no lo utilizaremos así que yo siempre procedo a borrarlo, la estructura del proyecto quedará de la siguiente manera:
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SjPZ8mWIGEI/AAAAAAAABlA/fVLujZ4fU28/s1600-h/Estructura+del+proyecto.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 223px; height: 261px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SjPZ8mWIGEI/AAAAAAAABlA/fVLujZ4fU28/s320/Estructura+del+proyecto.png" alt="" id="BLOGGER_PHOTO_ID_5346856817727641666" border="0" /&gt;&lt;/a&gt;Vemos que solamente hay un jsp, ese lo editaremos como página de inicio en web.xml ya que este redireccionara a nuestra pagina template-client, ahora lo curioso y nuevo aquí es que aparecen dos archivos xhtml, que apartir de ahora allí trabajaremos nuestras etiquetas y estos por así decirlo se traducirán a jps.
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Procedemos a abrir el archivo forward.jsp y lo editamos para que en la etiqueta donde redirecciona la página destino nada mas cambiamos la extensión de la página a donde se redireccionara de jsf a jspx.
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;%@&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;page&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;contentType&lt;/span&gt;=&lt;span style="color: rgb(255, 153, 0);"&gt;"text/html"&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;pageEncoding&lt;/span&gt;=&lt;span style="color: rgb(255, 153, 0);"&gt;"UTF-8"&lt;/span&gt;%&gt;
&lt;br /&gt;&lt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;jsp:forward&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;page&lt;/span&gt;=&lt;span style="color: rgb(255, 153, 0);"&gt;"template-client.jspx"&lt;/span&gt;/&gt;
&lt;br /&gt;
&lt;br /&gt;Ahora abrimos el archivo web.xml en vista XML y en el tag de welcome-file-list debe quedar así:
&lt;br /&gt;
&lt;br /&gt;&lt;code&gt;
&lt;br /&gt;&amp;lt;welcome-file-list&amp;gt;
&lt;br /&gt;  &amp;lt;welcome-file&amp;gt;forward.jsp&amp;lt;/welcome-file&amp;gt;
&lt;br /&gt;&amp;lt;/welcome-file-list&amp;gt;
&lt;br /&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;Lo guardamos y podemos hacerle deploy al proyecto y accedemos mediante la ruta http://localhost:8084/EjemploFacelets aparecera el siguiente contenido:
&lt;br /&gt;
&lt;br /&gt;Hasta el momento no se ha utilizado nada de &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; haremos un calculo sencillo de colones salvadoreños a dolares estadounidenses, y para ello será necesario crear un ManagedBean de nombre ConversorDolares y tipo Request, para ello hacemos clic en el botón New File de la barra de herramientas de &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt;,  en la lista de Categorías de la  nueva ventana seleccionamos "JavaServer Faces" y en la parte derecha "JSF Managed Bean" y damos clic en el botón siguiente.
&lt;br /&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SjPfruSpxiI/AAAAAAAABlI/zHKdsPkk4Ec/s1600-h/NuevoManagedBean.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 219px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SjPfruSpxiI/AAAAAAAABlI/zHKdsPkk4Ec/s320/NuevoManagedBean.png" alt="" id="BLOGGER_PHOTO_ID_5346863124872545826" border="0" /&gt;&lt;/a&gt;Ahora le colocaremos el nombre que habíamos mencionado antes al Managed Bean y que sea de tipo request, en el campo package escribimos el paquete donde estará alojado nuestro managed bean en mi caso coloque org.dani.ejemplo.facelets
&lt;br /&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SjPgQHGd8PI/AAAAAAAABlQ/GICRQWntGS4/s1600-h/ConfManagedBean.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 220px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SjPgQHGd8PI/AAAAAAAABlQ/GICRQWntGS4/s320/ConfManagedBean.png" alt="" id="BLOGGER_PHOTO_ID_5346863750007615730" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;Hecho esto hacemos clic en finalizar, abrimos nuestro Managed Bean y creamos la siguiente propiedad y método.
&lt;br /&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SjPyXmf-vdI/AAAAAAAABlY/8wTNiBlonwk/s1600-h/ManagedBean.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 230px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SjPyXmf-vdI/AAAAAAAABlY/8wTNiBlonwk/s320/ManagedBean.png" alt="" id="BLOGGER_PHOTO_ID_5346883669904506322" border="0" /&gt;&lt;/a&gt;Ahora editamos el código del archivo template-client.xhtml y se verá así
&lt;br /&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SjPyxxLnisI/AAAAAAAABlg/5S7yfEwK3dk/s1600-h/template-client.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 141px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SjPyxxLnisI/AAAAAAAABlg/5S7yfEwK3dk/s320/template-client.png" alt="" id="BLOGGER_PHOTO_ID_5346884119448488642" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;Realizamos el respectivo deploy accedemos a la misma dirección anteriormente mencionada y veremos lo siguiente:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SjPzB7mzltI/AAAAAAAABlo/MfOLpSVpqWo/s1600-h/AplicacionDesarrollada.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 167px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SjPzB7mzltI/AAAAAAAABlo/MfOLpSVpqWo/s320/AplicacionDesarrollada.png" alt="" id="BLOGGER_PHOTO_ID_5346884397124785874" border="0" /&gt;&lt;/a&gt;Comparto el &lt;a href="http://www.mediafire.com/file/ttmknmtym2t/EjemploFacelets.tar.gz"&gt;proyecto EjemploFacelets&lt;/a&gt; para que puedan estudiarlo mas detenidamente.
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Nota:&lt;/span&gt; No copie el texto del código ya que no se mira muy bien en blogger y poder ver las tabulaciones es de mucha ayuda para entender los ejemplos.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-8079719992516636250?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/8079719992516636250/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=8079719992516636250" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8079719992516636250?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8079719992516636250?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/06/uso-de-facelets-y-icefaces-en-netbeans.html" title="Uso de Facelets y ICEfaces en Netbeans 6.5" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tPLVjrBRifE/SjPKUwu5EvI/AAAAAAAABkg/bgy5U4h3XjQ/s72-c/Facelets.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;D0cCRHc6cCp7ImA9WxJXF0U.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-7109886290445088417</id><published>2009-06-07T01:08:00.000-07:00</published><updated>2009-06-11T22:37:45.918-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-11T22:37:45.918-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="eliminatoria" /><category scheme="http://www.blogger.com/atom/ns#" term="mexico" /><category scheme="http://www.blogger.com/atom/ns#" term="el salvador" /><category scheme="http://www.blogger.com/atom/ns#" term="concacaf" /><title>Hasta la victoria siempre</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/Sit4-jSUszI/AAAAAAAABkY/tdHvs2_WsYM/s1600-h/tazumal.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 141px; height: 95px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/Sit4-jSUszI/AAAAAAAABkY/tdHvs2_WsYM/s320/tazumal.jpg" alt="" id="BLOGGER_PHOTO_ID_5344498398824543026" border="0" /&gt;&lt;/a&gt;Dejando de lado &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEFaces&lt;/a&gt;,programación, trabajo y más mierdas informáticas, hoy es momento de dedicarle al pueblo salvadoreño la fiesta de triunfo sobre el combinado mexicano, después de haber sido ofendidos por un comentarista deportivo en la cual una cadena de televisión que se considero seria por mucho tiempo cree que la mejor manera de subir niveles de audiencia es que crea sensacionalismo y enemistad esta dejando mucho que desear.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Nuestros muchachos de clubes nacionales (FAS, Nejapa, Vista Hermosa, Alianza, Firpo, etc...) enfrentaron honorablemente a "personajes de la farándula" en lo cual la humildad, el respeto y la disciplina tuvo justicia.&lt;br /&gt;&lt;br /&gt;Felicito a todos mis compatriotas en todos los rincones del mundo y saludo a la hermana república de México por esta gran fiesta deportiva y que no dejen que personas como el "pseudo comentarista" de una mala imagen de ustedes.&lt;br /&gt;&lt;br /&gt;Ahora que ya escribí me iré de regreso con los compas a seguir poniéndome una súper talega en celebración.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-7109886290445088417?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/7109886290445088417/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=7109886290445088417" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7109886290445088417?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7109886290445088417?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/06/hasta-la-victoria-siempre.html" title="Hasta la victoria siempre" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/Sit4-jSUszI/AAAAAAAABkY/tdHvs2_WsYM/s72-c/tazumal.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Ck4GRX85eyp7ImA9WxJXGUw.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-6149851228562731170</id><published>2009-06-06T08:10:00.001-07:00</published><updated>2009-06-13T09:35:24.123-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-13T09:35:24.123-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="agrupar" /><category scheme="http://www.blogger.com/atom/ns#" term="columnas" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="headerrow" /><category scheme="http://www.blogger.com/atom/ns#" term="tablas" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><category scheme="http://www.blogger.com/atom/ns#" term="columngroup" /><title>Agrupando columnas con Icefaces</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SiqH2oHtbqI/AAAAAAAABjY/tUScJ_zNqns/s1600-h/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 63px; height: 70px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SiqH2oHtbqI/AAAAAAAABjY/tUScJ_zNqns/s320/ICEfaces.jpg" alt="" id="BLOGGER_PHOTO_ID_5344233280380956322" border="0" /&gt;&lt;/a&gt;Se que bien de repente me estoy adelantando a algunos temas con respecto a &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; y mas aún en lo que concierne a tablas, pero es que para ver esos puntos es bueno remitirse al &lt;a href="http://www.icefaces.org/main/resources/tutorials.iface"&gt;tutorial de componentes oficial de Icefaces&lt;/a&gt; y me decidí a escribir esta entrada ya que no me dejaba muy claro la cuestión de agrupar columnas, en este post no se tocara nada de funcionalidad ajax, pues por que la forma de agrupar columnas es un poco diferente a la de woodstock y me parecio importante explicarlo.&lt;br /&gt;&lt;br /&gt;Primeramente hay que crear un proyecto Web a través de &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt;, &lt;a href="http://krypto84sv.blogspot.com/2009/05/empecemos-con-icefaces.html"&gt;claro que hay que tener instalado el plugin de Icefaces&lt;/a&gt;, a mi me gusta utilizar como contenedor para mis aplicaciones Tomcat lo mas que me sea posible y selecciono el framework "Visal Web ICEfaces". No explicare la creación del proyecto porque eso es muy intuitivo.&lt;br /&gt;&lt;br /&gt;Lo primero que haremos en crear nuestra lista de java beans que seran los que se desplegaran en la tabla. Para no hacer muy largo el tutorial explicando como pegarse a la base de datos y demás bla, bla simulare que mis java beans los utilizare como objetos de persistencia obtenidos a través de JPA, asi que crearemos la siguiente clase:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SiqbWyrd3BI/AAAAAAAABjg/oVHFOBSqSaQ/s1600-h/ClasePersona.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 171px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SiqbWyrd3BI/AAAAAAAABjg/oVHFOBSqSaQ/s320/ClasePersona.png" alt="" id="BLOGGER_PHOTO_ID_5344254723692026898" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;"Hacer clic en la imagen para ver mas grande"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Hasta aqui ya tenemos definida nuestra estructura y un metodo estatico para obtener un arreglo de "Personas", pero falta definir los getter y setter para los campos de la clase para que puedan ser accedidos por los componentes de &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt;, a través de &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; es muy sencillo hacer esto en lugar de hacerlo a pie:&lt;br /&gt;&lt;br /&gt;Damos clic derecho sobre cualquier parte de la clase "Persona" y damos clic y vamos a la opción "Insert code".&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SiqiakUvu1I/AAAAAAAABjw/qtedYts4Pfk/s1600-h/GenerateCode.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 168px; height: 165px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SiqiakUvu1I/AAAAAAAABjw/qtedYts4Pfk/s320/GenerateCode.png" alt="" id="BLOGGER_PHOTO_ID_5344262485139503954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En la ventana "Generate" seleccionamos "Getter and Setter..."&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/Siqiw__-5BI/AAAAAAAABkA/zl3AL0jKd1M/s1600-h/GenerateGetterSetters.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 164px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/Siqiw__-5BI/AAAAAAAABkA/zl3AL0jKd1M/s320/GenerateGetterSetters.png" alt="" id="BLOGGER_PHOTO_ID_5344262870525731858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Marcamos todas las propiedades y automáticamente generara nuestros getter y setter en nuestra clase.&lt;br /&gt;&lt;br /&gt;Ahora simplemente en nuestra página jsp necesitamos agregar una propiedad privada de tipo arreglo de personas e inicializarla por medio del método estatico de la clase Persona.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;private&lt;/span&gt; Persona[] &lt;span style="color: rgb(51, 204, 0);"&gt;personas&lt;/span&gt;=Persona.&lt;span style="font-style: italic;"&gt;getPersonas()&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Luego en la clase del jsp debemos crear el getter y setter del campo privado al igual como lo hicimos en la clase Persona, en mi caso mi jsp se llama Page1.jsp asi que en el java code de esa página generamos el getter y setter.&lt;br /&gt;&lt;br /&gt;Ahora la parte mas importante es el código jsp de nuestra página, si bien &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; provee de un diseñador visual no esta demás entender los tags de &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; ya que se pueden crear cosas muy interesantes por la flexibilidad de estos componentes.&lt;br /&gt;&lt;br /&gt;Adjunto el código jsp de la página con su respectiva explicación y sus bindings hacia las propiedades de Page1, este código puede ser colocado ya sea en un PanelGrido o en una simple tabla HTML dentro del código jsp.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/Siqbbfie8JI/AAAAAAAABjo/zMNER64kP30/s1600-h/jspx.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 259px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/Siqbbfie8JI/AAAAAAAABjo/zMNER64kP30/s320/jspx.png" alt="" id="BLOGGER_PHOTO_ID_5344254804453421202" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;"Hacer clic en la imagen para ver mas grande"&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Luego de esto corremos nuestra aplicación para ver su resultado, la ruta de la aplicación sería &lt;span style="font-weight: bold;"&gt;http://localhost:8084/Tablas/Page1.jspx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SiqlwJgHzYI/AAAAAAAABkI/8G2JATaTJ5w/s1600-h/EjecutandoEjemplo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 198px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SiqlwJgHzYI/AAAAAAAABkI/8G2JATaTJ5w/s320/EjecutandoEjemplo.png" alt="" id="BLOGGER_PHOTO_ID_5344266154431466882" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;"Hacer clic en la imagen para ver mas grande"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Comparto el proyecto elaborado en &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; para que puedan probarlo:&lt;br /&gt;&lt;a href="http://www.mediafire.com/file/nu0hjtyznmw/Tablas.tar.gz"&gt;Tablas.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Bueno compas despues de haber realizado este post me dispongo a abastacerme de bebidas embriagantes para ver el juego &lt;a href="http://www.google.com.sv/search?hl=es&amp;amp;q=el+salvador+vs+mexico&amp;amp;btnG=Buscar&amp;amp;lr="&gt;El Salvador vs México&lt;/a&gt;, que primero Dios logremos celebrar en la noche la victoria de nuestro combinado nacional y cerrarle el hocico al bocón de David Faitelson.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-6149851228562731170?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/6149851228562731170/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=6149851228562731170" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/6149851228562731170?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/6149851228562731170?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/06/agrupando-columnas-con-icefaces.html" title="Agrupando columnas con Icefaces" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/SiqH2oHtbqI/AAAAAAAABjY/tUScJ_zNqns/s72-c/ICEfaces.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Ck8GQnY8fSp7ImA9WxJQF0k.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-6353323692771353317</id><published>2009-05-30T11:33:00.000-07:00</published><updated>2009-05-30T20:33:43.875-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-30T20:33:43.875-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="woodstock" /><category scheme="http://www.blogger.com/atom/ns#" term="eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="framework" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="javahispano" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="podcast" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><title>Empecemos con IceFaces</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SiGDshJWojI/AAAAAAAABjI/jmTgnLpQag8/s1600-h/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 63px; height: 70px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SiGDshJWojI/AAAAAAAABjI/jmTgnLpQag8/s320/ICEfaces.jpg" alt="" id="BLOGGER_PHOTO_ID_5341695433873203762" border="0" /&gt;&lt;/a&gt;Desde hace un montón que quería escribir sobre IceFaces, este es un framework Java encargado de los componentes web de la interfaz de usuario para JSF (Java Server Faces), actualmente el framework por defecto que se utiliza con JSF en &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; es WoodStock, he leido muchos comentarios que Icefaces puede ser el sustituto oficial de Woodstock ya que la característica principal de Icefaces es que es full Ajax, no es necesario configurar algo adicional ni estar tratando con varios archivos xml de configuración solamente es necesario instalar el plugin para &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; o Eclipse, para este ultimo haré un post aparte para trabajar con Eclipse y Icefaces, pero me centrare mas en &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; ya que se integra mejor con JSF y Icefaces.&lt;br /&gt;&lt;br /&gt;Recomiendo escuchar el &lt;a href="http://www.javahispano.org/contenidos/es/javahispano_podcast__043__programacion_con_icefaces/"&gt;podcast sobre Icefaces de Javahispano&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SiGEKLtmKmI/AAAAAAAABjQ/wkUTnFRH2fs/s1600-h/nb-logo.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 80px; height: 80px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SiGEKLtmKmI/AAAAAAAABjQ/wkUTnFRH2fs/s320/nb-logo.png" alt="" id="BLOGGER_PHOTO_ID_5341695943515712098" border="0" /&gt;&lt;/a&gt;Para muchos amigos que no disponen de una conexión a internet &lt;a href="http://www.icefaces.org/main/downloads/detail.iface"&gt;se puede descargar el plugin para Netbeans&lt;/a&gt; ya sea la versión 6.5 o 6.5.1, hay que prestar mucha atención con la versión de Icefaces que descargaremos por que sino dará problemas al abrir el proyecto en otro &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; que no tenga la misma versión de Icefaces las que se encuentran son 1.8 y 1.7.2.&lt;br /&gt;&lt;br /&gt;Es recomendable registrarse en la página de Icefaces, para tener acceso a los demos y tutoriales sobre Icefaces que están muy buenos, también desarrollare algunos ejemplos sobre el uso de los componentes para que la mara pueda aclara algunas dudo sobre su utilización.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-6353323692771353317?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/6353323692771353317/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=6353323692771353317" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/6353323692771353317?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/6353323692771353317?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/05/empecemos-con-icefaces.html" title="Empecemos con IceFaces" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/SiGDshJWojI/AAAAAAAABjI/jmTgnLpQag8/s72-c/ICEfaces.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DkABRXg6fCp7ImA9WxJRF0s.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-3399148432048538890</id><published>2009-05-19T13:09:00.000-07:00</published><updated>2009-05-19T13:25:54.614-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-19T13:25:54.614-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="multiplataforma" /><category scheme="http://www.blogger.com/atom/ns#" term="3gp" /><category scheme="http://www.blogger.com/atom/ns#" term="gpl" /><category scheme="http://www.blogger.com/atom/ns#" term="convertidor" /><category scheme="http://www.blogger.com/atom/ns#" term="mp3" /><category scheme="http://www.blogger.com/atom/ns#" term="mobile media converter" /><category scheme="http://www.blogger.com/atom/ns#" term="ffmeg" /><category scheme="http://www.blogger.com/atom/ns#" term="audio" /><category scheme="http://www.blogger.com/atom/ns#" term="licencia libre" /><category scheme="http://www.blogger.com/atom/ns#" term="mpeg" /><category scheme="http://www.blogger.com/atom/ns#" term="avi" /><title>Convertir formatos en GNU/Linux con Mobile Media Converter</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/ShMUchdgH2I/AAAAAAAABi4/hV9LQCpBQGA/s1600-h/auto.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 102px; height: 102px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/ShMUchdgH2I/AAAAAAAABi4/hV9LQCpBQGA/s320/auto.png" alt="" id="BLOGGER_PHOTO_ID_5337632463615172450" border="0" /&gt;&lt;/a&gt;Navegando por allí encontre la aplicación Mobile Media Converter que esta basada en FFMPEG y podemos convertir formatos mp3, amr, 3gp o wmv (menos la versión 9) a wma, wav, amr, mp3, 3gp o mpeg. Que son los formatos mas utilizados por nuestros Teléfonos móviles.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/ShMVGRs_biI/AAAAAAAABjA/HT6_6w1olho/s1600-h/cc-GPL-a.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 88px; height: 62px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/ShMVGRs_biI/AAAAAAAABjA/HT6_6w1olho/s320/cc-GPL-a.png" alt="" id="BLOGGER_PHOTO_ID_5337633180939677218" border="0" /&gt;&lt;/a&gt;Recomiendo utilizar esta aplicación ya que tiene licencia libre y puede instalarse tanto en Windows como en sistemas GNU/Linux, para este ultimo mencionado se pueden utilizar dos tipos de instaladores un *.deb y un binario, en mi caso probe el binario por que no se necesita resolverle ninguna dependencia para que funcione.&lt;br /&gt;&lt;br /&gt;Simplemente baje el instalador de la &lt;a href="http://www.miksoft.net/mobileMediaConverter.htm"&gt;página de Mobile Media Converter&lt;/a&gt;, descomprimi el archivo y ya.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ tar -xvf mmc-lin.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ cd MobileMediaConverter&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ ./MobileMediaConverter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/ShMT5yu7R8I/AAAAAAAABiw/xi4deMzRgg4/s1600-h/mmc.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 156px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/ShMT5yu7R8I/AAAAAAAABiw/xi4deMzRgg4/s320/mmc.PNG" alt="" id="BLOGGER_PHOTO_ID_5337631866956236738" border="0" /&gt;&lt;/a&gt;"Captura de pantalla de Mobile Media Converter"&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-3399148432048538890?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/3399148432048538890/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=3399148432048538890" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/3399148432048538890?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/3399148432048538890?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/05/convertir-formatos-en-gnulinux-con.html" title="Convertir formatos en GNU/Linux con Mobile Media Converter" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/ShMUchdgH2I/AAAAAAAABi4/hV9LQCpBQGA/s72-c/auto.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkUCQHk_cSp7ImA9WxJRF0k.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-8993764327535293431</id><published>2009-05-19T06:31:00.001-07:00</published><updated>2009-05-19T06:37:41.749-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-19T06:37:41.749-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="programador" /><category scheme="http://www.blogger.com/atom/ns#" term="humor" /><title>Si los programadores construyesen aviones</title><content type="html">Comparto con ustedes este excelente video promocional, me gusto la frase que dice el tipo al principio del video:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;"Algunas personas les gusta realizar planos, a nosotros nos gusta hacer los aviones en el aire."&lt;/span&gt;&lt;/blockquote&gt;A ver cuando decretan el día nacional del programador.&lt;br /&gt;Saludos.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UZq4sZz56qM&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/UZq4sZz56qM&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-8993764327535293431?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/8993764327535293431/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=8993764327535293431" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8993764327535293431?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8993764327535293431?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/05/si-los-programadores-construyesen.html" title="Si los programadores construyesen aviones" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;Ak8CQ3YzfCp7ImA9WxJREks.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-4664577341487569123</id><published>2009-05-13T18:42:00.000-07:00</published><updated>2009-05-13T19:41:02.884-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-13T19:41:02.884-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="sql server" /><category scheme="http://www.blogger.com/atom/ns#" term="jdbc" /><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><category scheme="http://www.blogger.com/atom/ns#" term="derby" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="sybase" /><category scheme="http://www.blogger.com/atom/ns#" term="glassfish" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="apache" /><category scheme="http://www.blogger.com/atom/ns#" term="tomcat" /><category scheme="http://www.blogger.com/atom/ns#" term="servidor web" /><category scheme="http://www.blogger.com/atom/ns#" term="driver" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title>Habilitar Tomcat y Glassfish para conexion a bases de datos</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SguCweyAxAI/AAAAAAAABiY/DLfYdG5EYTY/s1600-h/glassfish_logo.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 107px; height: 49px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SguCweyAxAI/AAAAAAAABiY/DLfYdG5EYTY/s320/glassfish_logo.gif" alt="" id="BLOGGER_PHOTO_ID_5335501952958645250" border="0" /&gt;&lt;/a&gt;En muchas ocasiones me he visto en la necesidad de configurar mi &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt; o Glassfish para que mis aplicaciones se peguen a su respectiva base de datos, aun cuando en las librerías de los respectivos proyectos incluya el driver jdbc necesario.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SguC8yE-3aI/AAAAAAAABio/XvbQdg0nrAo/s1600-h/tomcat_logo.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 89px; height: 98px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SguC8yE-3aI/AAAAAAAABio/XvbQdg0nrAo/s320/tomcat_logo.gif" alt="" id="BLOGGER_PHOTO_ID_5335502164296916386" border="0" /&gt;&lt;/a&gt;La forma de configurar &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt; y Glassfish es muy simple solamente es necesario incluir en la carpeta "lib" que esta dentro de la ruta de instalación de cualquier de los dos servidores el respectivo JAR.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Para &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt; y Glassfish:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$HOME_PATH/lib&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Donde $HOME_PATH es la ruta de instalación de &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En mi debian el instalador de &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; deja el $HOME_PATH de &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt; y Glassfish en la siguiente ubicación:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/usr/local/apache-tomcat-6.0.18&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/usr/local/glassfish-v2ur2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Para windows como tengo ratos de no instalarlo &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt; no recuerdo donde lo dej el instalador por defecto pero al igual que en GNU/Linux al obtener el archivo descomprimible lo podemos ubicar en el lugar que queramos el $HOME_PATH.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En el caso de sistemas GNU/Linux ó Unix no es necesario copiar fisicamete el archivo pues también se puede utilizar un enlace simbólico.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ln -s /ruta/del/driver/jdbc_driver.jar $HOME_PATH/lib&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Como también en mis aplicaciones el &lt;a href="http://es.wikipedia.org/wiki/Data_Access_Object"&gt;DAO&lt;/a&gt; &lt;a href="http://www.oracle.com/technology/products/ias/toplink/index.html"&gt;Oracle TopLink&lt;/a&gt; para &lt;a href="http://krypto84sv.blogspot.com/search/label/jpa"&gt;JPA&lt;/a&gt; en el caso de Glassfish no es necesario por que ya esta incluido pero para &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt; no así que es necesario &lt;a href="http://www.oracle.com/technology/products/ias/toplink/jpa/download.html"&gt;descargar los respectivos JAR de Oracle TopLink&lt;/a&gt; para poder usar persistencia de datos.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Luego de eso reiniciamos los servicios.&lt;br /&gt;&lt;br /&gt;Dejare los links para poder descargar los respectivos driver jdbc para los diferentes gestores de bases de datos mas populares.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dev.mysql.com/downloads/connector/j/3.0.html"&gt;JDBC Driver para MySQL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html"&gt;JDBC Driver para Oracle&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jdbc.postgresql.org/"&gt;JDBC Driver para PostgreSQL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://db.apache.org/derby/docs/dev/devguide/cdevdvlp40653.html"&gt;JDBC Driver para Apache Derby&lt;/a&gt;&lt;br /&gt;JDBC Driver para SQL Server / Sybase puede usarse el &lt;a href="http://jtds.sourceforge.net/"&gt;driver libre&lt;/a&gt; o &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=99b21b65-e98f-4a61-b811-19912601fdc9&amp;amp;displaylang=en"&gt;el propietario.&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-4664577341487569123?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/4664577341487569123/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=4664577341487569123" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/4664577341487569123?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/4664577341487569123?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/05/habilitar-tomcat-y-glassfish-para.html" title="Habilitar Tomcat y Glassfish para conexion a bases de datos" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tPLVjrBRifE/SguCweyAxAI/AAAAAAAABiY/DLfYdG5EYTY/s72-c/glassfish_logo.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CEQNRHs-fCp7ImA9WxJSE0Q.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-5077310828352927860</id><published>2009-05-03T15:50:00.000-07:00</published><updated>2009-05-03T16:13:15.554-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-03T16:13:15.554-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="aplicaciones" /><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="debian" /><category scheme="http://www.blogger.com/atom/ns#" term="konqueror" /><category scheme="http://www.blogger.com/atom/ns#" term="kopete" /><category scheme="http://www.blogger.com/atom/ns#" term="kde" /><category scheme="http://www.blogger.com/atom/ns#" term="iceweasel" /><category scheme="http://www.blogger.com/atom/ns#" term="navegador web" /><title>Cambiar navegador por defecto para aplicaciones KDE</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/Sf4gkvGgINI/AAAAAAAABh4/sMPtrP12Pek/s1600-h/kde.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 50px; height: 50px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/Sf4gkvGgINI/AAAAAAAABh4/sMPtrP12Pek/s320/kde.png" alt="" id="BLOGGER_PHOTO_ID_5331734824344363218" border="0" /&gt;&lt;/a&gt;Siempre cuando utilizo aplicaciones de &lt;a href="http://krypto84sv.blogspot.com/search/label/kde"&gt;KDE&lt;/a&gt; así como Kopete y quiero abrir un enlace url a través de ella siempre me abre por defecto Konqueror cuando en mi caso deseo que &lt;a href="http://krypto84sv.blogspot.com/search/label/firefox"&gt;Firefox ó Iceweasel&lt;/a&gt; sea mi navegador por defecto, así que he decido explicar como ambiar esta situación en &lt;a href="http://krypto84sv.blogspot.com/search/label/kde"&gt;KDE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Debemos ir al "Selector de componentes" en mi caso tengo Debian Lenny y la ubicación de la opción es:&lt;br /&gt;&lt;br /&gt;Menú K -&gt; Centro de Control -&gt; Componentes de KDE -&gt; Selector de componentes&lt;br /&gt;&lt;br /&gt;Nos ubicamos en la opción "Navegador Web", y marcamos la opción "en el siguiente navegador" y escribimos:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;firefox -remote "openurl(%U,new-tab)" || firefox&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/Sf4ik2xKjqI/AAAAAAAABiI/9w883z73F88/s1600-h/sel_componente.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 220px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/Sf4ik2xKjqI/AAAAAAAABiI/9w883z73F88/s320/sel_componente.png" alt="" id="BLOGGER_PHOTO_ID_5331737025425608354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Damos clic en el botón aplicar y el cambio estará hecho.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-5077310828352927860?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/5077310828352927860/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=5077310828352927860" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/5077310828352927860?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/5077310828352927860?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/05/cambiar-navegador-por-defecto-para.html" title="Cambiar navegador por defecto para aplicaciones KDE" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tPLVjrBRifE/Sf4gkvGgINI/AAAAAAAABh4/sMPtrP12Pek/s72-c/kde.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DUUGSX45eip7ImA9WxJTGUk.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-2902727858459214326</id><published>2009-04-26T18:41:00.000-07:00</published><updated>2009-04-28T12:33:48.022-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-28T12:33:48.022-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="debian" /><category scheme="http://www.blogger.com/atom/ns#" term="jsp" /><category scheme="http://www.blogger.com/atom/ns#" term="tomcat 6" /><category scheme="http://www.blogger.com/atom/ns#" term="apache2" /><category scheme="http://www.blogger.com/atom/ns#" term="tomcat" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><category scheme="http://www.blogger.com/atom/ns#" term="servlets" /><title>Integracion Apache2 y Tomcat 6 con módulo JK</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SfUNhvjdogI/AAAAAAAABho/sdbSJGD4fiU/s1600-h/apache_tomcat_3d_logo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 129px; height: 124px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SfUNhvjdogI/AAAAAAAABho/sdbSJGD4fiU/s320/apache_tomcat_3d_logo.png" alt="" id="BLOGGER_PHOTO_ID_5329180607414903298" border="0" /&gt;&lt;/a&gt;Siento bastante raro estar haciendo un post, puesto que había dejado prácticamente abandonado mi blog.&lt;br /&gt;&lt;br /&gt;Pero bien, esta vez quiero compartir con ustedes la forma de como integrar el servidor web Apache2 con el contenedor de servlets y Java Server Pages, &lt;a href="http://krypto84sv.blogspot.com/2008/06/instalar-tomcat-6-en-debian-gnulinux.html"&gt;Tomcat 6&lt;/a&gt; específicamente la &lt;a href="http://tomcat.apache.org/download-60.cgi"&gt;versión 6.0.18&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Si bien en los repositorios de Debian tanto como de Ubuntu se puede descargar la versión 5 de Tomcat yo he optado por descargar la versión 6, antes de seguir con los pasos siguientes es necesario &lt;a href="http://krypto84sv.blogspot.com/2008/06/instalar-tomcat-6-en-debian-gnulinux.html"&gt;tener ya instalado Tomcat 6&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SfUSP2RO6NI/AAAAAAAABhw/SkOdHKvAIHQ/s1600-h/apache_logo.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 116px; height: 54px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SfUSP2RO6NI/AAAAAAAABhw/SkOdHKvAIHQ/s320/apache_logo.png" alt="" id="BLOGGER_PHOTO_ID_5329185797537982674" border="0" /&gt;&lt;/a&gt;Antes que nada procedemos a descargar Apache2 y el módulo JK para poder recibir conexiones a través de puerto 80 y redireccionarlo hacia Tomcat.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install apache2 libapache2-mod-jk&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego copiamos un archivo de configuración para incluirlo luego en el archivo de configuración de Apache2.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# cp /usr/share/doc/libapache2-mod-jk/httpd_example_apache2.conf /etc/apache2/mod_jk.conf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego editamos el archivo apache2.conf para agregar una línea hasta el final del archivo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# cd /etc/apache2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# nano apache2.conf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Include /etc/apache2/mod_jk.conf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego editamos el archivo workers.properties&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# nano /etc/libapache2-mod-jk/workers.properties&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Debemos buscar las siguientes tres líneas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;workers.tomcat_home=/usr/share/tomcat5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;workers.java_home=/usr/lib/jvm/java-gcj&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En la primera debemos agregar la ruta de instalacion de nuestro tomcat en mi caso la ruta de mi instalacion esta en /opt/apache-tomcat en la segunda línea debemos definir la ruta de nuestro JDK la mia es /usr/lib/j2sdk1.6-sun.&lt;br /&gt;&lt;br /&gt;Debería quedar así:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;workers.tomcat_home=/opt/apache-tomcat&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;workers.java_home=/usr/lib/j2sdk1.6-sun&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego creamos un Virtual Host para Tomcat en Apache2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/tomcat&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Editamos el virtual host agregandole la siguiente línea en medio de los tags &lt;virtualhost&gt;&lt;/virtualhost&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;JkMount /* ajp13_worker&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Reiniciamos apache2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# /etc/init.d/apache2 restart&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y listo al ingresar a la dirección http://localhost/examples/servlets&lt;br /&gt;&lt;br /&gt;Podemos visualizar los ejemplos que trae Tomcat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-2902727858459214326?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/2902727858459214326/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=2902727858459214326" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/2902727858459214326?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/2902727858459214326?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/04/integracion-apache2-y-tomcat-6-con.html" title="Integracion Apache2 y Tomcat 6 con módulo JK" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tPLVjrBRifE/SfUNhvjdogI/AAAAAAAABho/sdbSJGD4fiU/s72-c/apache_tomcat_3d_logo.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;D08MSX88eSp7ImA9WxVWFk0.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-7663783585024880664</id><published>2009-02-25T15:42:00.000-08:00</published><updated>2009-02-25T15:51:28.171-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-25T15:51:28.171-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Monseñor Romero" /><category scheme="http://www.blogger.com/atom/ns#" term="Martir" /><category scheme="http://www.blogger.com/atom/ns#" term="vigilia" /><category scheme="http://www.blogger.com/atom/ns#" term="Sonsonate" /><category scheme="http://www.blogger.com/atom/ns#" term="San Romero de América" /><title>Invitación vigilia Monseñor Romero</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SaXZHANd00I/AAAAAAAABhg/-mGhFtHmh9M/s1600-h/romero-1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 192px; height: 189px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SaXZHANd00I/AAAAAAAABhg/-mGhFtHmh9M/s320/romero-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5306886450264789826" border="0" /&gt;&lt;/a&gt;La comisión pastoral social diócesis de Sonsonate invitan a la VI vigilia en homenaje a San Romero de América en el XXIX aniversario de su muerte maritirial.
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;Datos del día del evento:
&lt;br /&gt;
&lt;br /&gt;Sábado 7 de Marzo de 2009
&lt;br /&gt;Hora: 6:30 pm a 4:30 am
&lt;br /&gt;Lugar: Atrio de catedral "Santisíma trinidad" de Sonsonate.
&lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 3.0  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;Habrá: santa misa presidida por mons. José Adolfo Mójica y sacerdotes de la diócesis de Sonsonate y luego programa cultural (música popular, declamación, testimonios, videos, teatro, rifas, comida típica y más…).
&lt;br /&gt;
&lt;br /&gt;Grupos invitados: los torogoces de Morazán, Yolocamba Ita, Jilguero, Mayas, Sierra madre, Chasquis, San Romero de América, son 7, ezti-tunil, El canto del desentendido, entre otros…
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;P.D. Tomado del afiche que me envio Erick al correo.
&lt;br /&gt;&lt;/div&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;/p&gt;
&lt;br /&gt;&lt;p class="MsoNormal" style="margin: 0cm -60.8pt 0.0001pt -63pt; text-align: justify;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:18;color:black;"   &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-7663783585024880664?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/7663783585024880664/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=7663783585024880664" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7663783585024880664?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7663783585024880664?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/02/invitacion-vigilia-monsenor-romero.html" title="Invitación vigilia Monseñor Romero" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_tPLVjrBRifE/SaXZHANd00I/AAAAAAAABhg/-mGhFtHmh9M/s72-c/romero-1.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;D0QAR3cyfip7ImA9WxVWEEU.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-4149983964413405357</id><published>2009-02-19T15:14:00.000-08:00</published><updated>2009-02-19T15:15:46.996-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-19T15:15:46.996-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="elecciones 2009" /><category scheme="http://www.blogger.com/atom/ns#" term="el salvador" /><title>Este blog quiere el cambio</title><content type="html">Se que mas de alguien me va a criticar por este post, pero me vale. Saludos a todos los compas de la UES.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SZ3oBBzkvDI/AAAAAAAABhY/XnT_VXLrGRo/s1600-h/no_voto_por_avila.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 272px; height: 294px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SZ3oBBzkvDI/AAAAAAAABhY/XnT_VXLrGRo/s320/no_voto_por_avila.PNG" alt="" id="BLOGGER_PHOTO_ID_5304651040474577970" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-4149983964413405357?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/4149983964413405357/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=4149983964413405357" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/4149983964413405357?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/4149983964413405357?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/02/este-blog-quiere-el-cambio.html" title="Este blog quiere el cambio" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/SZ3oBBzkvDI/AAAAAAAABhY/XnT_VXLrGRo/s72-c/no_voto_por_avila.PNG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;A0QMSX0zfip7ImA9WxVQE0o.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-318742548647034069</id><published>2009-01-30T21:10:00.001-08:00</published><updated>2009-01-30T21:23:08.386-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-30T21:23:08.386-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="extension" /><category scheme="http://www.blogger.com/atom/ns#" term="debian" /><category scheme="http://www.blogger.com/atom/ns#" term="español" /><category scheme="http://www.blogger.com/atom/ns#" term="diccionario" /><category scheme="http://www.blogger.com/atom/ns#" term="idioma" /><category scheme="http://www.blogger.com/atom/ns#" term="openoffice 3" /><category scheme="http://www.blogger.com/atom/ns#" term="corrector ortografico" /><category scheme="http://www.blogger.com/atom/ns#" term="openoffice" /><title>Corrector Ortografico en OpenOffice.org 3</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SYPddRmxmWI/AAAAAAAABhQ/nM6RspBjesY/s1600-h/oo3.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 126px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SYPddRmxmWI/AAAAAAAABhQ/nM6RspBjesY/s320/oo3.png" alt="" id="BLOGGER_PHOTO_ID_5297321081729816930" border="0" /&gt;&lt;/a&gt;Desde hace algunos días usando &lt;a href="http://krypto84sv.blogspot.com/search/label/openoffice"&gt;OpenOffice.org&lt;/a&gt; 3 en mi Debian GNU/Linux, tenia la necesidad de utilizar el corrector ortográfico, y para mi sorpresa no funcionaba y la solución a este pequeño percance es instalarse el diccionario de nuestra región como una extensión a través de la siguiente dirección:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://extensions.services.openoffice.org/dictionary" title="http://extensions.services.openoffice.org/dictionary" rel="nofollow"&gt;http://extensions.services.openoffice.org/dictionary&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Estando alli debemos buscar el correspondiente de nuestro país en mi caso busque el de El Salvador.&lt;br /&gt;&lt;br /&gt;Luego abro el &lt;a href="http://krypto84sv.blogspot.com/search/label/openoffice"&gt;OpenOffice.org&lt;/a&gt; Writer o cualquier otro y me voya Herramientas &gt; Administrador de extensiones y agrego la extensión (diccionario) que se ha descargado de la dirección anterior, luego de esto cerramos el OpenOffice.org y lo volvemos a abrir y eso es todo para que funcione perfectamente el corrector ortográfico.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-318742548647034069?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/318742548647034069/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=318742548647034069" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/318742548647034069?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/318742548647034069?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/01/corrector-ortografico-en-openofficeorg.html" title="Corrector Ortografico en OpenOffice.org 3" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/SYPddRmxmWI/AAAAAAAABhQ/nM6RspBjesY/s72-c/oo3.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;CEQAQHs9fip7ImA9WxVQEE0.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-3611256042904246488</id><published>2009-01-25T13:25:00.000-08:00</published><updated>2009-01-26T12:39:01.566-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-26T12:39:01.566-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tildes" /><category scheme="http://www.blogger.com/atom/ns#" term="teclado" /><category scheme="http://www.blogger.com/atom/ns#" term="deadkeys" /><category scheme="http://www.blogger.com/atom/ns#" term="kde" /><title>Usando DeadKeys en KDE de forma fácil</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SXzbij6qJcI/AAAAAAAABhA/jJCIvApM59o/s1600-h/kde_logo_10cm.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 150px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SXzbij6qJcI/AAAAAAAABhA/jJCIvApM59o/s320/kde_logo_10cm.png" alt="" id="BLOGGER_PHOTO_ID_5295348648684168642" border="0" /&gt;&lt;/a&gt;Leyendo el &lt;a href="http://churropolis.org/"&gt;blog del Churro&lt;/a&gt;, vi una entrada muy útil sobre como &lt;a href="http://churropolis.org/?p=1089"&gt;activar las DeadKeys&lt;/a&gt; para poder usar tildes y la "ñ", me intereso puesto que mi caso es igual al de él, ya que el teclado de mi laptop es en ingles.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Al editar el archivo xorg.conf y reiniciar el sistema no me funcionaba, el problema radica en que yo uso &lt;a href="http://krypto84sv.blogspot.com/search/label/kde"&gt;KDE&lt;/a&gt; y este es el que gestiona el teclado por encima de xorg, la solución para poder usar tildes y la "ñ" esta usando el Centro de control de&lt;a href="http://krypto84sv.blogspot.com/search/label/kde"&gt; KDE&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Menú K.&lt;/li&gt;&lt;li&gt;Centro de control.&lt;/li&gt;&lt;li&gt;Regional y accesibilidad.&lt;/li&gt;&lt;li&gt;Disposición del teclado.&lt;/li&gt;&lt;li&gt;Si entre los diseños activos no se encuentra el ingles lo agregamos (US).&lt;/li&gt;&lt;li&gt;Después de estar entre los teclados activos damos clic sobre el y elegimos la opción "variante del diseño", &lt;span style="font-weight: bold;"&gt;intl&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SXzfJdU_gUI/AAAAAAAABhI/TPKu1ykqX50/s1600-h/control-panel.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 188px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SXzfJdU_gUI/AAAAAAAABhI/TPKu1ykqX50/s320/control-panel.png" alt="" id="BLOGGER_PHOTO_ID_5295352615465353538" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;"Adjunto imagen del Centro de control de &lt;a href="http://krypto84sv.blogspot.com/search/label/kde"&gt;KDE&lt;/a&gt; donde se configura"&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Lo interesante de hacerlo de esta forma es que no se tiene que editar ningun archivo de configuración y resulta mas intuitivo para un usuario común.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-3611256042904246488?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/3611256042904246488/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=3611256042904246488" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/3611256042904246488?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/3611256042904246488?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/01/usando-deadkeys-en-kde-de-forma-fcil.html" title="Usando DeadKeys en KDE de forma fácil" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tPLVjrBRifE/SXzbij6qJcI/AAAAAAAABhA/jJCIvApM59o/s72-c/kde_logo_10cm.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;A0YHRng_fip7ImA9WxVQEEo.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-8754887868481626</id><published>2009-01-23T13:24:00.000-08:00</published><updated>2009-01-27T09:58:57.646-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-27T09:58:57.646-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="debian" /><category scheme="http://www.blogger.com/atom/ns#" term="openldap" /><category scheme="http://www.blogger.com/atom/ns#" term="subversion" /><category scheme="http://www.blogger.com/atom/ns#" term="apache2" /><category scheme="http://www.blogger.com/atom/ns#" term="ldap" /><category scheme="http://www.blogger.com/atom/ns#" term="svn" /><title>Instalación de servidor de repositorio Subversion con soporte SSL y autenticación por LDAP en Debian GNU/Linux</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SXo4F3OYURI/AAAAAAAABgw/QY6opEQm4NM/s1600-h/subversion_logo_1.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 102px; height: 88px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SXo4F3OYURI/AAAAAAAABgw/QY6opEQm4NM/s320/subversion_logo_1.gif" alt="" id="BLOGGER_PHOTO_ID_5294605985302204690" border="0" /&gt;&lt;/a&gt;Después de haber realizado la &lt;a href="http://krypto84sv.blogspot.com/2009/01/guia-para-configuracidn-de-openldap.html"&gt;guía de instalación y configuración de un servidor OpenLDAP&lt;/a&gt; en &lt;a href="http://www.debian.org/"&gt;Debian GNU/Linux&lt;/a&gt;, me dispuse a integrar muchos otros servicios el cual se pudieran autentificar mediante el LDAP.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Así que me di a la tarea de configurar &lt;a href="http://krypto84sv.blogspot.com/search/label/subversion"&gt;Subversion&lt;/a&gt; con Apache2 para que puedan autentificarse mediante LDAP, esta guía la desarrolle en Debian pero fácilmente puede ser adaptada para Ubuntu u otras distribuciones derivadas de Debian.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;         &lt;span style="font-weight: bold;"&gt;Instalando la paquetería necesaria&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Para empezar se deben descargarse los paquetes necesarios para tener Apache2 y sus respectivos módulos para que se pueda trabajar con Subversion.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install subversion apache2 libapache2-svn subversion-tools&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego debemos crear el repositorio&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# mkdir /var/svn/proyecto&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# svnadmin create /var/svn/proyecto&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Es necesario cambiar el propietario y permisos de escritura para el servidor Apache2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# chown www-data.www-data -R /var/svn/proyecto/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# chmod 777 -R /var/svn/proyecto/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Habilitando los módulos para Apache2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Se deben habilitar los módulos de Subversion, DAV y autenticación por medio de LDAP para Apache2.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#a2enmod dav&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#a2enmod dav_svn &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# a2enmod authnz_ldap  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Debemos forzar la carga de módulos a Apache2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# /etc/init.d/apache2 force-reload &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# /etc/init.d/apache2 restart&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Generando un certificado auto firmado&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ahora es necesario dar soporte SSL, pero también es necesario descargarnos una herramienta para generar un certificado auto firmado de forma muy sencilla.&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;# apt-get install ssl-cert &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Creamos el directorio donde estará alojado nuestro certificado auto firmado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# mkdir /etc/apache2/ssl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con el paquete ssl-cert viene la herramienta make-ssl-cert para crearnos el certificado auto firmado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configurando un Virtual Host para tener soporte SSL&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Copiamos un virtual host hacia la carpeta de sitios disponibles&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Editamos el virtual host&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# nano /etc/apache2/sites-enabled/ssl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y al principio del archivo debemos realizar los cambios que presento a continuación&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;NameVirtualHost *:443&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SSLEngine on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SSLCertificateFile /etc/apache2/ssl/apache.pem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora habilitamos el virtual host con soporte para ssl&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# a2enmod ssl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y reiniciamos Apache2, para que reconozca nuestros cambios&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# /etc/init.d/apache2 force-reload&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Si queremos probar que todo esta bien debemos ingresar a la dirección https://ip-hostname y nos dará una advertencia diciendo que estamos accediendo a un sitio que usa un certificado auto firmado, entonces debemos agregar la excepción para ingresar al sitio.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configurando Apache2 para Subversion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Antes que nada debemos crear, un archivo con política de grupos, para asignar a cada usuario su respectivo repositorio de proyecto.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# nano /etc/apache2/acceso.authz&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;[groups]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# Se agregan los usuarios creados en el servidor LDAP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;grupo-ldap = daniel.herrera, carlos.ramirez&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[proyecto:/]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;@grupo-ldap=rw&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora se procede a crear el virtual host del proyecto en Apache editando el siguiente archivo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# nano /etc/apache2/mods-enabled/dav_svn.conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se agrega la siguiente entrada adaptada a nuestro ejemplo de repositorio.           &lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&amp;lt;Location /svn/proyecto&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;DAV svn&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SVNPath /var/svn/proyecto&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AuthType Basic&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AuthName "Repositorio de prueba de Proyecto"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AuthzSVNAccessFile /etc/apache2/acceso.authz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Require valid-user&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SSLRequireSSL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AuthBasicProvider ldap&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AuthzLDAPAuthoritative off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AuthLDAPBindDN "cn=admin,dc=dominio,dc=com"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AuthLDAPBindPassword contraseña-servidor-ldap&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AuthLDAPURL "ldap://ip-hostname/ou=users,dc=dominio,dc=com?cn"&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&amp;lt;/Location&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Terminado esto solo basta con reiniciar Apache&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# /etc/init.d/apache2 restart&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Accedemos a https://ip-hostname/svn/proyecto  Nos pedirá un usuario y contraseña validos definidos en el archivo de políticas de grupo, y así se podrá tener acceso al proyecto.&lt;/div&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-8754887868481626?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/8754887868481626/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=8754887868481626" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8754887868481626?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8754887868481626?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/01/instalacin-de-servidor-de-repositorio.html" title="Instalación de servidor de repositorio Subversion con soporte SSL y autenticación por LDAP en Debian GNU/Linux" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/SXo4F3OYURI/AAAAAAAABgw/QY6opEQm4NM/s72-c/subversion_logo_1.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CEUERX44fSp7ImA9WxVQEE0.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-985573119119714928</id><published>2009-01-22T14:08:00.000-08:00</published><updated>2009-01-26T12:36:44.035-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-26T12:36:44.035-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tutoriales" /><category scheme="http://www.blogger.com/atom/ns#" term="debian" /><category scheme="http://www.blogger.com/atom/ns#" term="pdc" /><category scheme="http://www.blogger.com/atom/ns#" term="openldap" /><category scheme="http://www.blogger.com/atom/ns#" term="samba" /><category scheme="http://www.blogger.com/atom/ns#" term="manual" /><category scheme="http://www.blogger.com/atom/ns#" term="ldap" /><category scheme="http://www.blogger.com/atom/ns#" term="guia" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>Guia para configuración de OpenLDAP usando Samba como PDC en Debian GNU/Linux</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SXjvdz7VjGI/AAAAAAAABgI/FcFHsqGLGL0/s1600-h/logo-openldap.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 128px; height: 51px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SXjvdz7VjGI/AAAAAAAABgI/FcFHsqGLGL0/s320/logo-openldap.png" alt="" id="BLOGGER_PHOTO_ID_5294244657408347234" border="0" /&gt;&lt;/a&gt;Desde ya hace una semana que he estado elaborando una pequeña guía para montar y configurar un servidor OpenLDAP en un sistema Debian Etch GNU/Linux.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Siempre me intimido un poco la manera de querer configurar un servicio de este tipo ya que es bien trabajoso configurarlo ya que también involucra otro servicio el cual es Samba configurado como PDC (Dominio de control primario).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SXjxE5gTizI/AAAAAAAABgQ/bKFoogGb6Hw/s1600-h/debian.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 50px; height: 50px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SXjxE5gTizI/AAAAAAAABgQ/bKFoogGb6Hw/s320/debian.jpg" alt="" id="BLOGGER_PHOTO_ID_5294246428432108338" border="0" /&gt;&lt;/a&gt;Pero el resultado ha sido satisfactorio, ya que el servicio esta funcionando muy bien en las maquinas Ubuntu de la empresa (y es que todos los programadores en la empresa usan Ubuntu).&lt;br /&gt;&lt;br /&gt;Mas adelante posteare sobre como integrar otros servios con autenticación LDAP.&lt;br /&gt;&lt;br /&gt;En este post &lt;a href="http://www.mediafire.com/?a2bemmwmymg"&gt;comparto el PDF con la guía completa&lt;/a&gt; decidí dejarlo en PDF por que es demasiado larga la guía para estar en un post.&lt;br /&gt;Disculpas por si se topan con alguno que otro "horror" de ortografía.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-985573119119714928?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/985573119119714928/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=985573119119714928" title="4 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/985573119119714928?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/985573119119714928?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/01/guia-para-configuracidn-de-openldap.html" title="Guia para configuración de OpenLDAP usando Samba como PDC en Debian GNU/Linux" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tPLVjrBRifE/SXjvdz7VjGI/AAAAAAAABgI/FcFHsqGLGL0/s72-c/logo-openldap.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry gd:etag="W/&quot;CU4MR3cyfip7ImA9WxVREUs.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-1863532820102960482</id><published>2009-01-16T19:37:00.000-08:00</published><updated>2009-01-16T19:46:26.996-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-16T19:46:26.996-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="elecciones 2009" /><category scheme="http://www.blogger.com/atom/ns#" term="el salvador" /><category scheme="http://www.blogger.com/atom/ns#" term="politico" /><title>Cuidado a quien votas</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SXFT89fhhOI/AAAAAAAABfU/O50GVTcURWo/s1600-h/elecciones.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 162px; height: 151px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SXFT89fhhOI/AAAAAAAABfU/O50GVTcURWo/s320/elecciones.jpg" alt="" id="BLOGGER_PHOTO_ID_5292103343901082850" border="0" /&gt;&lt;/a&gt;Estamos cerca de decidir el rumbo de  nuestro país, es hora que como salvadoreños debamos ejercer nuestro derecho a elegir nuestros gobernantes.&lt;br /&gt;&lt;br /&gt;En este ejercicio no existe el concepto de la palabra "apolitico" toda persona por nuestra naturaleza humana tenemos ideologias, si bien no firmemente definida pero la tenemos.&lt;br /&gt;&lt;br /&gt;Etiquetarse de apolitico no es excusa de no ir a votar, debemos hacerlo, a la vez comparto una buena cancion de Resistencia Suburbana llamada &lt;a href="http://www.youtube.com/watch?v=fbAwGxRrexY"&gt;"Cuidado a quien votas"&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fbAwGxRrexY&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/fbAwGxRrexY&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-1863532820102960482?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/1863532820102960482/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=1863532820102960482" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/1863532820102960482?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/1863532820102960482?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/01/cuidado-quien-votas.html" title="Cuidado a quien votas" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/SXFT89fhhOI/AAAAAAAABfU/O50GVTcURWo/s72-c/elecciones.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DUMARXg-eCp7ImA9WxVSFE4.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-7884257931773581084</id><published>2009-01-08T09:52:00.000-08:00</published><updated>2009-01-08T09:57:24.650-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-08T09:57:24.650-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="engaño" /><category scheme="http://www.blogger.com/atom/ns#" term="burla" /><category scheme="http://www.blogger.com/atom/ns#" term="negocio" /><category scheme="http://www.blogger.com/atom/ns#" term="teleton" /><category scheme="http://www.blogger.com/atom/ns#" term="lucro" /><title>Y cada año seguimos con el tema de la Teleton</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SWY9lVSogsI/AAAAAAAABfI/-qUcpXYrCIU/s1600-h/no-teleton.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 125px; height: 137px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SWY9lVSogsI/AAAAAAAABfI/-qUcpXYrCIU/s320/no-teleton.jpg" alt="" id="BLOGGER_PHOTO_ID_5288982523972977346" border="0" /&gt;&lt;/a&gt;Desde ya hace vario rato ya &lt;a href="http://krypto84sv.blogspot.com/2008/02/la-teleton-otra-forma-de-aprovecharse.html"&gt;había hablado en lo que en verdad consiste la burla de la teleton&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pero ahora curiosamente me ha llegado un correo con un link muy interesante que explica con mas detalle en lo que consiste ese negocio.&lt;br /&gt;&lt;br /&gt;Aca comparto el link con ustedes &lt;a href="http://ceminfosv.com/index.php?p=1_7_Sobre-la-TELETON"&gt;SOBRE LA TELETON&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-7884257931773581084?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/7884257931773581084/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=7884257931773581084" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7884257931773581084?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7884257931773581084?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/01/y-cada-ao-seguimos-con-el-tema-de.html" title="Y cada año seguimos con el tema de la Teleton" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tPLVjrBRifE/SWY9lVSogsI/AAAAAAAABfI/-qUcpXYrCIU/s72-c/no-teleton.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DkAERH8-fyp7ImA9WxVSE0U.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-2531169068111886406</id><published>2009-01-07T18:50:00.001-08:00</published><updated>2009-01-07T19:18:25.157-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-07T19:18:25.157-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="encuesta" /><category scheme="http://www.blogger.com/atom/ns#" term="gente" /><category scheme="http://www.blogger.com/atom/ns#" term="software libre" /><title>Encuesta de opinion sobre Software libre</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SWVqFAACbSI/AAAAAAAABfA/Rp82b-laE9Y/s1600-h/opinion_encuesta.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 147px; height: 194px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SWVqFAACbSI/AAAAAAAABfA/Rp82b-laE9Y/s320/opinion_encuesta.jpg" alt="" id="BLOGGER_PHOTO_ID_5288749971548564770" border="0" /&gt;&lt;/a&gt;De camino en el Mercedes Benz (Bus interdepartamental) que me transporta desde San Salvador hasta Santa Ana, iba pensando que razones tenemos para simpatizar con el movimiento del software libre.&lt;br /&gt;&lt;br /&gt;Pues al entablar varias platicas con varia gente incluso no informatica tienen sus razones por que simpatizar con el software libre, asi que me propuse a realizar la encuesta acerca de este tema.&lt;br /&gt;&lt;br /&gt;Espero que puedan colaborarme al llenar esta encuesta.&lt;br /&gt;&lt;br /&gt;Saludos a todos los amigos de la UES - FMOcc&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-2531169068111886406?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/2531169068111886406/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=2531169068111886406" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/2531169068111886406?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/2531169068111886406?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/01/encuesta-de-opinion-sobre-software.html" title="Encuesta de opinion sobre Software libre" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tPLVjrBRifE/SWVqFAACbSI/AAAAAAAABfA/Rp82b-laE9Y/s72-c/opinion_encuesta.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;D0YEQ3Y6fSp7ImA9WxVTFUo.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-7108235361280360597</id><published>2008-12-29T06:42:00.001-08:00</published><updated>2008-12-29T10:25:02.815-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-29T10:25:02.815-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jodarria" /><category scheme="http://www.blogger.com/atom/ns#" term="vale verga" /><category scheme="http://www.blogger.com/atom/ns#" term="wallpaper" /><category scheme="http://www.blogger.com/atom/ns#" term="fondos" /><title>Unete al movimiento! - Una sola voz</title><content type="html">&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Comunicado BPJ (Bloque de programadores Jodidos)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Unete al movimiento por la dignidad de los desarrolladores, coloca la imagen como fondo de pantalla en cualquier PC posible, si en tu oficina te lo prohiben, ya tienes una razón mas para unirte a nuestro movimiento.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SVji90rzkxI/AAAAAAAABeo/2ZFD6gfNTt8/s1600-h/W.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SVji90rzkxI/AAAAAAAABeo/2ZFD6gfNTt8/s320/W.jpg" alt="" id="BLOGGER_PHOTO_ID_5285223714461553426" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold;"&gt;Fondo Pantalla Normal "Vale Verga"&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SVjjDILfZ8I/AAAAAAAABew/WobxrXTpFUo/s1600-h/W2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 256px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SVjjDILfZ8I/AAAAAAAABew/WobxrXTpFUo/s320/W2.jpg" alt="" id="BLOGGER_PHOTO_ID_5285223805594068930" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;Para Widescreen "Vale Verga"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SVkV0zvtgCI/AAAAAAAABe4/6UL7tc0hmFg/s1600-h/informaticos_haciendo_posible.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 190px; height: 190px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SVkV0zvtgCI/AAAAAAAABe4/6UL7tc0hmFg/s320/informaticos_haciendo_posible.png" alt="" id="BLOGGER_PHOTO_ID_5285279634683691042" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;Tomado de &lt;a href="http://sinergiasincontrol.blogspot.com/"&gt;Sinergia sin Control&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-7108235361280360597?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/7108235361280360597/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=7108235361280360597" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7108235361280360597?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7108235361280360597?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2008/12/unete-al-movimiento-una-sola-voz.html" title="Unete al movimiento! - Una sola voz" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_tPLVjrBRifE/SVji90rzkxI/AAAAAAAABeo/2ZFD6gfNTt8/s72-c/W.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;DkQDQXszeCp7ImA9WxJUFUU.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-2086262730451504935</id><published>2008-11-27T18:23:00.000-08:00</published><updated>2009-07-14T08:12:50.580-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-14T08:12:50.580-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bases de datos" /><category scheme="http://www.blogger.com/atom/ns#" term="sql server" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="auto_increment" /><category scheme="http://www.blogger.com/atom/ns#" term="sybase" /><category scheme="http://www.blogger.com/atom/ns#" term="secuencias" /><category scheme="http://www.blogger.com/atom/ns#" term="autoincrementable" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><category scheme="http://www.blogger.com/atom/ns#" term="derby" /><title>Campos autoincrementables</title><content type="html">Siempre me ha llamado la atención de como se declaran los famosos campos auto incrementables en las distintas bases de datos por lo menos en las que he usado, y ahora mas ya que he estado usando intensamente &lt;a href="http://krypto84sv.blogspot.com/2008/11/introduciendo-al-uso-de-persistencia-de.html"&gt;JPA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SS9XPa3XHcI/AAAAAAAABdw/42s7wb7BXS8/s1600-h/identity_db.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 280px; height: 240px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SS9XPa3XHcI/AAAAAAAABdw/42s7wb7BXS8/s320/identity_db.jpg" alt="" id="BLOGGER_PHOTO_ID_5273529611095317954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Acá pondré un resumen de como se declaran:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/STYdSVU_DYI/AAAAAAAABd4/pIpRBaCUucU/s1600-h/mysql.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 50px; height: 50px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/STYdSVU_DYI/AAAAAAAABd4/pIpRBaCUucU/s320/mysql.gif" alt="" id="BLOGGER_PHOTO_ID_5275436214311128450" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;MySQL&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;campo &lt;/span&gt;&lt;tipo&gt;&lt;span style="font-style: italic;"&gt;[(longitud)] [not null] auto_increment primary key&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Es  necesario definir un campo autoincrementable en &lt;a href="http://krypto84sv.blogspot.com/search/label/mysql"&gt;MySQL&lt;/a&gt; ya que este asi lo requiere.&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;create table prueba (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;id int not null auto_increment primary key&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tipo&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/STYdw-KcWWI/AAAAAAAABeI/-GmzdyeHAHI/s1600-h/logo_postgresql.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 37px; height: 37px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/STYdw-KcWWI/AAAAAAAABeI/-GmzdyeHAHI/s320/logo_postgresql.png" alt="" id="BLOGGER_PHOTO_ID_5275436740668840290" border="0" /&gt;&lt;/a&gt;&lt;tipo&gt;&lt;span style="font-weight: bold;"&gt;PostgreSQL&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;campo serial [not null]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En &lt;a href="http://krypto84sv.blogspot.com/search/label/postgresql"&gt;PostgreSQL&lt;/a&gt; por el contrario que &lt;a href="http://krypto84sv.blogspot.com/search/label/mysql"&gt;MySQL&lt;/a&gt; no requiere que un campo de tipo serial sea una llave primaria ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;create table prueba (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;id serial not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tipo&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/STYd0ouiTxI/AAAAAAAABeQ/kdow7FVrIMA/s1600-h/ms-sql-server.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 50px; height: 50px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/STYd0ouiTxI/AAAAAAAABeQ/kdow7FVrIMA/s320/ms-sql-server.gif" alt="" id="BLOGGER_PHOTO_ID_5275436803634122514" border="0" /&gt;&lt;/a&gt;&lt;tipo&gt;&lt;span style="font-weight: bold;"&gt;SQL Server / Sybase&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En el caso de SQL Server / Sybase es mucho mas simple solo basta utilizar esta sintaxis:&lt;/tipo&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/STYd5PGMJcI/AAAAAAAABeY/Nh3q4BPSdSY/s1600-h/logo_sybase_01_a.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 50px; height: 50px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/STYd5PGMJcI/AAAAAAAABeY/Nh3q4BPSdSY/s320/logo_sybase_01_a.gif" alt="" id="BLOGGER_PHOTO_ID_5275436882653357506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;tipo&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;campo int identity [(inicio,incremento)]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;create table prueba (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;id int identity&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O sino si queremos que comience desde 3 y su incremento sea de dos en dos lo declaramos asi:&lt;br /&gt;&lt;br /&gt;&lt;/tipo&gt;&lt;span style="font-weight: bold;"&gt;create table prueba (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;id int identity(3,2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;tipo&gt;&lt;br /&gt;&lt;/tipo&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/STYeSeNZgeI/AAAAAAAABeg/oLhPMytQYLA/s1600-h/derby-logo-web_small.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 32px; height: 32px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/STYeSeNZgeI/AAAAAAAABeg/oLhPMytQYLA/s320/derby-logo-web_small.png" alt="" id="BLOGGER_PHOTO_ID_5275437316206854626" border="0" /&gt;&lt;/a&gt;&lt;tipo&gt;&lt;span style="font-weight: bold;"&gt;Apache Derby&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;campo int [not null] generated always as identity [(start with [cantidad], increment by [cantidad])]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Derby es el gestor de base de datos de Apache, que viene incluido en el JDK 1.6, y lo podemos usar a traves de Netbeans, dos ejemplos de declaracion serian:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;create table prueba (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;id int not null generated always as identity&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En el ejemplo anterior el campo id se generara como campo auto incrementable, con los valores por defecto que comienza a contar desde uno y su incremento es de uno en uno.&lt;br /&gt;&lt;br /&gt;Ahora veamos este otro:&lt;br /&gt;&lt;br /&gt;&lt;/tipo&gt;&lt;span style="font-weight: bold;"&gt;create table prueba (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;id int not null generated always as identity (start with 5, increment by 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En la declaracion anterior estoy creando un campo de tipo autoincrementable que comience en cinco y su incremento sera de dos en dos.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/STYdtRL9amI/AAAAAAAABeA/dXt2ds0upFU/s1600-h/logo_oracle.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 48px; height: 48px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/STYdtRL9amI/AAAAAAAABeA/dXt2ds0upFU/s320/logo_oracle.jpg" alt="" id="BLOGGER_PHOTO_ID_5275436677055998562" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Oracle&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En el caso de Oracle es un poco mas trabajoso ya que no existe un tipo auto incrementable. Lo que se debe de hacer es primero crear un campo de tipo Number, luego crear una secuencia y por ultimo crear un trigger que realizara el autoincremento cada vez se haga un insert.&lt;br /&gt;&lt;br /&gt;Ejemplo de todo esto seria:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;create table prueba (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;id number not null primary key,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;descripcion varchar2(20)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ya creada la tabla ahora crearemos una secuencia que comience desde uno y que se incremento en uno tambien.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;create sequence seq_id_prueba&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;start with 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;increment by 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;nomaxvalue;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hecha la secuencia debemos crear el trigger para que se utilice la secuencia para cada insert que le hagamos a la tabla.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;create trigger trig_id_prueba&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;before insert on prueba&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;for each row&lt;br /&gt;begin&lt;br /&gt;select seq_id_prueba.nexval into :new.id from dual;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora cada vez que hagamos un insert podremos hacerlo asi:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;insert into prueba(descripcion) values('Una fila');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Espero que les sirva este pequeno resumen ya que me costo un webo terminarlo aun cuando se ve sencillo ya que lo empece desde el domingo y hasta el dia de hoy logre terminarlo.&lt;tipo&gt;&lt;br /&gt;&lt;/tipo&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-2086262730451504935?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/2086262730451504935/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=2086262730451504935" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/2086262730451504935?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/2086262730451504935?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2008/11/campos-autoincrementables.html" title="Campos autoincrementables" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tPLVjrBRifE/SS9XPa3XHcI/AAAAAAAABdw/42s7wb7BXS8/s72-c/identity_db.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;CUcBQnw6fyp7ImA9WxRUEEo.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-4229703523900969508</id><published>2008-11-18T21:14:00.001-08:00</published><updated>2008-11-18T21:37:33.217-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-18T21:37:33.217-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="jpa" /><category scheme="http://www.blogger.com/atom/ns#" term="connection" /><category scheme="http://www.blogger.com/atom/ns#" term="programacion" /><category scheme="http://www.blogger.com/atom/ns#" term="entitymanager" /><category scheme="http://www.blogger.com/atom/ns#" term="conexion" /><title>Obteniendo una Conexion a partir de un EntityManager</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SSOkVr319RI/AAAAAAAABdg/YeSVVJ98Wjw/s1600-h/DBRestyleLogo600.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 180px; height: 180px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SSOkVr319RI/AAAAAAAABdg/YeSVVJ98Wjw/s320/DBRestyleLogo600.png" alt="" id="BLOGGER_PHOTO_ID_5270236681414767890" border="0" /&gt;&lt;/a&gt;Hace unos dias cuando estaba realizando unos reportes con la herramienta &lt;a href="http://krypto84sv.blogspot.com/2008/02/disea-reportes-y-grficos-en-java-con.html"&gt;iReport&lt;/a&gt;, me tope con la necesidad que para poder invocar los reportes elaborados era necesario enviar una instancia de un objeto Connection para el metodo que genera el reporte.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SSOk02sK_eI/AAAAAAAABdo/41k1WPkkiRo/s1600-h/java-logo.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 75px; height: 100px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SSOk02sK_eI/AAAAAAAABdo/41k1WPkkiRo/s320/java-logo.png" alt="" id="BLOGGER_PHOTO_ID_5270237216894549474" border="0" /&gt;&lt;/a&gt;Crear una conexion es sencillo pero yo no estaba manejando mi conexion de la manera tradicional pues estaba usando &lt;a href="http://krypto84sv.blogspot.com/2008/11/introduciendo-al-uso-de-persistencia-de.html"&gt;JPA que es la API de persistencia de datos de Java&lt;/a&gt; y esta es la que maneja las conexiones y la configuracion de la cadena de conexion se guardda en la unidad de persistencia que es nada mas y nada menos que un XML.&lt;br /&gt;&lt;br /&gt;En un principio pense en &lt;a href="http://krypto84sv.blogspot.com/2008/05/usando-jdom-en-java-para-usar-xml.html"&gt;acceder al XML directamente&lt;/a&gt;, pero como sabia que la conexion se maneja a traves del objeto EntityManager decidi averiguar como se hacia y pues la forma fue la siguiente asi de simple:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;    public Connection getConnection() {&lt;br /&gt;    EntityManagerFactory    emf=Persistence.createEntityManagerFactory("NombreUnidadPersistencia");&lt;br /&gt;    EntityManager em=emf.createEntityManager();&lt;br /&gt;    return ((oracle.toplink.essentials.ejb.cmp3.EntityManager)em)&lt;br /&gt;            .getServerSession()&lt;br /&gt;            .getDefaultConnectionPool()&lt;br /&gt;            .acquireConnection()&lt;br /&gt;            .getConnection();&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Espero que esto le sirva cuando se tenga la necesidad de obtener una instancia de la conexion que esta utilizando a travez de un EntityManager.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-4229703523900969508?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/4229703523900969508/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=4229703523900969508" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/4229703523900969508?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/4229703523900969508?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2008/11/obteniendo-una-conexion-partir-de-un.html" title="Obteniendo una Conexion a partir de un EntityManager" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_tPLVjrBRifE/SSOkVr319RI/AAAAAAAABdg/YeSVVJ98Wjw/s72-c/DBRestyleLogo600.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;CE4CQnk_fCp7ImA9WxRaFE0.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-7826368958824071456</id><published>2008-11-17T18:57:00.000-08:00</published><updated>2008-12-15T20:49:23.744-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-15T20:49:23.744-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="persistencia" /><category scheme="http://www.blogger.com/atom/ns#" term="jpa" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="programacion" /><category scheme="http://www.blogger.com/atom/ns#" term="datos" /><title>Introduciendo al uso de persistencia de datos JPA</title><content type="html">&lt;div style="text-align: justify;"&gt;Como parte de mi promesa de volver a bloguear activamente, ahora voy a escribir sobre el uso de la &lt;a href="http://es.wikipedia.org/wiki/Java_Persistence_API"&gt;API de persistencia de datos de Java&lt;/a&gt; comunmente llamado &lt;a href="http://es.wikipedia.org/wiki/Java_Persistence_API"&gt;JPA&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SSIwHIf7S_I/AAAAAAAABcg/uXCAn24Z1qA/s1600-h/Java-persistence.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 206px; height: 91px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SSIwHIf7S_I/AAAAAAAABcg/uXCAn24Z1qA/s320/Java-persistence.PNG" alt="" id="BLOGGER_PHOTO_ID_5269827413075512306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Pero antes de empezar este post aun recuerdo cuando Rodrigo queria implementar esta historia en nuestro proyecto de Sistemas de informacion gerencial, definitivamente si a mi no me hubiera agarrado el berrinche hubiesemos avanzado bastante en poco tiempo, ya que perdi bastante tiempo queriendo escribir mis diske reglas del negocio, por eso en ese caso se aplico bien lo que dicen la gente adulta "uno de cipote es tonto".&lt;br /&gt;&lt;br /&gt;Este post se centrara en utilizar &lt;a href="http://es.wikipedia.org/wiki/Java_Persistence_API"&gt;JPA&lt;/a&gt; utilizando el &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;IDE Netbeans&lt;/a&gt; 6.1, ya que es el que tengo mas tiempo utilizandolo, y en mi caso la base de datos de mi preferencia es &lt;a href="http://krypto84sv.blogspot.com/search/label/postgresql"&gt;PostgreSQL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;La base de datos que cree la llame simplemente "tienda" y su estructura esta compuesta por dos tablas:&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;CREATE TABLE&lt;/span&gt; tienda&lt;br /&gt;(&lt;br /&gt;id &lt;span style="color: rgb(0, 0, 153);"&gt;serial NOT NULL&lt;/span&gt;,&lt;br /&gt;descripcion &lt;span style="color: rgb(0, 0, 153);"&gt;character varyin&lt;/span&gt;g(20),&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;CONSTRAINT&lt;/span&gt; pk_tienda &lt;span style="color: rgb(0, 0, 153);"&gt;PRIMARY KE&lt;/span&gt;Y (id)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;CREATE TABLE&lt;/span&gt; empleado&lt;br /&gt;(&lt;br /&gt;nick &lt;span style="color: rgb(0, 0, 153);"&gt;character varying&lt;/span&gt;(15) &lt;span style="color: rgb(0, 0, 153);"&gt;NOT NULL&lt;/span&gt;,&lt;br /&gt;nombre &lt;span style="color: rgb(0, 0, 153);"&gt;character varying&lt;/span&gt;(30),&lt;br /&gt;fk_tienda &lt;span style="color: rgb(0, 0, 153);"&gt;integer&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;CONSTRAINT &lt;/span&gt;pk_empleado &lt;span style="color: rgb(0, 0, 153);"&gt;PRIMARY KEY&lt;/span&gt; (nick),&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;CONSTRAINT &lt;/span&gt;tienda_empleado &lt;span style="color: rgb(0, 0, 153);"&gt;FOREIGN KEY&lt;/span&gt; (fk_tienda)&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  REFERENCES &lt;/span&gt;tienda (id) &lt;span style="color: rgb(0, 0, 153);"&gt;MATCH SIMPLE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  ON UPDATE NO ACTION ON DELETE NO ACTION&lt;/span&gt;&lt;br /&gt;)&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Luego de esto nos dirigimos a  nuestro Netbeans y creamos un proyecto "Java Application", creamos el nombre que nos plazca en mi caso le coloque JPAejemplo, incluso deje que el Netbeans me creara una clase con el metodo main que es alli donde mostrare su uso.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SSI1Hco7cYI/AAAAAAAABco/0v56x-cDlZU/s1600-h/NuevoProyecto.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 184px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SSI1Hco7cYI/AAAAAAAABco/0v56x-cDlZU/s320/NuevoProyecto.PNG" alt="" id="BLOGGER_PHOTO_ID_5269832916040118658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Luego de esto nos vamos a la pestana de "servicios" y creamos una nueva conexion a una base de datos, lo bueno de usar &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; es que ya trae el driver para &lt;a href="http://krypto84sv.blogspot.com/search/label/postgresql"&gt;PostgreSQL&lt;/a&gt; o si se desea tambien &lt;a href="http://krypto84sv.blogspot.com/search/label/mysql"&gt;MySQL&lt;/a&gt;, si se esta usando algun otro como SQL Server, Oracle, SyBase, etc., es necesario agregarlo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para crear la nueva conexion hacemos clic derecho sobre el nodo que dice "Databases" en la pestana de servicios, y elegir la opcion "New Connection" del menu emergente. Ingresamos los datos necesarios para pegarnos a nuestra base de datos y damos aceptar.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SSI22PTEs5I/AAAAAAAABcw/yegWxufHI3Q/s1600-h/NuevaConexion.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 216px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SSI22PTEs5I/AAAAAAAABcw/yegWxufHI3Q/s320/NuevaConexion.PNG" alt="" id="BLOGGER_PHOTO_ID_5269834819424269202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ya teniendo nuestra conexion abierta procedemos a crear nuestros objetos de reglas del negocio persistentes.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Para ello damos clic derecho sobre el proyecto, elegir nuevo y dar clic en la opcion "Entity Classes from Database", aparecera un asistence para la creacion de nuestros objetos persistentes.&lt;br /&gt;&lt;br /&gt;El primer paso es elegir la conexion que creamos, para luego escoger las tablas que estaran involucradas.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SSI3u9kCI3I/AAAAAAAABc4/EkpKfuAaXiM/s1600-h/ElegirConexion.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 210px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SSI3u9kCI3I/AAAAAAAABc4/EkpKfuAaXiM/s320/ElegirConexion.PNG" alt="" id="BLOGGER_PHOTO_ID_5269835793916109682" border="0" /&gt;&lt;/a&gt;Luego dar siguiente el asistente nos preguntara el nombre que le daremos a nuestras clases asi como tambien el paquete donde las encapsularemos.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SSI4OrdMC4I/AAAAAAAABdA/hJo143X7-Zw/s1600-h/CrearUnidadPersistencia.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 210px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SSI4OrdMC4I/AAAAAAAABdA/hJo143X7-Zw/s320/CrearUnidadPersistencia.PNG" alt="" id="BLOGGER_PHOTO_ID_5269836338811374466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Notese hay una alerta la cual indica que no hemos creado una unidad de persistencia debemos crearla para poder proseguir, asi que hacemos clic en el boton "Create Persistence Unit".&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SSI5KJKs-gI/AAAAAAAABdI/2UXjmyKwXys/s1600-h/PU.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 154px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SSI5KJKs-gI/AAAAAAAABdI/2UXjmyKwXys/s320/PU.PNG" alt="" id="BLOGGER_PHOTO_ID_5269837360399186434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;En la ventana de dialogo por lo general no se toca simplemente lo dejamos como esta siempre recordando el nombre de la unidad de persistencia que en este caso se llamara "JPAejemploPU", que luego la utilizaremos pero eso sera solamente una vez.&lt;br /&gt;&lt;br /&gt;Ya generada la unidad de persistencia precionaremos el boton finalizar. Si seguimos los pasos tal cual como lo he indicado debemos tener dos clases creadas una llamada "Empleado" y la otra "Tienda".&lt;br /&gt;&lt;br /&gt;Ahora para poder continuar debemos tener claro el tipo de dato que son las llaves primarias de las dos tablas que creamos en el caso de la tabla Tienda su llave primaria es de tipo "Serial" es equivalente a la opcion autoincrement de &lt;a href="http://krypto84sv.blogspot.com/search/label/mysql"&gt;MySQL&lt;/a&gt; o IDENTITY de SQL Server.&lt;br /&gt;&lt;br /&gt;Teniendo claro eso definimos la forma en la clase Tienda de como se generara el codigo primario cuando se indique que queremos realizar por decirlo asi un insert.&lt;br /&gt;&lt;br /&gt;En la seccion del campo Id de la clase Tienda debemos agregar lo siguiente:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;GeneratedValue(strategy=GenerationType.IDENTITY)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esto se coloca despues de la anotacion "Column" del campo Id, que debe quedar asi:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;@Id&lt;br /&gt;@Column(name = "id", nullable = false)&lt;br /&gt;@GeneratedValue(strategy=GenerationType.IDENTITY)&lt;br /&gt;private Integer id;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No hay que olvidar agregar los respectivos import.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import javax.persistence.GeneratedValue;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import javax.persistence.GenerationType;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con esto que se le agrego a la clase indicamos la forma de generar el valor para el campo Id en cada insert.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ese tipo de generacion aplica para base de datos &lt;a href="http://krypto84sv.blogspot.com/search/label/mysql"&gt;MySQL&lt;/a&gt;, SQL Server, Sybase, &lt;a href="http://krypto84sv.blogspot.com/search/label/postgresql"&gt;PostgreSQL&lt;/a&gt; (cuando trata de campos de tipo serial).&lt;br /&gt;&lt;br /&gt;Pero cuando usamos secuencias se debe utilizar otro tipo de generacion de valores, como es el caso para Oracle, que en otro post lo explicare con mas detalle.&lt;br /&gt;&lt;br /&gt;Pero bien no basta con solo agregar eso a la clase, tambien es necesario crear nuestras "Consultas nombradas", por esta caracteristica es que me gusto bastante esto del JPA, ya que es bastante, bastante flexible.&lt;br /&gt;&lt;br /&gt;Creamos una simple para mostrar todos los empleados, ahora procedemos a editar la clase Empleado y en la anotacion "NamedQueries" agregamos la nuestra tan simple como esto:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;@NamedQuery(name="Empleado.verTodos", query="SELECT e FROM Empleado e")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Que al final debe quedar asi:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold;"&gt;@NamedQueries({&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;@NamedQuery(name="Empleado.verTodos", query="SELECT e FROM Empleado e"),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;@NamedQuery(name = "Tienda.findById", query = "SELECT t FROM Tienda t WHERE t.id = :id"), @NamedQuery(name = "Tienda.findByDescripcion", query = "SELECT t FROM Tienda t WHERE t.descripcion = :descripcion")})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;Ya hecho todo esto, pasamos a la parte mas interesante, que es utilizar nuestras clases ya configuradas, para ello creamos dos clases mas para la manipulacion de las ya antes mencionadas.&lt;br /&gt;&lt;br /&gt;Una la llamaremos ControlEmpleado.java y la otra ControlTienda.java&lt;br /&gt;&lt;br /&gt;El objetivo de estas sera mostrar consultar, agregar, eliminar o modificar un objeto en especifico.&lt;br /&gt;&lt;br /&gt;Pero para no hacer mas largo este post de lo que ya esta por que me estoy cagando del sueno solo mostrare como mostrar los resultados de una consulta, y realizar un insert.&lt;br /&gt;&lt;br /&gt;Pues bien para realizar un insert nos vamos a la clase ControlTienda y agregamos el siguiente metodo:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;public void insertPrueba() {&lt;br /&gt;EntityManagerFactory emf=Persistence.createEntityManagerFactory("JPAejemploPU");&lt;br /&gt;EntityManager em=emf.createEntityManager();&lt;br /&gt;&lt;br /&gt;Tienda nueva = new Tienda();&lt;br /&gt;nueva.setDescripcion("Otra tienda");&lt;br /&gt;&lt;br /&gt;em.getTransaction().begin();&lt;br /&gt;em.persist(nueva);&lt;br /&gt;em.getTransaction().commit();&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Eso es todo, lo mas correcto hubiera sido que el metodo recibiera una instancia de tienda y luego por medio de JPA se realizara el insert, pero el punto era mostrar como se hace.&lt;br /&gt;&lt;br /&gt;Ahora como mostramos los registros? pues es tambien muy sencillo, y eso haciendo uso de nuestra consulta nombrada.&lt;br /&gt;&lt;br /&gt;Creamos otro metodo en la clase ControlEmpleado, que devuelva un arreglo de Empleados.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public Empleado[] getEmpleados() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;EntityManagerFactory emf=Persistence.createEntityManagerFactory("JPAejemploPU");&lt;br /&gt;EntityManager em=emf.createEntityManager();&lt;br /&gt;&lt;br /&gt;Query q = em.createNamedQuery("Empleado.verTodos");&lt;br /&gt;&lt;br /&gt;return (Empleado[]) q.getResultList.toArray(new Empleado[0]);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ya con esto desde el metodo main hacemos un recorrido por los registros que nos devuelva nuestro metodo.&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Empleado[] empleados = new ControlEmpleado().getEmpleados();&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;for (int i= 0 ;i &lt;empleados.length;&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;System.out.println(empleados[i].getNombre()+ " trabajo en "+empleados[i].getTienda().getDescripcion());&lt;/span&gt;&lt;/empleados.length;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Y eso es todo, espero poder aportar mas con lo que he quedado pendiente en este post, saludos marachitos.&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&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/4234304323727536894-7826368958824071456?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/7826368958824071456/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=7826368958824071456" title="4 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7826368958824071456?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7826368958824071456?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2008/11/introduciendo-al-uso-de-persistencia-de.html" title="Introduciendo al uso de persistencia de datos JPA" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/SSIwHIf7S_I/AAAAAAAABcg/uXCAn24Z1qA/s72-c/Java-persistence.PNG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry></feed>
