<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7773337355144261799</id><updated>2011-09-21T08:31:59.709-07:00</updated><category term='Apache Directory Studio'/><category term='Java'/><category term='LDAP'/><category term='OpenDS'/><title type='text'>Detalles</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gilflores.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-80880556635247005</id><published>2011-09-21T08:13:00.000-07:00</published><updated>2011-09-21T08:31:59.740-07:00</updated><title type='text'>JSF 2.0 El momento ha llegado</title><content type='html'>&lt;span style="font-family: trebuchet ms;"&gt;Por fin nos hemos decido a retomar la tecnología de JSF 2.0 evaluando ICE Faces 2.0.2 (Ya que con el 2.0 no nos fue muy bien) y PrimeFaces, para poder decidir cual es mejor para nuestros proyectos. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Es necesario evolucionar y para lograrlo debemos considerar:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: trebuchet ms;"&gt;La migración de nuestras aplicaciones actuales&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Nuestras aplicaciones requieren de servidores con una versión en específico debido a que utilizamos JPA 1.0 y ICE Faces 1.8, por lo cual para producción utilizamos Glassfish 2.1 y para desarrollo Tomcat 6.0. Por lo tanto si deseamos implementar las nuevas tecnologías será necesario utilizar:&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: trebuchet ms;"&gt;&lt;li&gt;Glassfish 3&lt;/li&gt;&lt;li&gt;Tomcat 7.0 para desarrollo&lt;/li&gt;&lt;li&gt;JSF 2.0&lt;/li&gt;&lt;li&gt;JPA 2.0&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ICE Faces 2.0&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: trebuchet ms;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-80880556635247005?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/80880556635247005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/80880556635247005'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2011/09/jsf-20-el-momento-ha-llegado.html' title='JSF 2.0 El momento ha llegado'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-1948580616045543610</id><published>2011-09-21T08:01:00.000-07:00</published><updated>2011-09-21T08:12:42.200-07:00</updated><title type='text'>Avanzar</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;La tecnología lleva un paso arrollador y para las personas que buscamos utilizar un poco, resulta díficil estar al día. Ya sea porque:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-family: trebuchet ms;"&gt;&lt;li&gt;No hay proyectos que los lleven a hacer,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Los proyectos actuales tienen muchos cambios y es díficil migrarlos sin impactar a la organización&lt;/li&gt;&lt;li&gt;Los líderes organizacionales no creen en la nueva tecnología y responden al reto: ¿Por qué cambiar ahora? si lo que tenemos nos da resultados&lt;/li&gt;&lt;li&gt;No se cuenta con un plan de capacitación para los desarrolladores de la empresa, seguirán utilizando versiones anteriores por el resto de su vida organizacional.&lt;/li&gt;&lt;li&gt;El implementar tecnologías nuevas tiene un costo, ¿Cuál es el beneficio de cambiar?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:trebuchet ms;"&gt;Y asi como estas razones podemos encontrar cientos, sin embargo ¿qué es lo que nos debe mover a cambiar nuestros sistemas o aplicaciones corporativas? Podemos decir:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Q&lt;span style="font-family:trebuchet ms;"&gt;ue al paso que avanza la tecnología la infraestructura que soporta nuestras aplicaciones se volverá obsoleta&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Migrar de la versión anterior a una actual  quizás sea más difícil y requiera una inversión mayor.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;El esfuerzo para los desarrolladores será mayor porque no están involucrados en las nuevas tecnologías.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;" &gt;El mantenimiento de las aplicaciones actuales y los problemas en la infraestructura se volverán recurrrentes y los desarrolladores no serán capaces de implementar nuevos proyectos.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Los razones y los problemas antes descritos nos llevan a pensar en que es importante desarrollar un plan de evolución tecnológica para nuestra organización. El plan deberá se evaluado de manera continua para detectar los riesgos de la infraestructura actual y los beneficios y estabilidad de las nuevas corrientes tecnológicas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-1948580616045543610?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/1948580616045543610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/1948580616045543610'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2011/09/avanzar.html' title='Avanzar'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-5921954089982661515</id><published>2010-03-15T21:59:00.001-07:00</published><updated>2010-03-15T21:59:25.698-07:00</updated><title type='text'>Invictus</title><content type='html'>Black as the Pit from pole to pole,&lt;br /&gt;I thank whatever gods may be&lt;br /&gt;For my unconquerable soul.&lt;br /&gt;&lt;br /&gt;In the fell clutch of circumstance&lt;br /&gt;I have not winced nor cried aloud.&lt;br /&gt;Under the bludgeonings of chance&lt;br /&gt;My head is bloody, but unbowed.&lt;br /&gt;&lt;br /&gt;Beyond this place of wrath and tears&lt;br /&gt;Looms but the Horror of the shade,&lt;br /&gt;And yet the menace of the years&lt;br /&gt;Finds, and shall find, me unafraid.&lt;br /&gt;&lt;br /&gt;It matters not how strait the gate,&lt;br /&gt;How charged with punishments the scroll.&lt;br /&gt;I am the master of my fate:&lt;br /&gt;I am the captain of my soul.&lt;br /&gt;&lt;br /&gt;William Ernest Henley&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-5921954089982661515?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/5921954089982661515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/5921954089982661515'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2010/03/invictus.html' title='Invictus'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-5874504460095257148</id><published>2010-03-15T21:58:00.001-07:00</published><updated>2010-03-15T21:58:41.662-07:00</updated><title type='text'>ES - Recordar</title><content type='html'>Dios:&lt;br /&gt;&lt;br /&gt;Llevo injurias a cuestas,&lt;br /&gt;He de ofrecer disculpas,&lt;br /&gt;y siempre he de dar perdon,&lt;br /&gt;&lt;br /&gt;Si mis amigos caen uno a uno,&lt;br /&gt;Y sus caminos se separan del mio,&lt;br /&gt;Yo siguiré mi destino.&lt;br /&gt;&lt;br /&gt;Siempre fiel a mis principios,&lt;br /&gt;Siempre fiel a mi ideal,&lt;br /&gt;Y asi he de seguir hasta el final.&lt;br /&gt;&lt;br /&gt;Si la desesperación llega a mi oido&lt;br /&gt;y la confusión nubla mi mente,&lt;br /&gt;La fuerza de mi corazón queda latente.&lt;br /&gt;&lt;br /&gt;Aún cuando mis brazos flaqueen&lt;br /&gt;y una tormenta caiga,&lt;br /&gt;Mi alma no se quebranta.&lt;br /&gt;&lt;br /&gt;Aun cuando la noche opaque mi vista,&lt;br /&gt;Que la lluvia detenga mi paso,&lt;br /&gt;Mi espiritu no se cansa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-5874504460095257148?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/5874504460095257148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/5874504460095257148'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2010/03/es-recordar.html' title='ES - Recordar'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-470099620210062118</id><published>2010-03-12T10:04:00.000-08:00</published><updated>2010-03-12T10:16:59.920-08:00</updated><title type='text'>Mini Analizador de Puertos en Java</title><content type='html'>El siguiente código permite realizar una busqueda de puertos en un segmento de Red. El programa es muy sencillo y no cuenta con interfaz gráfica. Su objetivo es realizar un mostrar el uso básico de conexión de Sockets.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Clase IP&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;public class IP {&lt;br /&gt;&lt;br /&gt;//189.231.254.21&lt;br /&gt;&lt;br /&gt;private int octeto1;&lt;br /&gt;private int octeto2;&lt;br /&gt;private int octeto3;&lt;br /&gt;private int octeto4;&lt;br /&gt;&lt;br /&gt;public IP(int octeto1, int octeto2, int octeto3,int octeto4) {&lt;br /&gt;this.octeto1 = octeto1;&lt;br /&gt;this.octeto2 = octeto2;&lt;br /&gt;this.octeto3 = octeto3;&lt;br /&gt;this.octeto4 = octeto4;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int getOcteto1() {&lt;br /&gt;return octeto1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setOcteto1(int octeto1) {&lt;br /&gt;this.octeto1 = octeto1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int getOcteto2() {&lt;br /&gt;return octeto2;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setOcteto2(int octeto2) {&lt;br /&gt;this.octeto2 = octeto2;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int getOcteto3() {&lt;br /&gt;return octeto3;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setOcteto3(int octeto3) {&lt;br /&gt;this.octeto3 = octeto3;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int getOcteto4() {&lt;br /&gt;return octeto4;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setOcteto4(int octeto4) {&lt;br /&gt;this.octeto4 = octeto4;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Permite incrementar el ip en una unidad&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;public void incrementar() {&lt;br /&gt;this.octeto4 ++;&lt;br /&gt;if ( octeto4 == 256) {&lt;br /&gt; this.octeto4 = 0;&lt;br /&gt; this.octeto3 ++;&lt;br /&gt; if ( octeto3 == 256) {&lt;br /&gt;  this.octeto3 = 0;&lt;br /&gt;  this.octeto2 ++;&lt;br /&gt;  if ( octeto2 == 256) {&lt;br /&gt;   this.octeto2 = 0;&lt;br /&gt;   this.octeto3 ++;&lt;br /&gt;   if ( octeto1 == 256) {&lt;br /&gt;    this.octeto1 = 0;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Valida si el ip que le llega es mayor que el ip actual&lt;br /&gt;* @param ip&lt;br /&gt;* @return&lt;br /&gt;*/&lt;br /&gt;public boolean isMenor(IP ip) {&lt;br /&gt;if ( this.octeto1 &gt; ip.getOcteto1() ) {&lt;br /&gt; return false;&lt;br /&gt;}&lt;br /&gt;if ( this.octeto2 &gt; ip.getOcteto2() ) {&lt;br /&gt; return false;&lt;br /&gt;}&lt;br /&gt;if ( this.octeto3 &gt; ip.getOcteto3() ) {&lt;br /&gt; return false;&lt;br /&gt;}&lt;br /&gt;if ( this.octeto4 &gt; ip.getOcteto4() ) {&lt;br /&gt; return false;&lt;br /&gt;}&lt;br /&gt;return true;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String toString() {&lt;br /&gt;return octeto1 + "." + octeto2 + "." + octeto3 + "." + octeto4;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PortScanner&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/**&lt;br /&gt; * Realiza el escaneo de IPS&lt;br /&gt; * @author zeneslev&lt;br /&gt; */&lt;br /&gt;public class PortScanner {&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Reliza el scan en un desde un IP inicial hasta el IP de fin, buscando en&lt;br /&gt;  * un puerto en particular.&lt;br /&gt;  * @param inicio&lt;br /&gt;  * @param fin&lt;br /&gt;  */&lt;br /&gt; public void scan(IP inicio, IP fin) {&lt;br /&gt;  // Inicia la iteraci&amp;Atilde;&amp;sup3;n desde el ip inicio hasta el fin  &lt;br /&gt;  while ( inicio.isMenor(fin)) {&lt;br /&gt;   Socket s = new Socket(  );&lt;br /&gt;   try {&lt;br /&gt;    // Realiza la conexi&amp;Atilde;&amp;sup3;n al puerto 8080,  esperando 5000 ms para&lt;br /&gt;    // el timeout&lt;br /&gt;    s.connect(new InetSocketAddress(inicio.toString(),8080) , 5000);&lt;br /&gt;    System.out.println(&amp;quot; + &amp;quot; + inicio + &amp;quot; OK &amp;quot;);&lt;br /&gt;    inicio.incrementar();&lt;br /&gt;    //Cierra el socket&lt;br /&gt;    s.close();&lt;br /&gt;   } catch (IOException e) {&lt;br /&gt;    &lt;br /&gt;    System.out.println(&amp;quot; - &amp;quot; + inicio + &amp;quot; FALLO &amp;quot; + e.getMessage() );&lt;br /&gt;    inicio.incrementar();&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Prueba el c&amp;Atilde;&amp;sup3;digo&lt;br /&gt;  * @param args&lt;br /&gt;  */&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  IP inicio = new IP(189,231,254,1);&lt;br /&gt;  IP fin = new IP(189,231,254,254);&lt;br /&gt;  PortScanner p = new PortScanner();&lt;br /&gt;  p.scan(inicio, fin);&lt;br /&gt; &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-470099620210062118?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/470099620210062118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/470099620210062118'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2010/03/mini-analizador-de-puertos-en-java.html' title='Mini Analizador de Puertos en Java'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-1609927242411375299</id><published>2010-03-08T10:49:00.000-08:00</published><updated>2010-03-08T11:03:38.333-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LDAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache Directory Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenDS'/><title type='text'>LDAP con OpenDS 2.2</title><content type='html'>Hace ya algún tiempo trabajé con la Integración del &lt;a href="http://www.opends.org/"&gt;OpenDS&lt;/a&gt; y &lt;a href="https://opensso.dev.java.net/"&gt;OpenSSO&lt;/a&gt;, para complir generar las bases de una plataforma empresarial orientada a Servicios. En aquella ocasión el OpenSSO resulto un poco confuso y un poco dificil de usar, sobre todo sin estar familirizado.&lt;br /&gt;&lt;br /&gt;Por otro lado el OpenDS fue una herramienta facil de instalar y de usar, claro está requeriamos de un cliente externo para el control de LDAP, por lo cual utilizamos el &lt;a href="http://directory.apache.org/studio/"&gt;Apache Directory Studio&lt;/a&gt;, (el cual como adivinaran es Libre).  Una vez que se instaló el OpenDS y el Apache Directory Studio, nos fue posible realizar pruebas para poder autenticar usuarios en el LDAP y no en una base de datos.&lt;br /&gt;&lt;br /&gt;Un poco de tiempo después y gracias al Libro de Core Java, Volumen II  en su octava Edición, nos fue posible poder realizar operaciones de Escritura y de Lectura al LDAP utilizando unicamente el JSDK, sin necesidad de librerias externas como las de Novell.&lt;br /&gt;&lt;br /&gt;En la actualidad el OpenDS a mejorado mucho tanto en rendimiento como en la imagen de su administrador, cuenta con muchas de las características que tienen la mayoria de los LDAP, y para los usuarios poco experimientados es una buena alternativa para poder utilizar este tipo de servicios de Directorio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-1609927242411375299?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/1609927242411375299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/1609927242411375299'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2010/03/ldap-con-opends-22.html' title='LDAP con OpenDS 2.2'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-1781208731228614389</id><published>2010-02-24T12:00:00.000-08:00</published><updated>2010-02-24T12:02:22.823-08:00</updated><title type='text'>Sakai herramienta de administración de Cursos y más</title><content type='html'>Es una herramienta para administración de Cursos al estilo Moodle, sin embargo esta desarrollada en Java y cuenta con algunas aplicaciones interesantes. Por tanto es bueno verificar sus capacidades si requieren de herramientas para administración de Cursos.&lt;p&gt;&lt;br /&gt;Si deseamos ver una comparación entre Sakai y Moodle podemos entrar a la siguiente dirección: &lt;a href="http://www.zacker.org/sakai-project-vs-moodle"&gt;Comparación Sakai VS Moodle&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Si requieren más información de sakai puedes entrear a &lt;a href="http://sakaiproject.org/"&gt;http://sakaiproject.org/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-1781208731228614389?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/1781208731228614389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/1781208731228614389'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2010/02/sakai-herramienta-de-administracion-de.html' title='Sakai herramienta de administración de Cursos y más'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-8285842100312186319</id><published>2008-02-26T13:29:00.001-08:00</published><updated>2008-02-26T13:29:56.797-08:00</updated><title type='text'></title><content type='html'>Podemos ir a muchos lugares, sin encontrar un camino claro,&lt;br /&gt;Encontrar un camino claro quizás es una utopía que no debemos seguir.&lt;br /&gt;No basta con querer cambiar al mundo, si no podemos cambiarnos a nosotros mismos&lt;br /&gt;No basta con creer que tenemos la razón si no somos capaces de escuchar a los demas&lt;br /&gt;No podemos decirnos, todos los días no, para no sofocar la luz de nuestra vida&lt;br /&gt;Es necesarios ser flexibles, sonreir y esforzarnos día a día para dejar los fastasmas atrás,&lt;br /&gt;Un fantasma de vida, te acaba, te deprime y lentamente va consumiendo tu sonrisa&lt;br /&gt;Un fantasma de vida, no es más que dejar algo pendiente que no podrá ser jamas&lt;br /&gt;Un guerrero de la luz, requiere aprender por las mañanas que la vida seguirá y que tiene que terminar&lt;br /&gt;Un guerrero de la luz, debe saber cuando retirarse y disfrutar&lt;br /&gt;Un guerrero de la luz, debe aprender a aceptar las derrotas y las caidas&lt;br /&gt;Un guerrero de la luz, debe dejar de pensar en que será de su vida y empezar a actuar.&lt;br /&gt;Un guerrero de la luz existe si desea luchar una vez más,&lt;br /&gt;Mi Dios protegeme una vez más y muestrame el camino que tienes preparado para mi.&lt;br /&gt;Te lo pido de corazón.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;Anonimo,&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/7773337355144261799-8285842100312186319?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/8285842100312186319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/8285842100312186319'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2008/02/podemos-ir-muchos-lugares-sin-encontrar.html' title=''/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-4986232799175995448</id><published>2007-11-06T08:29:00.000-08:00</published><updated>2007-11-06T08:31:04.613-08:00</updated><title type='text'>Frases - Escuela</title><content type='html'>En el momento que tanto profesores como alumnos dejen de quejarse de que no tienen tiempo o no hay tiempo, en ese momento se mejorará la transferencia de conocimiento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-4986232799175995448?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/4986232799175995448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/4986232799175995448'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/11/frases-escuela.html' title='Frases - Escuela'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-151320522750449222</id><published>2007-11-01T20:03:00.000-07:00</published><updated>2007-11-01T20:08:46.551-07:00</updated><title type='text'>Excelentes Frases</title><content type='html'>&lt;span style="font-family:Verdana;font-size:85%;"&gt;Sólo cuando la mente         está libre del deseo de llegar a ser algo, de obtener un         resultado y, en consecuencia, está libre de temor, puede         hallarse en un estado de completa quietud y silencio. Sólo         entonces es posible esa creatividad que es la realidad         misma.&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Krishnamurti&lt;/span&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/7773337355144261799-151320522750449222?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/151320522750449222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/151320522750449222'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/11/excelentes-frases.html' title='Excelentes Frases'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-3325973561628924409</id><published>2007-07-28T09:06:00.000-07:00</published><updated>2007-07-28T10:21:03.228-07:00</updated><title type='text'>NetBeans con Esteroides</title><content type='html'>En muchas ocasiones comente que Netbeans era un Editor de Java menos poderoso que eclipse y JDeveloper, sin embargo hoy en día NetBeans con el apoyo de Sun se ha convertido en un editor de primera clase al soportar:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Swing&lt;/li&gt;&lt;li&gt;Java Server Faces&lt;/li&gt;&lt;li&gt;Struts 1.2.9&lt;/li&gt;&lt;li&gt;Visual Web Pack&lt;/li&gt;&lt;li&gt;JPA con Hibernate y Top Link&lt;/li&gt;&lt;li&gt;UML&lt;/li&gt;&lt;li&gt;BPEL&lt;/li&gt;&lt;li&gt;Web Services (Sun Application Server 9)&lt;/li&gt;&lt;/ul&gt;Además permite la configuración con varios servidores de aplicaciones y Servlet Engines, para los cuales existen configuración de fabrica con:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tomcat 5.5&lt;/li&gt;&lt;li&gt;JBoss&lt;/li&gt;&lt;li&gt;Sun AS 9&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-3325973561628924409?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/3325973561628924409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/3325973561628924409'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/07/netbeans-con-esteroides.html' title='NetBeans con Esteroides'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-8900573920146128084</id><published>2007-06-02T08:42:00.000-07:00</published><updated>2007-06-02T08:47:37.149-07:00</updated><title type='text'>Frases-Junio 2007</title><content type='html'>Aqui agrego algunas frases que en ocasiones cito, no sé si vengan de algo que ya he leido, algo que he visto, sólo sé que las digo.&lt;br /&gt;&lt;br /&gt;Si quieres que alguien aprenda, tienes que estar ahi para el momento en que te necesite y ser paciente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-8900573920146128084?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/8900573920146128084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/8900573920146128084'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/06/frases-junio-2007.html' title='Frases-Junio 2007'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-3077168539364567052</id><published>2007-05-20T13:49:00.000-07:00</published><updated>2007-05-20T14:21:15.702-07:00</updated><title type='text'>ES-Senderos</title><content type='html'>Para muchos es fácil catalogar a las personas, vasta con solo mirarle, la ropa, los zapatos o el peinado, sin embargo porque les resulta tan difícil observar la mirada y analizar sus expresiones.&lt;br /&gt;&lt;br /&gt;Aun es tiempo de que no puedo simplemente mirar el exterior y dejar de hurgar en los ojos y expresiones del rostro. Quiero seguir pensando que las vivencias y las cicatrices de nuestra vida se llevan en la mirada. Deseo recordar que ese dolor que habito nuestra vida se cicatriza en nuestro corazón y nos hace ser fuertes encontrando: una razón que llene de luz nuestra sonrisa, un temple que no se inmuta ante las inclemencias temporales de la vida. &lt;br /&gt;&lt;br /&gt;He buscado por muchos caminos el dolor que mantenga mi espíritu tranquilo, brindando paz a esas personas con las que cruzo palabras o miradas. Sigo un camino que parece guiarme sin una dirección clara, sin embargo las sensaciones y emociones que la vida me da, me hacen sentir como la sangre fluye por mis venas, me demuestran como puedo enojarme, gritar y reír.&lt;br /&gt;&lt;br /&gt;Cada mañana me levanto y no siquiera observo si mi mirada es mas tranquila, lo único que hago es correr porque siempre hay un lugar a donde llegar y en ocasiones no es un lugar como el que busca mi corazón. Sigo la monotonía de un día lleno de emociones que mi corazón no busca, sigo un día de aventuras y peripecias que la vida me ofrece para darme cuenta cual es mi razón de hacer las cosas, cual es mi razón de continuar y no quedarme en el mismo lugar que el día anterior. Cada día es un paso breve en una vida que es tan corta como no imaginamos y tan larga como la aprovechemos.&lt;br /&gt;&lt;br /&gt;Los días pasan uno tras otro como si fueran segundos en aquel viejo reloj que muchos años atrás inicio su marcha sintiendo aquella cálida brisa que la vida nos da.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-3077168539364567052?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/3077168539364567052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/3077168539364567052'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/05/senderos.html' title='ES-Senderos'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-3584531399917701691</id><published>2007-04-25T08:06:00.000-07:00</published><updated>2007-05-13T10:43:32.456-07:00</updated><title type='text'>SSO - OpenSSO y sus Agentes</title><content type='html'>Después de muchos y muchos experimentos logramos hacer funcionar el openSSO y puede decirse que el mayor problema que se nos presentó fue el nombre de dominio. Esto debido a que el sso  utiliza los dominios (.cetechihuahua.gob.mx, .itesm.mx)  para poder generar la cookie y reconocer el servidor que la está solicitando.&lt;br /&gt;&lt;br /&gt;Por lo cual nos fue necesario configurar el servidor de sso con su nombre de dominio real, ejemplo sso.cetechihuahua.gob.mx.&lt;br /&gt;&lt;br /&gt;De está manera reinstalamos el opensso y en la pantalla de configuración le asignamos el nombre de sso.cetechihuahua.gob.mx, en lugar de su dirección IP (10.0.0.xx). Además en está ocasión seleccionamos un cookie domain más acorde a nuestras necesidades ".cetechihuahua.gob.mx"&lt;br /&gt;&lt;br /&gt;Por último la configuración del Tomcat, la hicimos como se nos indica en el artículo: &lt;span style="font-style: italic;"&gt;"Single &lt;a href="http://www.sun.com/bigadmin/features/articles/access_manager_sso.html"&gt;Sign-On Using Sun Java System Access Manager 2005Q4 and Sun Java System Access Manager Policy Agent 2.2".&lt;/a&gt; &lt;/span&gt;&lt;span&gt;Para esté paso nos fue necesario agregar al DNS a la PC que tenía el tomcat, y agregar el &lt;span style="font-weight: bold;"&gt;TomcatProfile &lt;/span&gt;como indica el artículo.&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-3584531399917701691?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/3584531399917701691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/3584531399917701691'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/04/opensso-y-sus-agentes.html' title='SSO - OpenSSO y sus Agentes'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-539069069798424494</id><published>2007-04-20T11:53:00.000-07:00</published><updated>2007-05-13T10:44:58.675-07:00</updated><title type='text'>SSO - Implementando un Login con Java y OpenSSO</title><content type='html'>He iniciado las pruebas con un login de basado en un aplicacion Web, con el objetivo de evaluar el API de OpenSSO y validar si está es una opción factible para el desarrollo de nuestras aplicaciones.&lt;br /&gt;&lt;br /&gt;Antes de Iniciar con estos pasos es necesario saber que es el archivo AMConfig.properties y ver los requisitos del API para clientes. Para más información consultar "&lt;a href="http://docs.sun.com/app/docs/doc/819-4675/6n6qfk0mr?a=view"&gt;How the Client SDK Works&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Una vez que tenemos el  SSO instalado y configurado, procedemos a bajar los APIs para el client SDK en la siguiente dirección: &lt;a href="http://download.java.net/general/opensso/nightly"&gt;http://download.java.net/general/opensso/nightly&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;Creamos nuestro Web Project con eclipse WTP o JDeveloper y copiamos nuestro sso client sdk al directorio WEB-INF/lib.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Creamos nuestra pantalla de log in con la tecnología que preferimos&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Creamos la clase de autenticación&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.util.MissingResourceException;&lt;br /&gt;import java.util.Properties;&lt;br /&gt;&lt;br /&gt;import javax.security.auth.callback.Callback;&lt;br /&gt;import javax.security.auth.callback.NameCallback;&lt;br /&gt;import javax.security.auth.callback.PasswordCallback;&lt;br /&gt;import javax.security.auth.callback.TextOutputCallback;&lt;br /&gt;import javax.security.auth.callback.UnsupportedCallbackException;&lt;br /&gt;&lt;br /&gt;import com.iplanet.am.util.SystemProperties;&lt;br /&gt;import com.sun.identity.authentication.AuthContext;&lt;br /&gt;import com.sun.identity.authentication.spi.AuthLoginException;&lt;br /&gt;&lt;br /&gt;public class Login {&lt;br /&gt;private static final String moduleName = "DataStore";&lt;br /&gt;&lt;br /&gt;private String loginIndexName;&lt;br /&gt;   private String orgName= "opensso";&lt;br /&gt;   private User user;&lt;br /&gt;  &lt;br /&gt;   /**&lt;br /&gt;    * Constructor&lt;br /&gt;    * @param user&lt;br /&gt;    */&lt;br /&gt;   public Login(User user) {&lt;br /&gt;       this.user = user;&lt;br /&gt;       loginIndexName = "http://sso.cetechihuahua.gob.mx:8080/fma";&lt;br /&gt;      &lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   protected AuthContext getAuthContext()&lt;br /&gt;       throws AuthLoginException {&lt;br /&gt;       AuthContext lc = new AuthContext(orgName);&lt;br /&gt;       AuthContext.IndexType indexType = AuthContext.IndexType.MODULE_INSTANCE;&lt;br /&gt;       lc.login(indexType, moduleName);&lt;br /&gt;       debugMessage(loginIndexName + ": Obtained login context");&lt;br /&gt;       return lc;&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   private void addLoginCallbackMessage(Callback[] callbacks)&lt;br /&gt;   throws UnsupportedCallbackException {&lt;br /&gt;       int i = 0;&lt;br /&gt;       try {&lt;br /&gt;           for (i = 0; i &lt; succeed =" false;" callbacks =" null;" callbacks =" lc.getRequirements();" succeed =" true;"&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Creamos un servlet que ejecute la autenticación&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;package sso;&lt;br /&gt;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.util.Properties;&lt;br /&gt;&lt;br /&gt;import javax.security.auth.callback.UnsupportedCallbackException;&lt;br /&gt;import javax.servlet.RequestDispatcher;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;br /&gt;&lt;br /&gt;import com.iplanet.am.util.SystemProperties;&lt;br /&gt;import com.sun.identity.authentication.AuthContext;&lt;br /&gt;import com.sun.identity.authentication.spi.AuthLoginException;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Servlet implementation class for Servlet: SSOLogin&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;public class SSOLogin extends javax.servlet.http.HttpServlet implements&lt;br /&gt; javax.servlet.Servlet {&lt;br /&gt;&lt;br /&gt;static {&lt;br /&gt; System.err.println("Loading properties");&lt;br /&gt; Properties props = new Properties();&lt;br /&gt; props.setProperty("com.iplanet.am.naming.url",&lt;br /&gt;   "http://sso.cetechihuahua.gob.mx:8080/afm/namingservice");&lt;br /&gt; SystemProperties.initializeProperties(props);&lt;br /&gt; System.err.println("Properties Inicializadas");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt; * (non-Java-doc)&lt;br /&gt; *&lt;br /&gt; * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,&lt;br /&gt; *      HttpServletResponse response)&lt;br /&gt; */&lt;br /&gt;protected void doGet(HttpServletRequest request,&lt;br /&gt;  HttpServletResponse response) throws ServletException, IOException {&lt;br /&gt; doPost(request, response);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt; * (non-Java-doc)&lt;br /&gt; *&lt;br /&gt; * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,&lt;br /&gt; *      HttpServletResponse response)&lt;br /&gt; */&lt;br /&gt;protected void doPost(HttpServletRequest request,&lt;br /&gt;  HttpServletResponse response) throws ServletException, IOException {&lt;br /&gt; System.out.println("Autenticando");&lt;br /&gt;&lt;br /&gt; Login login = new Login(new User(request.getParameter("usuario"),&lt;br /&gt;   request.getParameter("password")));&lt;br /&gt; AuthContext lc;&lt;br /&gt; try {&lt;br /&gt;  lc = login.getAuthContext();&lt;br /&gt;  if (login.login(lc)) {&lt;br /&gt;   RequestDispatcher dispatcher = getServletContext()&lt;br /&gt;     .getRequestDispatcher("/firmado.jsp");&lt;br /&gt;   dispatcher.forward(request, response);&lt;br /&gt;  } else {&lt;br /&gt;   RequestDispatcher dispatcher = getServletContext()&lt;br /&gt;     .getRequestDispatcher("/error.jsp");&lt;br /&gt;   dispatcher.forward(request, response);&lt;br /&gt;  }&lt;br /&gt; } catch (AuthLoginException e) {&lt;br /&gt;  e.printStackTrace();&lt;br /&gt; } catch (UnsupportedCallbackException e) {&lt;br /&gt;  e.printStackTrace();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ligas de Interes:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://forum.java.sun.com/thread.jspa?threadID=5054004"&gt;http://forum.java.sun.com/thread.jspa?threadID=5054004&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-539069069798424494?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/539069069798424494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/539069069798424494'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/04/opensso-implementando-un-login-con-java.html' title='SSO - Implementando un Login con Java y OpenSSO'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-5390043528637840439</id><published>2007-04-20T11:36:00.000-07:00</published><updated>2007-05-13T10:42:12.208-07:00</updated><title type='text'>SSO - Gil VS OpenSSO Round 3</title><content type='html'>El openSSO parece ser una solución excelente para problemas de autenticación de usuarios, sin embargo hasta el momento, la configuración y el uso del SSO resultan complejos, ya que utiliza muchos conceptos, la configuración a pesar de ser sencilla requiere que la persona tenga conocimientos de muchos terminos, como DS, LDap, dominios, configuración de servidores, entre otras cosas.&lt;br /&gt;&lt;br /&gt;Hasta el momento la alternativas que conosco para autenticar con el SSO son utilizando un agente y utilizando el API.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Utilizando el Agente&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Los agentes para el SSO son distribuidos por SUN y su labor es monitorear los dominios, contextos o aplicaciones que se encuentran en un server. Por ejemplo si mi aplicación usa Java y está en tomcat, yo instala una aplicación de nombre abs, con el war abs.war. entonces mi url seria: &lt;/p&gt;&lt;p&gt;&lt;a href="http://localhost:8080/abs"&gt;&lt;strong&gt;&lt;em&gt;http://localhost:8080/abs&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;En ese caso si yo configurara el agente para monitorear abs, automanticamente al teclear esta dirección en el navegador, la página sería redireccionada al SSO para autenticarse. Una vez autenticado se regresaría el flujo a mi aplicación y dependiendo de la seguriddad me permitiría acceder a ella. &lt;/p&gt;&lt;p&gt;Los agentes funcionan con muchos servidores, Apache, IIS, WebLogic, Tomcat, etc. por lo cual cuando no utilizamos tecnologías de java, son excelentes.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Utilizando el API&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;El SSO tiene un API de Java que permite establecer conexiones con nuestro servidor de Accesos (Donde está instalado el OpenSSO), Si nosotros queremos tener el control y personalizar la implementación podemos utilizar esta opción además esta opción no requiere de Agentes.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-5390043528637840439?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/5390043528637840439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/5390043528637840439'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/04/gil-vs-opensso-roung-3.html' title='SSO - Gil VS OpenSSO Round 3'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-1009901975206036009</id><published>2007-04-17T09:17:00.000-07:00</published><updated>2007-05-13T10:41:40.908-07:00</updated><title type='text'>SOA - Capítulo I - En Busca de SOA</title><content type='html'>Hasta el día hoy hemos trabajado arduamente sin un objetivo claro y entendible, ya que por mas que investigamos e instalamos openSource nos hemos dado cuenta de que nuestras necesidades sobrepasan por ahora el openSource y estamos intentando organizar nuestros esfuerzos hacia una arquitectura orientada a Servicios y un ambiente federado.&lt;br /&gt;&lt;br /&gt;Posiblemente entender SOA (Service Oriented Arquitecture) resulta sencillo para muchos ya que es un concepto en que muchos procesos de negocios se definen a través de la integración de servicios proporcionados, por uno o más sistemas y por uno o más organizaciones.&lt;br /&gt;&lt;br /&gt;Sin embargo en nuestra región la integración de aplicaciones por medio de SOA es aún un mito ya que como desarrolladores estamos acostumbrados hacer aplicaciones gigantescas que tengan muchos módulos, por lo cual podemos decir que es un conjunto de código en un solo proyecto de implementación.  Una forma de en la que podemos ver este tipo de sistemas se muestra en la siguiente figura:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_fTxnO7borIg/RiT1T7uCA-I/AAAAAAAAAAM/4CcQOMoWFMs/s1600-h/sistemaTradicional.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 434px; height: 207px;" src="http://bp3.blogger.com/_fTxnO7borIg/RiT1T7uCA-I/AAAAAAAAAAM/4CcQOMoWFMs/s320/sistemaTradicional.png" alt="" id="BLOGGER_PHOTO_ID_5054434404613620706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Sin embargo para desarrollar esté tipo de aplicaciones se requiere al menos 4 o 5 desarrolladores que lo implementen, y en muchas ocasiones no existe documentación, un diseño previo y menos una arquitectura, lo que hace que estos sistemas sean en extremo complejos, difíciles de mantener y dependen de las personas que los desarrollan. Por estos motivos a los arquitectos de soluciones y aplicaciones les resulta fundamental evaluar este tipo de situaciones y al ser un problema muy complejo se han buscado muchas maneras como los objetos COM, EJBs, CORBA, etc. hasta que se ha llegado a SOA, que resuelve muchos de los problemas de integración de aplicaciones. Posteriormente se irá describiendo las características de SOA a medida que las vayamos descubriendo y entendiendo.&lt;br /&gt;&lt;br /&gt;Una arquitectura en SOA tiene una forma como la siguiente:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_fTxnO7borIg/RiUCTLuCA_I/AAAAAAAAAAU/G_meyTvFH-A/s1600-h/soa.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_fTxnO7borIg/RiUCTLuCA_I/AAAAAAAAAAU/G_meyTvFH-A/s320/soa.jpg" alt="" id="BLOGGER_PHOTO_ID_5054448685379879922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Por otro lado hemos hablado de un ambiente federado y es una pregunta un tanto difícil de entender por el momento diremos que federación es la capacidad de poder utilizar servicios de muchas organizaciones, dominios o servidores como si fueran uno.&lt;br /&gt;&lt;br /&gt;Si deseas tener una perspectiva general de Identity Management ver está liga:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sun.com/software/media/flash/demo_federation/index.html?intcmp=30%20"&gt;Federation&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sun.com/software/media/flash/tour_soa/index.html?intcmp=75"&gt;&lt;span style="text-decoration: underline;"&gt;SOA&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-1009901975206036009?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/1009901975206036009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/1009901975206036009'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/04/captulo-i-en-busca-de-soa.html' title='SOA - Capítulo I - En Busca de SOA'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_fTxnO7borIg/RiT1T7uCA-I/AAAAAAAAAAM/4CcQOMoWFMs/s72-c/sistemaTradicional.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-3347008166255600401</id><published>2007-04-14T11:08:00.000-07:00</published><updated>2007-04-14T11:14:08.049-07:00</updated><title type='text'>ES - Razones</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;La monotonía y el trabajo diario nos fuerzan a pensar solo en lo que hacemos en DIA, olvidando a quienes están a nuestro alrededor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;Es tan drástica la monótona, es tan esclavizante el trabajo que solo vivimos para ellos y no ellos para hacernos felices a nosotros, recordemos como miramos el reloj cuando están a punto de ser las 3:00, las 4:00, o cualquier hora a la que se acabe nuestro trabajo. ¿Por qué simplemente puedo disfrutar el día cuando estoy fuera de mi escritorio y alejado de los papeles del trabajo?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;Una vida sin razón es como un laberinto sin salida, una vida en la camínanos, corremos, suplicamos&lt;span style=""&gt;  &lt;/span&gt;sin encontrar una razón &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;Por la cual respiramos, por la cual sonreímos y mucho peor, por la cual amamos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;Una vida sin aceptarse es como caminar en el fuego, creyendo nunca quemarnos, que las llamas que viven en nuestro interior nunca afloraran y nunca despertaremos. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;Desearía saber que es lo que me apasiona, que me da esa fuerza para continuar intentando vivir una y otra vez, una razón por lo cual hago lo que hago y vivo en donde vivo, son desear partir sin desear rezar por la noches y sin escuchar los mensajes que me lleva el viento.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;Como quisiera encontrar la quietud, para saber que es lo que en realidad amo, paso mis días con las ilusiones que dejan los vestigios de la monotonía y el andar diario, sigo el camino que marca el reloj con el avanzar de sus manecilla, sin siquiera preguntarme que me lleva a amar la vida que se me dio.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;Y deambular en una pregunta sin respuesta como lo es ¿Que quiero de mi vida?&lt;o:p&gt;&lt;/o:p&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/7773337355144261799-3347008166255600401?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/3347008166255600401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/3347008166255600401'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/04/es-razones.html' title='ES - Razones'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-611431840850658482</id><published>2007-04-12T22:57:00.001-07:00</published><updated>2007-04-14T11:14:56.245-07:00</updated><title type='text'>ES-Continuar</title><content type='html'>En ocasiones quisiera encontrar el camino para resolver los problemas del mundo exterior, sin embargo lo único que hago es esperar y suspirar, lo único que hago es quedarme sentado, viendo el sol por la mañana y la luna al anochecer.&lt;br /&gt;&lt;br /&gt;Acaso es vida, los días que pasan uno tras otro sin darme cuenta cuando respirar, sin darme cuenta cuando el reloj avanzo 15 horas y dejó el sol atrás.&lt;br /&gt;&lt;br /&gt;Por las noches desearía ser aquel quien voló por los cielos,  subió el Himalaya, camino por la India, vivió en las montañas. o ser aquel que cuando la luna llega está sentado a las orillas del río que escucho  Sidharta y seguir el camino de buda, y tal vez rezar.&lt;br /&gt;&lt;br /&gt;En ocasiones cuando escucho a los pájaros cantar y miro a mi alrededor, todo parece pasar, las palabras fluyen por mis labios y las lagrimas de mi corazón, siento mi respirar, escucho mi conciencia y siento la presencia de Jesús.&lt;br /&gt;&lt;br /&gt;Hoy a mi lado Jesús está, Jesús que con su sonrisa me resista y me muestra su sol. Camino hacia él, pasando a un lado del árbol de mis recuerdos, el campo de los ayeres, el baúl de mis recuerdos... Y me doy cuenta...&lt;br /&gt;&lt;br /&gt;hoy es un día para recordar que Jesús habitó mi corazón, hoy es un día para darme cuenta de que mis tormentos no se comparan con la dicha de mirar el sol, hoy es el día en el cual yo encontraré una razón más para aceptar mis problemas y caminar, hoy es un buen día para darme cuenta de que la vida es muy corta para estar triste, para sufrir y para añorar a quien se fué.&lt;br /&gt;&lt;br /&gt;Hoy es un buen día para abrir mi corazón y sonreír día tras día al sentir el viento, mirar el sol y escuchar a los pájaros cantar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-611431840850658482?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/611431840850658482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/611431840850658482'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/04/continuar.html' title='ES-Continuar'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-3571443982530181203</id><published>2007-04-12T10:38:00.000-07:00</published><updated>2007-04-12T10:46:23.435-07:00</updated><title type='text'>Errores: Struts y los tipos de datos checkbox</title><content type='html'>El error que se muestra a continuación es muy común cuando utilizamos &lt;html:checkbox&gt; y queremos utilizar cadenas en las propiedades del ActionForm.&lt;br /&gt;&lt;br /&gt;En ocasiones queremos abusar de la potencia de un lenguaje como Java cuando utilizamos Struts 1.2.x, sin embargo existen casos en los que eso no es posible como por ejemplo :&lt;br /&gt;&lt;br /&gt;Cuando utilizamos objetos ActionForm y se nos ocurre la grandiosa idea de utilizar variables de tipo String y a esas variables les creamos su métodos set y get, todo parece ser perfecto. Pero si  se nos ocurre la grandiosa idea de crear un método como el siguiente:&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;     * Validates if a turn time is selected&lt;br /&gt;     * @return the turnTimeHistoricChart&lt;br /&gt;     */&lt;br /&gt;    public boolean isTurnTimeHistoricChart() {&lt;br /&gt;        return turnTimeHistoricChart.equals(TRUE);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;teniendo los siguientes métodos tambien:&lt;br /&gt;/**&lt;br /&gt;     * Sets the information for field turnTimeChart&lt;br /&gt;     * @param turnTimeChart the turnTimeChart to set&lt;br /&gt;     */&lt;br /&gt;    public void setTurnTimeChart(String turnTimeChart) {&lt;br /&gt;        this.turnTimeChart = turnTimeChart;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Gets the information ofturnTimeHistoricChart&lt;br /&gt;     * @return the turnTimeHistoricChart&lt;br /&gt;     */&lt;br /&gt;    public String getTurnTimeHistoricChart() {&lt;br /&gt;        return turnTimeHistoricChart;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;Struts puede pensar que el tipo de variable es boolean en lugar de String y nunca asignar el valor que capturamos en el formulario, por lo cual resulta importante no implementar nuestra funcionalidad de está manera.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-3571443982530181203?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/3571443982530181203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/3571443982530181203'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/04/errores-struts-y-los-tipos-de-datos.html' title='Errores: Struts y los tipos de datos checkbox'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7773337355144261799.post-3937340702925747534</id><published>2007-04-07T09:33:00.000-07:00</published><updated>2007-04-07T10:02:40.604-07:00</updated><title type='text'>Intentando Modelar UML desde un IDE</title><content type='html'>Sin darme cuenta, ha pasado mucho tiempo ya desde que he buscado una herramienta que me permita modelar UML desde mi editor de código Eclipse y hasta el momento todos tienen varios problemas puede decirse que el costo es el principal y pues mis requerimientos son muchos:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li style="font-weight: bold;"&gt;Modele Java 5&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Integración con el IDE&lt;/span&gt;: Ssi no se puede integrar que la ingeniería inversa sea sencilla.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Tenga acceso a control de Versiones&lt;/span&gt;: Por ejemplo omondo se veía bastante bien, pero solo la versión de paga tenia acceso a control de versiones.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Que permite el trabajo en equipo&lt;/span&gt;: Muchas herramientas tienen un servidor que permite hacer la fusión de los modelos (Enterprise Architect, Rational Rose Modeler, Visual Paradigm) , otros generan un archivo independiente para cada diagrama (Rational Application Developer, JDeveloper, Omondo).&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Diagramas agradable&lt;/span&gt;: Esta categoría la dominan Rational Aplication Developer, y JDeveloper los caules generan los diagramas mas agradables a la vista.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Facilidad de uso&lt;/span&gt;: Al ser el modelado una actividad que no a todos los desarrolladores agrada, la herramienta debe crear modelos y sus relaciones de una manera sencilla.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Recursos que consume&lt;/span&gt;: La herramienta debe ser ligera y que pueda ser utilizada en una Equipo que tenga desde Pentium 4 y 512MB en RAM, por lo cual herramientas como JDeveloper y Rational Application Developer no son muy buena opción.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Multiplataforma&lt;/span&gt;: La herramienta pueda ejecutarse en las plataformas de Windows y Linux de forma nativa, ya que por ejemplo Enterprise Architect se puede instalar en Linux pero su funcinamiento deja mucho que desear.&lt;/li&gt;&lt;/ul&gt;He visto varias herramientas de diseño, en las cuales  he encontrado detalles importantes y en algunas buena funcionalidad, pero son pocas las que cumplen con la mayoría de los requisitos. algunas de las que he evaluado son:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enterprise Architect&lt;/li&gt;&lt;li&gt;Visual Paradigm&lt;br /&gt;&lt;/li&gt;&lt;li&gt;JDeveloper&lt;/li&gt;&lt;li&gt;Poseidon&lt;/li&gt;&lt;li&gt;Rational Application Developer 6.0&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Omondo&lt;/li&gt;&lt;li&gt;eUML&lt;/li&gt;&lt;li&gt;ArgoUML&lt;/li&gt;&lt;li&gt;Jude&lt;/li&gt;&lt;li&gt;AmaterasUML&lt;/li&gt;&lt;li&gt;StarUML&lt;/li&gt;&lt;li&gt;Rational Rose 7.0&lt;/li&gt;&lt;li&gt;Concept Draw&lt;/li&gt;&lt;li&gt;Smart Draw&lt;/li&gt;&lt;li&gt;Infinidad de plug-ins de eclipse&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Con base a esos criterios, es muy difícil decidir o peor aún una que cumpla con ellos, ya excelentes herramientas como Rational Application Developer y Rational Software Architect 7.0 cumplen con muchos de esos puntos excepto con el rendimiento, RAD a simple vista no soporta Java 1.5, JDeveloper es muy bueno (Pero buscaba algo en eclipse).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7773337355144261799-3937340702925747534?l=gilflores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/3937340702925747534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7773337355144261799/posts/default/3937340702925747534'/><link rel='alternate' type='text/html' href='http://gilflores.blogspot.com/2007/04/intentando-modelar-uml-desde-un-ide.html' title='Intentando Modelar UML desde un IDE'/><author><name>Gil</name><uri>http://www.blogger.com/profile/02967164986261923086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
