<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Sebasjm&#039;s Blog</title>
	<atom:link href="http://sebasjm.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sebasjm.wordpress.com</link>
	<description>Open Source Development</description>
	<lastBuildDate>Fri, 10 Jun 2011 20:56:50 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='sebasjm.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Sebasjm&#039;s Blog</title>
		<link>http://sebasjm.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://sebasjm.wordpress.com/osd.xml" title="Sebasjm&#039;s Blog" />
	<atom:link rel='hub' href='http://sebasjm.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Rio Mendoza</title>
		<link>http://sebasjm.wordpress.com/2009/12/16/rio-mendoza/</link>
		<comments>http://sebasjm.wordpress.com/2009/12/16/rio-mendoza/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 18:11:08 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=231</guid>
		<description><![CDATA[Ahora mismo en el rio Mendoza, sanguchitos y vino de por medio. Posted in social<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=231&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ahora mismo en el rio Mendoza, sanguchitos y vino de por medio.</p>
<p><a href="http://sebasjm.files.wordpress.com/2009/12/foto.jpg"><img src="http://sebasjm.files.wordpress.com/2009/12/foto.jpg?w=509&#038;h=382" alt="" title="foto" width="509" height="382" class="alignnone size-full wp-image-232" /></a></p>
<br />Posted in social  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/231/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=231&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/12/16/rio-mendoza/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>

		<media:content url="http://sebasjm.files.wordpress.com/2009/12/foto.jpg" medium="image">
			<media:title type="html">foto</media:title>
		</media:content>
	</item>
		<item>
		<title>Software G Forces: The Effects of Acceleration</title>
		<link>http://sebasjm.wordpress.com/2009/11/03/software-g-forces-the-effects-of-acceleration/</link>
		<comments>http://sebasjm.wordpress.com/2009/11/03/software-g-forces-the-effects-of-acceleration/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 17:46:41 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[agil]]></category>
		<category><![CDATA[blackduck]]></category>
		<category><![CDATA[blackduck software]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[ieee]]></category>
		<category><![CDATA[kent beck]]></category>
		<category><![CDATA[metodologias]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[wiley]]></category>
		<category><![CDATA[wiley blackwell]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/2009/11/03/software-g-forces-the-effects-of-acceleration/</guid>
		<description><![CDATA[Kent Beck estará dando una conferencia online sobre metodologias Agiles. Es un poco tarde para los interesados en escucharla pero en compensación voy a tratar de resumir lo visto en el siguiente post. La conferencia es libre y gratuita gracias a una colaboración entre IEEE Computer Society, Blackduck Software y Wiley-Blackwell. Extracto: Agile software development [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=223&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Kent_Beck">Kent Beck </a> estará dando una conferencia online sobre metodologias Agiles.<br />
Es un poco tarde para los interesados en escucharla pero en compensación voy a tratar de resumir lo visto en el siguiente post.<br />
La conferencia es libre y gratuita gracias a una colaboración entre <a href="http://www.computer.org/">IEEE Computer Society</a>, <a href="http://www.blackducksoftware.com/">Blackduck Software</a> y <a href="http://www.wiley.com/WileyCDA/Brand/id-35.html">Wiley-Blackwell</a>.<br />
<strong><br />
Extracto</strong>:<br />
Agile software development is generally most valuable when used to reduce the release cycle. The key advantage of agile development is being able to more closely track changing business and market needs. The costs and risks of applying agile development are most productively applied to becoming more responsive.</p>
<p>Assuming you are going to release more frequently, what is likely to happen? In this talk I present sketch quarterly deployment, monthly deployment, weekly deployment, daily deployment, and finally hourly deployment, including the technical, social, and business implications.<br />
<strong>Fecha</strong>: Tuesday, November 3, 2009<br />
<strong>Hora</strong>: 19:00 GMT<br />
<strong>Duración</strong>: 1 hour</p>
<br />Posted in profesional Tagged: agil, blackduck, blackduck software, computer, ieee, kent beck, metodologias, scrum, wiley, wiley blackwell <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/223/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=223&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/11/03/software-g-forces-the-effects-of-acceleration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducción JBoss Seam</title>
		<link>http://sebasjm.wordpress.com/2009/10/29/introduccion-jboss-seam/</link>
		<comments>http://sebasjm.wordpress.com/2009/10/29/introduccion-jboss-seam/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 00:46:53 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[ejb]]></category>
		<category><![CDATA[frba]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[ieee]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[jboss seam]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[presentacion]]></category>
		<category><![CDATA[seam]]></category>
		<category><![CDATA[utn]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/2009/10/29/introduccion-jboss-seam/</guid>
		<description><![CDATA[Posted in profesional Tagged: computer, ejb, frba, hibernate, ieee, j2ee, jboss, jboss seam, jee, jpa, jsf, presentacion, seam, utn<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=220&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<object type='application/x-shockwave-flash' wmode='opaque' data='http://static.slideshare.net/swf/ssplayer2.swf?id=2380079&doc=slidesv1-091029192743-phpapp01' width='510' height='418'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=2380079&doc=slidesv1-091029192743-phpapp01' /><param name='allowFullScreen' value='true' /></object>
<br />Posted in profesional Tagged: computer, ejb, frba, hibernate, ieee, j2ee, jboss, jboss seam, jee, jpa, jsf, presentacion, seam, utn <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/220/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=220&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/10/29/introduccion-jboss-seam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>Experiencia Agil09</title>
		<link>http://sebasjm.wordpress.com/2009/10/29/experiencia-agil09/</link>
		<comments>http://sebasjm.wordpress.com/2009/10/29/experiencia-agil09/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 00:03:35 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[agiles]]></category>
		<category><![CDATA[brasil]]></category>
		<category><![CDATA[agiles2009]]></category>
		<category><![CDATA[florianopolis]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=216</guid>
		<description><![CDATA[En la semana del 6 al 9 octubre tuve la oportunidad de presenciar las charlas de la jornada latinoamericana de Agiles 2009 y el curso de TDD dictado por Naresh Jain. Fue una excelente experiencia, no solo por el valor técnico si no también por la calidad humana y disposición de cada uno de los [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=216&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En la semana del 6 al 9 octubre tuve la oportunidad de presenciar las charlas de la jornada latinoamericana de Agiles 2009 y el curso de TDD dictado por <a href="http://agilefaqs.com/">Naresh Jain</a>. Fue una excelente experiencia, no solo por el valor técnico si no también por la calidad humana y disposición de cada uno de los disertantes y organizadores para satisfacer cada una de las inquietudes.</p>
<p>El curso de TDD fue muy bueno, Naresh demostró la importancia de tener un mecanismo de evaluación constante y automatizado para tener siempre una retroalimentación del estado del producto, aplicó el concepto de TDD con analogías sencillas sin alejarse de los casos reales de desarrollo de software y fue muy pragmático todo el tiempo.<br />
Al finalizar el curso, salí con una idea mucho más clara sobre el significado de Unit Testing, sus beneficios, mitos y limitaciones. Los temas que se tocaron fueron en un principio XP, Pair Programing, Metodologías Agiles, Test Driven Development, Test Driven Design, Code Smells y Automated Refactoring, para después sumar herramientas para aplicar tanto TDD como BDD. Entre cada tema se plantearon cuales son los errores comunes, los patrones de diseño y las implementaciones en diferentes lenguajes: Java, .Net principalmente, pero sin dejar de lado Python, C/C++, Ruby entre otros. Cabe destacar que por la cantidad de los temas tratados, todos los participantes concluimos que el título designado &#8220;Test Driven Development (TDD) and Refactoring&#8221; no era el adecuado, puesto que el mismo no daba a conocer la totalidad de la temática del curso.<span id="more-216"></span><br />
Los seminarios que presencié los días restantes fueron muy variados.<br />
Los mas destacados fueron:<br />
* A cargo de Alejandra Alfonso y Emilio Gutter escuché sobre experiencias en implementaciones de metodologías agiles en un grupo multicultural y remoto.<br />
* Un Coding Dojo y un Testing Dojo, el CO a cargo de Ivan Sanchez y Victor Hugo Germano y el TO a cargo de Jorge Alberto Diz, ambos excelentes.</p>
<p>Todo esto potenciado por la participación de Brian Marick, Diana Larsen, Roy Singham, David Hussman, Joshua Kerievsky, Dave Nicolette y sus respectivos key note, cursos y/o charlas.</p>
<p>En conclusión, una experiencia muy completa desde lo profesional y lo personal de la que no dejé de aprender en cada minuto.</p>
<p>Espero poder sumarme al equipo y vamos por Agiles 2010 empujando los limites tecnológicos de América Latina demostrando que acá también podemos tener eventos de vanguardia y de excelente calidad.</p>
<p>Un &#8216;mil gracias!&#8217; para todos lo que hicieron posible Agiles2009 en especial a <strong>Alejandra Alfonso</strong>, a <strong><a href="http://softwareagil.blogspot.com/">Juan Gabardini</a></strong>, a <strong><a href="http://malditacomedia.blogspot.com/">Victor Hugo Germano</a></strong> por la buena onda. Y uno mucho mas especial a <strong>Romina Cordoba</strong>, que sin ella no podría haber participado de todo esto ;)</p>
<p><a href="http://sebasjm.files.wordpress.com/2009/10/sungundrule.jpg"><img src="http://sebasjm.files.wordpress.com/2009/10/sungundrule.jpg?w=510&#038;h=382" alt="cena" title="cena" width="510" height="382" class="alignnone size-full wp-image-217" /></a></p>
<br />Posted in profesional Tagged: agiles, agiles2009, bdd, brasil, florianopolis, scrum, tdd <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/216/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=216&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/10/29/experiencia-agil09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>

		<media:content url="http://sebasjm.files.wordpress.com/2009/10/sungundrule.jpg" medium="image">
			<media:title type="html">cena</media:title>
		</media:content>
	</item>
		<item>
		<title>Mi mamor es una genio</title>
		<link>http://sebasjm.wordpress.com/2009/10/01/mi-mamor-es-una-genio/</link>
		<comments>http://sebasjm.wordpress.com/2009/10/01/mi-mamor-es-una-genio/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 14:55:12 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[social]]></category>
		<category><![CDATA[genio]]></category>
		<category><![CDATA[mamor]]></category>
		<category><![CDATA[mi bella genio]]></category>
		<category><![CDATA[que te importa]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/2009/10/01/mi-mamor-es-una-genio/</guid>
		<description><![CDATA[No es rubia, pero es de oro Posted in social Tagged: genio, mamor, mi bella genio, que te importa<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=212&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>No es rubia, pero es de oro</p>
<p><a href="http://sebasjm.files.wordpress.com/2009/10/mi-bella-genio-1.jpg"><img src="http://sebasjm.files.wordpress.com/2009/10/mi-bella-genio-1.jpg?w=347&#038;h=400" alt="mi bella genio 1" title="mi bella genio 1" width="347" height="400" class="alignnone size-full wp-image-213" /></a></p>
<br />Posted in social Tagged: genio, mamor, mi bella genio, que te importa <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/212/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=212&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/10/01/mi-mamor-es-una-genio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>

		<media:content url="http://sebasjm.files.wordpress.com/2009/10/mi-bella-genio-1.jpg" medium="image">
			<media:title type="html">mi bella genio 1</media:title>
		</media:content>
	</item>
		<item>
		<title>Iron Maiden Childhood&#8217;s End</title>
		<link>http://sebasjm.wordpress.com/2009/10/01/iron-maiden-childhoods-end/</link>
		<comments>http://sebasjm.wordpress.com/2009/10/01/iron-maiden-childhoods-end/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 13:19:43 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[social]]></category>
		<category><![CDATA[childhood's end]]></category>
		<category><![CDATA[iron maiden]]></category>
		<category><![CDATA[letras]]></category>
		<category><![CDATA[lyrics]]></category>
		<category><![CDATA[maiden]]></category>
		<category><![CDATA[metal]]></category>
		<category><![CDATA[musica]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/2009/10/01/iron-maiden-childhoods-end/</guid>
		<description><![CDATA[I&#8217;d sail across the ocean I&#8217;d walk a hundred miles If I could make it to the end Oh just to see a smile You see it in their faces The sadness in their tears The desperation and the anger Madness and the fear No hope, no life, just pain and fear No food, no [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=209&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;d sail across the ocean<br />
I&#8217;d walk a hundred miles<br />
If I could make it to the end<br />
Oh just to see a smile</p>
<p>You see it in their faces<br />
The sadness in their tears<br />
The desperation and the anger<br />
Madness and the fear</p>
<p>No hope, no life, just pain and fear<br />
No food, no love, just greed is here</p>
<p>Starvation and the hunger<br />
The suffering and the pain<br />
The agonies of all-out war<br />
When will it come again?</p>
<p>The struggle for the power<br />
A tyrant tries again<br />
Just what the hell is going on?<br />
When will it ever end?</p>
<p>No hope, no life, just pain and fear<br />
No food, no love, just greed is here</p>
<p>You see the full moon float<br />
You watch the red sun rise<br />
We take these things for granted<br />
But somewhere someone&#8217;s dying</p>
<p>Contaminated waters<br />
Pollution and decay<br />
Just waiting for disease to strike<br />
Oh will we learn someday?</p>
<p>No hope, no life, just pain and fear<br />
No food, no love, no seed<br />
childhood&#8217;s end</p>
<p><!-- see gallery_shortcode() in wp-includes/media.php --></p>
<div id='gallery-1' class='gallery galleryid-0 snap_nopreview'>
<dl class='gallery-item'>
<dt class='gallery-icon'>
<a href='http://sebasjm.wordpress.com/?attachment_id=186' title='dsc01508.jpg&#8221; doesn&#8217;t existe?'><img src="http://sebasjm.files.wordpress.com/2009/09/dsc01508.jpg&amp;?w=510#8221; doesn&#8217;t existe" class="attachment-thumbnail" alt="" title="dsc01508.jpg&#8221; doesn&#8217;t existe?" /></a>
</dt>
</dl>
<p><br style='clear:both;' />
</div>
<p><a href="http://sebasjm.files.wordpress.com/2009/10/5762_iron_maiden_fear_of_the_dark.jpg"><img src="http://sebasjm.files.wordpress.com/2009/10/5762_iron_maiden_fear_of_the_dark.jpg?w=160&#038;h=160" alt="5762 iron maiden fear of the dark" title="5762 iron maiden fear of the dark" width="160" height="160" class="alignnone size-full wp-image-210" /></a></p>
<br />Posted in social Tagged: childhood's end, iron maiden, letras, lyrics, maiden, metal, musica <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/209/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=209&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/10/01/iron-maiden-childhoods-end/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>

		<media:content url="http://sebasjm.files.wordpress.com/2009/09/dsc01508.jpg&#38;?#8221; doesn&#8217;t existe" medium="image">
			<media:title type="html">dsc01508.jpg&#8221; doesn&#8217;t existe?</media:title>
		</media:content>

		<media:content url="http://sebasjm.files.wordpress.com/2009/10/5762_iron_maiden_fear_of_the_dark.jpg" medium="image">
			<media:title type="html">5762 iron maiden fear of the dark</media:title>
		</media:content>
	</item>
		<item>
		<title>Maven vs IDEs</title>
		<link>http://sebasjm.wordpress.com/2009/09/29/maven-vs-ides/</link>
		<comments>http://sebasjm.wordpress.com/2009/09/29/maven-vs-ides/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 13:03:38 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[deploy]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[j2se]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jbug]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[patrones]]></category>
		<category><![CDATA[religion]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=207</guid>
		<description><![CDATA[Quiero compartir un muy buen post en JBUG sobre porque hay que usar Maven, y porque tendrías que dejar de ir todos los Domingos a alabar a tu IDE preferido. Disfruten. Posted in profesional Tagged: .net, ant, deploy, desarrollo, eclipse, IDE, j2se, java, jbug, maven, netbeans, patrones, religion<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=207&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quiero compartir un muy buen <a href="http://www.jbug.com.ar/2009/09/27/sobre-la-programacion-orientada-a-ide©/">post</a> en <a href="http://www.jbug.com.ar/">JBUG</a> sobre porque hay que usar Maven, y porque tendrías que dejar de ir todos los Domingos a alabar a tu IDE preferido.</p>
<p>Disfruten.</p>
<br />Posted in profesional Tagged: .net, ant, deploy, desarrollo, eclipse, IDE, j2se, java, jbug, maven, netbeans, patrones, religion <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/207/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=207&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/09/29/maven-vs-ides/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>Seminario Seam en FRBA</title>
		<link>http://sebasjm.wordpress.com/2009/09/29/seminario-seam-en-frba/</link>
		<comments>http://sebasjm.wordpress.com/2009/09/29/seminario-seam-en-frba/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 11:19:49 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[charla]]></category>
		<category><![CDATA[computers]]></category>
		<category><![CDATA[disi]]></category>
		<category><![CDATA[frba]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[ieee]]></category>
		<category><![CDATA[j2se]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[seam]]></category>
		<category><![CDATA[sistemas]]></category>
		<category><![CDATA[utn]]></category>
		<category><![CDATA[webbeans]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/2009/09/29/seminario-seam-en-frba/</guid>
		<description><![CDATA[El próximo 21 estaré dando una charla sobre desarrollo web usando herramientas de JBoss. La charla es una introducción y estará orientada a programadores Jrs con contenido teórico y ejemplos prácticos pero invito a cualquier PyME interesada en conocer las últimas tendencias de los frameworks J2EE, el desarrollo orientado a componentes. Posted in profesional Tagged: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=201&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>El próximo 21 estaré dando una charla sobre desarrollo web usando herramientas de JBoss.</p>
<p>La charla es una introducción y estará orientada a programadores Jrs con contenido teórico y ejemplos prácticos pero invito a cualquier PyME interesada en conocer las últimas tendencias de los frameworks J2EE, el desarrollo orientado a componentes.</p>

<a href='http://sebasjm.wordpress.com/2009/09/29/seminario-seam-en-frba/img-1632/' title='Seminario Java orientado a aplicaciones Web basado en JBoss y JBoss Seam 091009'><img width="106" height="150" src="http://sebasjm.files.wordpress.com/2009/09/img_1632.jpg?w=106&#038;h=150" class="attachment-thumbnail" alt="Flyer" title="Seminario Java orientado a aplicaciones Web basado en JBoss y JBoss Seam 091009" /></a>

<br />Posted in profesional Tagged: charla, computers, disi, frba, hibernate, ieee, j2se, java, jboss, jpa, jsf, seam, sistemas, utn, webbeans <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=201&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/09/29/seminario-seam-en-frba/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>

		<media:content url="http://sebasjm.files.wordpress.com/2009/09/img_1632.jpg?w=106" medium="image">
			<media:title type="html">Seminario Java orientado a aplicaciones Web basado en JBoss y JBoss Seam 091009</media:title>
		</media:content>
	</item>
		<item>
		<title>Agiles 2009</title>
		<link>http://sebasjm.wordpress.com/2009/09/28/agiles-2009/</link>
		<comments>http://sebasjm.wordpress.com/2009/09/28/agiles-2009/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 15:33:51 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/2009/09/28/agiles-2009/</guid>
		<description><![CDATA[Floripa&#8230; Floripa&#8230; Floripa&#8230; Este nerd se va para Agiles 2009, aguante Posted in social<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=199&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Floripa&#8230; Floripa&#8230; Floripa&#8230;</p>
<p>Este nerd se va para Agiles 2009, aguante</p>
<p><a href="http://sebasjm.files.wordpress.com/2009/09/floripa_borde.jpg"><img src="http://sebasjm.files.wordpress.com/2009/09/floripa_borde.jpg?w=470&#038;h=242" alt="floripa borde" title="floripa borde" width="470" height="242" class="alignnone size-full wp-image-200" /></a></p>
<br />Posted in social  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/199/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=199&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/09/28/agiles-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>

		<media:content url="http://sebasjm.files.wordpress.com/2009/09/floripa_borde.jpg" medium="image">
			<media:title type="html">floripa borde</media:title>
		</media:content>
	</item>
		<item>
		<title>Mensajes escondidos en los iconos de mac</title>
		<link>http://sebasjm.wordpress.com/2009/09/26/mensajes-escondidos-en-los-iconos-de-mac/</link>
		<comments>http://sebasjm.wordpress.com/2009/09/26/mensajes-escondidos-en-los-iconos-de-mac/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 16:09:40 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[social]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[icons]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/2009/09/26/mensajes-escondidos-en-los-iconos-de-mac/</guid>
		<description><![CDATA[Simplemente genial, sobretodo el BSOD http://www.cultofmac.com/icon-porn-feast-your-eyes-on-snow-leopards-beautiful-icons/15764/7 Posted in social Tagged: apple, icons, mac, windows<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=185&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Simplemente genial, sobretodo el BSOD</p>
<p><a href="http://www.cultofmac.com/icon-porn-feast-your-eyes-on-snow-leopards-beautiful-icons/15764/7">http://www.cultofmac.com/icon-porn-feast-your-eyes-on-snow-leopards-beautiful-icons/15764/7</a></p>
<br />Posted in social Tagged: apple, icons, mac, windows <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/185/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=185&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/09/26/mensajes-escondidos-en-los-iconos-de-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>Posting by mail test</title>
		<link>http://sebasjm.wordpress.com/2009/09/26/posting-by-mail-test/</link>
		<comments>http://sebasjm.wordpress.com/2009/09/26/posting-by-mail-test/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 14:49:29 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/2009/09/26/posting-by-mail-test/</guid>
		<description><![CDATA[Probando probando&#8230; 1 2 3 Sebasjm Posted in social<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=178&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Probando probando&#8230; 1 2 3</p>
<p>Sebasjm</p>
<br />Posted in social  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/178/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=178&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/09/26/posting-by-mail-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>Behavior Driven Development</title>
		<link>http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/</link>
		<comments>http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 02:52:28 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[agil]]></category>
		<category><![CDATA[agiles]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[behavior]]></category>
		<category><![CDATA[dan north]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[driven]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[j2se]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jbehave]]></category>
		<category><![CDATA[jdave]]></category>
		<category><![CDATA[junit]]></category>
		<category><![CDATA[patrones]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[testng]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=136</guid>
		<description><![CDATA[Contenido 1 Introducción 1.1 Objetivos 2 Behavior Driven Development 3 Caso de uso 3.1 Introducción 3.2 Requerimientos 3.3 El Analista: Relevando el comportamiento 3.4 La herramienta: JBehave en acción 3.4.1 Escenarios: Cómo debería comportarse la aplicación 3.4.2 Pasos: Partes concretas del test 3.5 Interacción entre roles 4 Conclusión 5 Enlaces 5.1 Software Java 5.2 Software .Net 5.3 Documentación 5.4 Ejemplos de utilización Bibliografía adicional                Introducción Este artículo intenta acercar al [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=136&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<table id="toc" border="0" summary="Contents">
<tbody>
<tr>
<td>
<div id="toctitle">
<h2>Contenido</h2>
</div>
<ul>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Introducci.C3.B3n">1 Introducción</a>
<ul>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Objetivos">1.1 Objetivos</a></li>
</ul>
</li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Behavior_Driven_Development">2 Behavior Driven Development</a></li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Caso_de_uso">3 Caso de uso</a>
<ul>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Introducci.C3.B3n_2">3.1 Introducción</a></li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Requerimientos">3.2 Requerimientos</a></li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#El_Analista_Relevando_el_comportamiento">3.3 El Analista: Relevando el comportamiento</a></li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#La_herramienta_JBehave_en_acci.C3.B3n">3.4 La herramienta: JBehave en acción</a>
<ul>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Escenarios_C.C3.B3mo_deber.C3.ADa_comportarse_la_aplicaci.C3.B3n">3.4.1 Escenarios: Cómo debería comportarse la aplicación</a></li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Pasos_Partes_concretas_del_test">3.4.2 Pasos: Partes concretas del test</a></li>
</ul>
</li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Interacci.C3.B3n_entre_roles">3.5 Interacción entre roles</a></li>
</ul>
</li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Conclusi.C3.B3n">4 Conclusión</a></li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Enlaces">5 Enlaces</a>
<ul>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Software_Java">5.1 Software Java</a></li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Software_.Net">5.2 Software .Net</a></li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Documentaci.C3.B3n">5.3 Documentación</a></li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Otros_ejemplos_de_utilizaci.C3.B3n">5.4 Ejemplos de utilización</a></li>
</ul>
</li>
<li><a href="http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/#Bibliograf.C3.ADa_adicional">Bibliografía adicional</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<p> </p>
<div id="bodyContent"><a name="Introducci.C3.B3n"></a>            </p>
<h2>Introducción</h2>
<p>Este artículo intenta acercar al lector a la práctica de desarrollo orientado a la calidad utilizando la técnica de BDD, a partir de la descripción conceptual de su utilización, beneficios, casos de uso y un ejemplo.</p>
<p><a name="Objetivos"></a></p>
<h3>Objetivos</h3>
<p>Brindar la información y los beneficios sobre esta técnica para que el lector tenga la facultad de evaluar y decidir si dicha práctica es conveniente para el proyecto en el que está trabajando.   </p>
<p><span id="more-136"></span></p>
<p><a name="Behavior_Driven_Development"></a></p>
<h2>Behavior Driven Development</h2>
<p>Behavior Driven Development (también conocido como BDD) es una técnica de desarrollo ágil que fomenta la colaboración entre los desarrolladores, las personas encargadas de asegurar la calidad (testers) y los analistas en un proyecto de construcción de software. El concepto es una evolución de Test Driven Development (también denominado TDD) y Extreme Programming (XP), cuyo objetivo es  tener un mejor control de la calidad del software que está siendo producido.</p>
<p>La idea principal de BDD es enfocar el esfuerzo en describir cómo se debería comportar la aplicación (o parte de ella), plasmar esto en un sistema de análisis automático con la ayuda de herramientas y luego desarrollar, a partir de la necesidad de cumplir con el comportamiento esperado. Si el análisis ha sido lo suficientemente especifico, el desarrollo estará completo y funcionando tal como se espera cuando las métricas de las herramientas utilizadas demuestren que todos los escenarios de evaluación de comportamiento han sido finalizados con éxito.</p>
<p>Es sabido que hacer un análisis exacto es muy difícil (si no imposible) por lo cual es necesario que exista una buena comunicación entre el analista, el tester y el desarrollador para así lograr tener una corrección continua, especialmente cuando el cliente no sabe bien lo que precisa, como sucede en la mayoría de los casos.</p>
<p>A continuación se describen los tres roles principales mencionados anteriormente. Puede suceder que éstos estén fundidos en 1, 3 o X (equis) cantidad de personas, pero no necesariamente:</p>
<ul>
<li>Analistas
<ul>
<li>encargados de reelevar el comportamiento de la aplicación que satisface al cliente.</li>
</ul>
</li>
<li>Testers
<ul>
<li>son quienes llevan el relevamiento del analista a un conjunto de reglas que aplicadas al software en cuestión generan métricas para indicar el estado de avance del proyecto.</li>
</ul>
</li>
<li>Desarrolladores
<ul>
<li>encargados de implementar las funcionalidades del sistemas necesarios para cumplir con el comportamiento esperado.</li>
</ul>
</li>
</ul>
<p><a name="Caso_de_uso"></a></p>
<h2>Caso de uso</h2>
<p>Para lograr una explicación mas pragmática, a modo de ejemplo se utilizará el caso modelo elegido al azar el cual consiste en un modulo de validaciones de servicios.</p>
<p><a name="Introducci.C3.B3n_2"></a></p>
<h3>Introducción</h3>
<p>El ejemplo se trata de módulo de validación de invocaciones a servicios, el cual necesita la información de un usuario y la lista de contratos a los cuales el usuario quiere activar un servicio. A partir de estos datos, el módulo debe utilizar reglas definidas por el cliente para decidir si el servicio puede ser invocado o no.</p>
<p><a name="Requerimientos"></a></p>
<h3>El Analista: Relevando el comportamiento</h3>
<p>Desde la postura del analista, luego de una reunión con el cliente, se desprende el siguiente requerimiento:</p>
<ul>
<li><em>Cuando se activa un servicio para un contrato (línea de teléfono) por el sistema es necesario que la forma de pago sea POSPAGO</em></li>
</ul>
<p>Sabiendo esto, se puede detallar el siguiente comportamiento de la aplicación en tres pasos:</p>
<pre>Dado Un contrato pospago
Cuando Intento activar el servicio
Entonces La validación termina sin errores</pre>
<p>De esta manera se está describiendo <em>un escenario</em> de comportamiento, el cual está compuesto por tres partes importantes que es preciso saber identificar:</p>
<ul>
<li><strong>Precondición:</strong> Estado del sistema necesario y suficiente producto de la abstracción del problema, en este caso es preciso un contrato pospago. Se dice que es necesario porque sin esto el sistema no puede funcionar y suficiente porque dada la abstracción, solamente con esta información el modulo debería poder resolver el problema.</li>
<li><strong>Acción:</strong> Es la funcionalidad que se está testeando, en este caso la activación de roaming</li>
<li><strong>Poscondición:</strong> Es lo más importante, porque sin ello no hay manera de generar métricas, es el estado final del sistema luego de invocar una acción.</li>
</ul>
<p><a name="La_herramienta_JBehave_en_acci.C3.B3n"></a></p>
<h3>La herramienta: JBehave en acción</h3>
<p>Para transformar el requerimiento en algo concreto se utilizará la herramienta JBehave. Ésta permite desencadenar tests unitarios mediante el uso de reglas como las que se describieron anteriormente, asociando el escenario a un caso de test y las partes a invocaciones de test concretas. En este punto se puede apreciar como al rol del tester se le asignan incumbencias de desarrollador, aunque desde una perspectiva de cliente del módulo de validaciones ya que sólo es necesario conocer su interfaz para poder usarlo, tal como el cliente de la aplicación a la aplicación misma.</p>
<p><a name="Escenarios_C.C3.B3mo_deber.C3.ADa_comportarse_la_aplicaci.C3.B3n"></a></p>
<h4>Escenarios: Cómo debería comportarse la aplicación</h4>
<p>Como JBehave está desarrollado en idioma anglosajón, para describir el escenario anterior es necesario cambiar algunas palabras por su traducción directa</p>
<pre>Given Un contrato pospago
When Intento activar el servicio
Then La validación termina sin errores</pre>
<p>y guardar esta información en un archivo con nombre &#8216;validacion_servicio&#8217;.</p>
<p>Una vez salvado el escenario, es necesario codificar el caso de test y éste debe tener el mismo nombre que el escenario pero sin &#8216;_&#8217;, entonces se genera la clase ValidacionServicio.</p>
<p>Aunque esta convención parece aleatoria, seguir un patrón de desarrollo definido a priori y cumplirlo al pie de la letra, permite a cualquier sujeto externo al desarrollo entender los casos de test solamente conociendo la herramienta y sus prácticas. Por ejemplo, esta es una posible implementación de ValidacionServicio:</p>
<pre>public class ValidacionServicio extends Scenario {

    public ValidacionServicio() {
        super( new PasosDeValidacion() );
    }
}

public class PasosDeValidacion extends Steps {

}</pre>
<p><a name="Pasos_Partes_concretas_del_test"></a></p>
<h4>Pasos: Partes concretas del test</h4>
<p>Una vez definido el caso de test, lo siguiente es definir qué acciones responden a cada comportamiento especificado por el analista, es decir, los pasos.</p>
<p>Para eso se debe saber que para cada tipo de acción en un escenario hay una anotación correspondiente:</p>
<ul>
<li>Para las precondiciones se utiliza la anotación @Given y la funcionalidad de este método es cargar información al estado del escenario.</li>
<li>Para las acciones, la anotación @When, este método está encargado de invocar la funcionalidad a testear</li>
<li>En el caso de las poscondiciones utilizamos la anotación @Then, la cual va a permitir definir un método que verifique el estado del escenario y alerte en caso de que no cumpla con lo esperado.</li>
</ul>
<p>Es importante reiterar que como el desarrollo está gobernado por la necesidad de cumplir con los test, el 99% del tiempo de vida del proyecto más de un test estará incompleto. Teniendo en cuenta esto, se desprende que por más que haya 100 escenarios escritos, la construcción automática del software (la cual también va a generar las métricas de la herramienta de BDD) no puede estar interrumpida por el incumplimiento total o parcial del escenario, para poder permitir entregas parciales. Por eso, en este punto si se corren los tests de los escenarios sin definir todo el comportamiento, las partes incompletas se marcarán como PENDIENTES y la construcción terminará por exitosa. Diferente es cuando un test está completo y falla, lo cual puede suceder haciendo testing de regresión.</p>
<p>En esta parte, el tester necesitará el conocimiento del desarrollador o la ayuda del arquitecto para poder usar el API que permitirá invocar la funcionalidad a testear, generar las precondiciones y evaluar las poscondiciones. Para dicho caso en particular, los pasos de validaciones son los siguientes:</p>
<p> </p>
<pre>    @Given("Un contrato pospago")
    public void crearGestionyContratoPrepago(){
       // ... generar contrato y asociarlo a la forma de pago POSPAGO ...
    }
   
    @When("Intento activar el servicio")
    public void validarActivacion() {
       // ... invocar la validación y obtener el estado de la operación ...
    }
 
    @Then("La validacion termina sin errores")
    public void assertTerminaSinErrores(){
        // ... asegurar o verificar que el escenario cumpla con un estado en particular ...
        ensureThat(!validacionTerminaConErrores);
    }</pre>
<p>Una vez generados los tests, las personas con el rol de desarrollador son los encargados generar la funcionalidad necesaria. Esta vez, con requerimientos tan sólidos como la aceptación de un test automático e imparcial, las tareas delegadas son menos ambiguas y mucho más fáciles de auditar.</p>
<p><a name="Interacci.C3.B3n_entre_roles"></a></p>
<h3>Interacción entre roles</h3>
<p>Al aplicar esta práctica se pueden apreciar los beneficios enseguida que el tester comienza a trabajar sobre el escenario para generar un caso de test exhaustivo:</p>
<ul>
<li>Dado Un contrato pospago
<ul>
<li>¿Cuántas formas de pago tiene un contrato?</li>
<li>¿Es necesario contar con el cliente para esta validación?</li>
</ul>
</li>
</ul>
<ul>
<li>Cuando Intento activar el servicio
<ul>
<li>¿Qué pasa cuando se intenta desactivar el servicio?</li>
</ul>
</li>
</ul>
<p>Otra vez, el rol del analista para evacuar las incógnitas:</p>
<ul>
<li><em>Las formas de pago de un contrato son POSPAGO, PREPAGO e HIBRIDO y estas solo se van a tener en cuenta para la activación.</em></li>
</ul>
<ul>
<li><em>La aplicación no puede impedir la desvinculación de un servicio de un cliente, a lo sumo se guardará un historial de desactivaciones</em></li>
</ul>
<p>Como la manera de validar el sistema es mediante una muestra ejemplar especificada en las precondiciones, es preciso asegurarse de que estas sean lo mas amplias posibles. Entonces, sabiendo que todas las formas de pagos son POSPAGO, PREPAGO e HIBRIDO se pueden generar los siguientes escenarios:</p>
<ul>
<li><strong>Escenario 1</strong></li>
</ul>
<pre>Given Un cliente cualquiera
Given Un contrato pospago
When Intento activar el servicio
Then La validacion termina sin errores

Given Un contrato prepago
When Intento activar el servicio
Then La validacion termina con errores
 
When Intento desactivar el servicio
Then La validacion termina sin errores</pre>
<ul>
<li><strong>Escenario 2</strong></li>
</ul>
<pre>Given Un cliente cualquiera
Given Un contrato hibrido
When Intento activar el servicio
Then La validacion termina con errores</pre>
<ul>
<li><strong>Escenario 3</strong></li>
</ul>
<pre>Given Un cliente cualquiera
Given Un contrato prepago
When Intento activar el servicio
Then La validacion termina con errores</pre>
<ul>
<li><strong>Escenario 4</strong></li>
</ul>
<pre>Given Un cliente cualquiera
Given Un contrato prepago
Given Un contrato hibrido
Given Un contrato pospago
When Intento desactivar el servicio
Then La validacion termina sin errores</pre>
<p>De esta manera se puede apreciar como se están reutilizando los pasos generados en los escenarios anteriores, y al utilizar la característica de secuencialidad de los escenarios se puede generar un test lo suficientemente completo describiendo cómo la aplicación se debería comportar antes de escribir la primera línea de código.</p>
<p>Hay que tener en cuenta que tener muchos tests sobre la misma funcionalidad no brindará una métrica más precisa en cuanto progreso del proyecto pero así mismo este trabajo no es vano, puesto que ayudará definir el comportamiento más extensivamente para que el desarrollador no construya un software que responda sólo a un caso en particular. No por malas intenciones, pero podemos aceptar este archivo con reglas como un elemento de documentación dado a su lenguaje tan coloquial.</p>
<p><a name="Conclusi.C3.B3n"></a></p>
<h2>Conclusión</h2>
<p>Como se pudo apreciar en el ejemplo de caso de uso, aplicar la práctica con JBehave implica un costo muy bajo de adaptación. Solamente resta llevar a la practica la costumbre de generar escenarios de prueba previos al desarrollo y auditar las métricas constantemente para usarlas como referencia de avance.</p>
<p>Un punto en contra (o a favor, dependiendo el punto de vista) es que dicha práctica es relativamente nueva y por ende las herramientas requeridas están en desarrollo y constante cambio, sin que exista aún una en particular como referente.</p>
<p> </p>
<p><a name="Enlaces"></a></p>
<h2>Enlaces</h2>
<p><a name="Software_Java"></a></p>
<h3>Software Java</h3>
<ul>
<li><a title="http://jbehave.org/" rel="nofollow" href="http://jbehave.org/">JBehave</a></li>
<li><a title="http://www.jdave.org/" rel="nofollow" href="http://www.jdave.org/">JDave</a></li>
<li><a title="http://javastubs.sourceforge.net/" rel="nofollow" href="http://javastubs.sourceforge.net/">JavaStubs</a></li>
</ul>
<p><a name="Software_.Net"></a></p>
<h3>Software .Net</h3>
<ul>
<li><a title="http://code.google.com/p/nbehave/" rel="nofollow" href="http://code.google.com/p/nbehave/">NBehave</a></li>
<li><a title="http://nspec.tigris.org/" rel="nofollow" href="http://nspec.tigris.org/">NSpec</a></li>
<li><a title="http://nspecify.sourceforge.net/" rel="nofollow" href="http://nspecify.sourceforge.net/">NSpecify</a></li>
</ul>
<p><a name="Documentaci.C3.B3n"></a></p>
<h3>Documentación</h3>
<ul>
<li><a title="http://en.wikipedia.org/wiki/Behavior_Driven_Development" rel="nofollow" href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">Behavior Driven Development</a>en Wikipedia</li>
<li><a title="http://dannorth.net/introducing-bdd" rel="nofollow" href="http://dannorth.net/introducing-bdd">dannorth.net</a></li>
<li><a title="http://behaviour-driven.org/" rel="nofollow" href="http://behaviour-driven.org/">behaviour-driven.org</a></li>
<li><a title="http://www.ibm.com/developerworks/java/library/j-cq09187/index.html" rel="nofollow" href="http://www.ibm.com/developerworks/java/library/j-cq09187/index.html">In pursuit of code quality: Adventures in behavior-driven development</a></li>
</ul>
<p><a name="Otros_ejemplos_de_utilizaci.C3.B3n"></a></p>
<h3>Ejemplos de utilización</h3>
<ul>
<li><a title="http://jbehave.org/documentation/two-minute-tutorial/" rel="nofollow" href="http://jbehave.org/documentation/two-minute-tutorial/">Usando JBehave</a></li>
<li><a title="http://www.jdave.org/examples.html" rel="nofollow" href="http://www.jdave.org/examples.html">Usando JDave</a></li>
</ul>
<p><a name="Bibliograf.C3.ADa_adicional"></a></p>
<h2>Bibliografía adicional</h2>
<p>Las obras que se mencionan a continuación, que aún no han sido publicadas, se consideran útiles para ampliar el contenido del presente artículo.</p>
<ul>
<li><a title="http://www.amazon.com/RSpec-Book-Behaviour-Development-Cucumber/dp/1934356379/ref=sr_1_3?ie=UTF8&amp;s=books&amp;qid=1253536946&amp;sr=8-3" rel="nofollow" href="http://www.amazon.com/RSpec-Book-Behaviour-Development-Cucumber/dp/1934356379/ref=sr_1_3?ie=UTF8&amp;s=books&amp;qid=1253536946&amp;sr=8-3">The RSpec Book: Behaviour Driven Development with RSpec, Cucumber, and Friends</a></li>
<li><a title="http://www.amazon.com/Foundations-RSpec-Behavior-driven-Development-Rails/dp/1590599225/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1253537058&amp;sr=8-1" rel="nofollow" href="http://www.amazon.com/Foundations-RSpec-Behavior-driven-Development-Rails/dp/1590599225/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1253537058&amp;sr=8-1">Foundations of RSpec: Behavior-driven Development with Ruby and Rails </a></li>
<li><a title="http://www.amazon.com/Test-Driven-Acceptance-Java-Developers/dp/1932394850/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1253537058&amp;sr=8-2" rel="nofollow" href="http://www.amazon.com/Test-Driven-Acceptance-Java-Developers/dp/1932394850/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1253537058&amp;sr=8-2">Test Driven: TDD and Acceptance TDD for Java Developers</a></li>
<li><a title="http://www.amazon.com/Test-Driven-Development-Microsoft-NET-Professional/dp/0735619484/ref=sr_1_5?ie=UTF8&amp;s=books&amp;qid=1253537058&amp;sr=8-5" rel="nofollow" href="http://www.amazon.com/Test-Driven-Development-Microsoft-NET-Professional/dp/0735619484/ref=sr_1_5?ie=UTF8&amp;s=books&amp;qid=1253537058&amp;sr=8-5">Test-Driven Development in Microsoft .NET</a></li>
<li><a title="http://www.amazon.com/Test-Driven-Development-Example-Experts-Voice/dp/1590593278/ref=sr_1_10?ie=UTF8&amp;s=books&amp;qid=1253537058&amp;sr=8-10" rel="nofollow" href="http://www.amazon.com/Test-Driven-Development-Example-Experts-Voice/dp/1590593278/ref=sr_1_10?ie=UTF8&amp;s=books&amp;qid=1253537058&amp;sr=8-10">Test-Driven Development: A J2EE Example (Expert&#8217;s Voice)</a></li>
</ul>
</div>
<br />Posted in profesional Tagged: agil, agiles, bdd, behavior, dan north, development, driven, ejemplos, j2se, java, jbehave, jdave, junit, patrones, tdd, testing, testng <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=136&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/09/23/behavior-driven-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>GMail caido</title>
		<link>http://sebasjm.wordpress.com/2009/09/01/gmail-caido/</link>
		<comments>http://sebasjm.wordpress.com/2009/09/01/gmail-caido/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 20:23:47 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[social]]></category>
		<category><![CDATA[502]]></category>
		<category><![CDATA[caido]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=124</guid>
		<description><![CDATA[Woooooooooow&#8230; Si comparas esto con tirar una bomba, y tomas como parametro la cantidad de personas afectadas. Cual sería el equivalente? Huele a DoS La pregunta es: ¿Porque estoy usando windows? Posted in social Tagged: 502, caido, gmail, google<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=124&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_122" class="wp-caption alignnone" style="width: 507px"><img src="http://sebasjm.files.wordpress.com/2009/09/3878453557_9d28935983_o.png?w=497&#038;h=191" alt="gmail server error" title="gmail server error" width="497" height="191" class="size-full wp-image-122" /><p class="wp-caption-text">gmail server error</p></div>
<p>Woooooooooow&#8230;<br />
Si comparas esto con tirar una bomba, y tomas como parametro la cantidad de personas afectadas.<br />
Cual sería el equivalente?</p>
<p>Huele a DoS</p>
<div id="attachment_127" class="wp-caption alignnone" style="width: 507px"><img src="http://sebasjm.files.wordpress.com/2009/09/dibujo1.jpg?w=497&#038;h=328" alt="dos" title="dos" width="497" height="328" class="size-full wp-image-127" /><p class="wp-caption-text">dos</p></div>
<p>La pregunta es: ¿Porque estoy usando windows?</p>
<br />Posted in social Tagged: 502, caido, gmail, google <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/124/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=124&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/09/01/gmail-caido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>

		<media:content url="http://sebasjm.files.wordpress.com/2009/09/3878453557_9d28935983_o.png" medium="image">
			<media:title type="html">gmail server error</media:title>
		</media:content>

		<media:content url="http://sebasjm.files.wordpress.com/2009/09/dibujo1.jpg" medium="image">
			<media:title type="html">dos</media:title>
		</media:content>
	</item>
		<item>
		<title>Ant desde Maven</title>
		<link>http://sebasjm.wordpress.com/2009/08/26/ant-desde-maven/</link>
		<comments>http://sebasjm.wordpress.com/2009/08/26/ant-desde-maven/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 19:08:25 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=110</guid>
		<description><![CDATA[Uno rapidito. Situacion: Tenés un proyecto hecho con Ant con build.xml, properties y directórios obscuros por todos lados y resulta que desde que te pusistes a utilizar _ese_ desktop que tenés ( que ademas tiene windows ) nunca instalaste Ant ( bien ahí ), en cambio fuistes por más y utilizaste siempre Maven 2 Opciones: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=110&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Uno rapidito.</p>
<p><strong>Situacion:</strong><br />
Tenés un proyecto hecho con Ant con build.xml, properties y directórios obscuros por todos lados y resulta que desde que te pusistes a utilizar _ese_ desktop que tenés ( que ademas tiene windows ) nunca instalaste Ant ( bien ahí ), en cambio fuistes por más y utilizaste siempre Maven 2</p>
<p><strong>Opciones:</strong><br />
1.- Lo que te dice la lógica y <a href="http://www.google.com.ar/search?q=alejandro+wiebe">Alejandro Wiebe</a>: bajar 11 megas de la Red por el proxy feo que tenés.<br />
2.- DeSSScompilás un proyecto parecido a Ant y te armás uno parecido que cumpla con tu necesidad<br />
3.- Vas por el camino fácil y escribís esto en un pom.xml dentro del mismo directório</p>
<p><span id="more-110"></span></p>
<p><code><strong></p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;project&gt;<br />
&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;</p>
<p>&lt;groupId&gt;sarasa&lt;/groupId&gt;<br />
&lt;version&gt;8&lt;/version&gt;</p>
<p>&lt;artifactId&gt;mojarra&lt;/artifactId&gt;<br />
&lt;packaging&gt;jar&lt;/packaging&gt;</p>
<p>&lt;build&gt;<br />
&lt;plugins&gt;<br />
&lt;plugin&gt;<br />
&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />
&lt;artifactId&gt;maven-antrun-plugin&lt;/artifactId&gt;<br />
&lt;version&gt;1.3&lt;/version&gt;<br />
&lt;configuration&gt;<br />
&lt;tasks&gt;<br />
&lt;property name="jsf.build.home" value="${basedir}"/&gt;<br />
&lt;property name="container.name" value="glassfish"/&gt;</p>
<p>&lt;ant antfile="build.xml" target="jsf.source"/&gt;<br />
&lt;/tasks&gt;<br />
&lt;/configuration&gt;<br />
&lt;/plugin&gt;<br />
&lt;/plugins&gt;<br />
&lt;/build&gt;</p>
<p>&lt;/project&gt;<br />
</strong></code></p>
<p>desde la consola<br />
<strong>mvn antrun:run</strong></p>
<p>y sos feliz. </p>
<p>El ejemplo es de <a href="https://javaserverfaces.dev.java.net/download.html">Mojarra</a> y el plugin de <a href="http://maven.apache.org/plugins/maven-antrun-plugin/index.html">antrun</a> pesa unos míseros 24k.</p>
<p><strong>Chuck Norris Certified</strong></p>
<br />Posted in profesional  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=110&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/08/26/ant-desde-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>Finalizando conversaciones</title>
		<link>http://sebasjm.wordpress.com/2009/06/04/finalizando-conversaciones/</link>
		<comments>http://sebasjm.wordpress.com/2009/06/04/finalizando-conversaciones/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 14:45:21 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[conversaciones]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[seam]]></category>
		<category><![CDATA[sfsb]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=91</guid>
		<description><![CDATA[Increíble que haya que dar tantas vueltas para algo tan simple. El problema radica en que no hay manera de terminar una conversación &#8220;manualmente&#8221; sumando a que cada request dispara crea una nueva conversación. Perdón, pensando en &#8216;voz alta&#8217;&#8230; ahora los voy a introducir al problema. Imaginen esto, tienen una página que muestra el estado [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=91&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Increíble que haya que dar tantas vueltas para algo tan simple. El problema radica en que no hay manera de terminar una conversación &#8220;manualmente&#8221; sumando a que cada request dispara crea una nueva conversación.</p>
<p>Perdón, pensando en &#8216;voz alta&#8217;&#8230; ahora los voy a introducir al problema. Imaginen esto, tienen una página que muestra el estado de tu transacción&#8230; viva imagen del estado de un SFSB en la conversación en curso. Ahora, cuando termina la transacción ( sea por cancelación o confirmación ) el SFSB desaparece llevándose consigo su información, por ende esta será inaccesible para la siguiente vista. Salvo&#8230; que uses Seam.</p>
<p><strong>Caso 1: dentro de una conversación larga ( o long running conversation ( aka conversaciones manuales ) )</strong></p>
<p>Cuando terminamos una transacción cerramos la operación con un método anotado con @End. La conversación <span style="text-decoration:underline;">por defecto</span> no termina ( o mejor dicho &#8216;el contexto conversacional no se destruye&#8217; ) cuando finaliza el método de la aplicación si no que se mantiene hasta que el último componente de la página haya sido renderisado. Por ende hay un instante, entre que finalizó la operación y la próxima página se está renderisando en que la conversación tiene un SFSB accesible pero invalido.</p>
<p><span id="more-91"></span><br />
 </p>
<p><img class="alignnone size-full wp-image-92" title="con redirección y sin endBeforeRedirect" src="http://sebasjm.files.wordpress.com/2009/06/end1.png?w=497&#038;h=155" alt="con redirección y sin endBeforeRedirect" width="497" height="155" /></p>
<p>* la misma conversación/transacción se mantiene aunque nuestra transacción lógica/de negocio terminó</p>
<p> </p>
<p>Por suerte tenemos una manera cambiar este comportamiento y es diciendolé a Seam que termine la conversación antes de que redirija el browser a otra página para mostrar los resultados.</p>
<p> </p>
<p> </p>
<p><img class="alignnone size-full wp-image-93" title="con redirección y endBeforeRedirect" src="http://sebasjm.files.wordpress.com/2009/06/end2.png?w=497&#038;h=155" alt="con redirección y endBeforeRedirect" width="497" height="155" /></p>
<p>* una nueva conversación/transacción se crea luego de la redirección</p>
<p> </p>
<p>Toda esta facilidad se pierde cuando tenemos no hacemos una redirección de la aplicación. Como resultado vamos a ver que aunque le demos &#8216;terminar&#8217; a la transacción y teoricamente haga flush de todos los datos vamos a ver la respuesta en un estado inconcluso.</p>
<p>Por ejemplo, imaginemos una aplicación en la que generamos una lista de pedidos con un wizard, la lista estará asociada a la conversación en curso, cuando llegamos a la última página de este wizard nos muestra una lista con los pedidos a realizar y luego de persistir los datos, como todos los cambios fueron confirmados, la próxima página muestra una lista vacia simbolo de que no hay pedidos sin hacer. Si no toman en cuenta estas particularidades se pueden encontrar con que una vez terminada la transacción la página de respuesta muestra los valores de una conversación/transacción que le dijimos que termine, y cuando volvemos a hacer un request para que nos vuelva a mostrar la misma información esta desaparece. Esto es porque lo que se termina generando como resultado no refleja el estado del contexto en el servidor una vez que se cierra la conversación y esto es <span style="font-weight:bold;text-decoration:underline;">después</span> de que toda la página haya terminado de mostrarse.</p>
<p>Si les gustaron mis dibujos les dejo otro para que vean que pasa si no usamos redirección. </p>
<p> </p>
<p><img class="alignnone size-full wp-image-94" title="sin redirección" src="http://sebasjm.files.wordpress.com/2009/06/end3.png?w=497&#038;h=155" alt="sin redirección" width="497" height="155" /></p>
<p>* si no hay redirección el proceso de renderisado se hace con una conversación invalida</p>
<p><strong>Caso 2: fuera de una conversación larga ( conversaciones por defecto )</strong></p>
<p>En este caso Seam no nos da tregua y me pareció muy frustrante. Solo las conversaciones largas ( las que son iniciadas manualmente con @Begin o similares ) pueden ser finalizadas manualmente. Por eso entré al blog pensado que el problema es que no hay una manera de forzar la destrucción de un contexto, o de invalidarlo, hay que marcarlo y esperar que el motor de Seam decida cuando limpiar.</p>
<p>Igual, no desesperen encontré un workaround ( un parche ) para llevar este caso al anterior :</p>
<pre class="brush: java;">

Manager.instance().setLongRunningConversation( true );

Conversation.instance().endBeforeRedirect();
</pre>
<p>No es muy bonito que digamos, pero nos permite salir del paso. Hice un <a href="http://seamframework.org/Community/EndingShortConversation">post</a> en el foro oficial a ver que me responden los gurues del tema. Cualquier noticia los tengo al tanto. Saludos.</p>
<br />Posted in profesional Tagged: conversaciones, java, seam, sfsb <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=91&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/06/04/finalizando-conversaciones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>

		<media:content url="http://sebasjm.files.wordpress.com/2009/06/end1.png" medium="image">
			<media:title type="html">con redirección y sin endBeforeRedirect</media:title>
		</media:content>

		<media:content url="http://sebasjm.files.wordpress.com/2009/06/end2.png" medium="image">
			<media:title type="html">con redirección y endBeforeRedirect</media:title>
		</media:content>

		<media:content url="http://sebasjm.files.wordpress.com/2009/06/end3.png" medium="image">
			<media:title type="html">sin redirección</media:title>
		</media:content>
	</item>
		<item>
		<title>JBoss DRulera</title>
		<link>http://sebasjm.wordpress.com/2009/06/03/jboss-drulera/</link>
		<comments>http://sebasjm.wordpress.com/2009/06/03/jboss-drulera/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 13:52:23 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[social]]></category>
		<category><![CDATA[groups]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javaone]]></category>
		<category><![CDATA[salaboy]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[user groups]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=97</guid>
		<description><![CDATA[Dentro del marco tecnológico hay gente que solo usan una tecnología, la aprenden y le sacan jugo ( y ya tenemos un grupo reducido ) otros&#8230; aportan cuando lo creen necesario&#8230; ( damm few! ) los que se seban y tienen tiempo se dedican a un proyecto personal&#8230; ( por suerte siempre aparece un nuevo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=97&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dentro del marco tecnológico</p>
<p>hay gente que solo usan una tecnología, la aprenden y le sacan jugo ( y ya tenemos un grupo reducido )</p>
<p>otros&#8230; aportan cuando lo creen necesario&#8230; ( damm few! )</p>
<p>los que se seban y tienen tiempo se dedican a un proyecto personal&#8230; ( por suerte siempre aparece un nuevo )</p>
<p>otros&#8230; apuntan alto, tuercen la matrix a su favor y la reman contra viento, marea y tortugas ninjas inclusive, como el maestro <a href="http://salaboy.wordpress.com/2009/06/03/the-java-one-experience-0-jug-leaders-meeting/">salaboy</a>&#8230; un ejemplo!</p>
<p> </p>
<p>Fuerza argenta para vos man! Trae regalos =D</p>
<p><a href="http://salaboy.wordpress.com/2009/06/03/the-java-one-experience-0-jug-leaders-meeting/">salaboy.wordpress.com</a></p>
<br />Posted in social Tagged: groups, java, javaone, salaboy, sun, user groups <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/97/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=97&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/06/03/jboss-drulera/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>JBug Argentina</title>
		<link>http://sebasjm.wordpress.com/2009/05/11/jbug-argentina/</link>
		<comments>http://sebasjm.wordpress.com/2009/05/11/jbug-argentina/#comments</comments>
		<pubDate>Mon, 11 May 2009 22:51:18 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[ejb]]></category>
		<category><![CDATA[groups]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[jsr299]]></category>
		<category><![CDATA[openwebbeans]]></category>
		<category><![CDATA[patrones]]></category>
		<category><![CDATA[seam]]></category>
		<category><![CDATA[user groups]]></category>
		<category><![CDATA[webbeans]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=82</guid>
		<description><![CDATA[Construido por usuarios y desarrolladores de proyectos de la comunidad JBoss y dedicado para cada uno de los miembros de la comunidad.  He aquí&#8230; con ustedes&#8230; les presento&#8230; No se lo pierdan, próximamente en las mejores salas. Posted in profesional Tagged: ejb, groups, java, jsf, jsr299, openwebbeans, patrones, seam, user groups, webbeans<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=82&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Construido por usuarios y desarrolladores de proyectos de la comunidad <a href="http://jboss.org/">JBoss</a> y dedicado para cada uno de los miembros de la comunidad. </p>
<p>He aquí&#8230; con ustedes&#8230; les presento&#8230;</p>
<p><span id="more-82"></span></p>
<div class="wp-caption alignnone" style="width: 476px"><a href="http://www.jbug.com.ar/"><img title="JBug Argentina" src="http://lh4.ggpht.com/_oNyPsiYq03k/SgGewMQ675I/AAAAAAAAJLA/QFV4QY_VieA/Flyer---JBUG.AR.jpg" alt="JBug Argentina" width="466" height="656" /></a><p class="wp-caption-text">JBug Argentina</p></div>
<p>No se lo pierdan, próximamente en las mejores salas.</p>
<br />Posted in profesional Tagged: ejb, groups, java, jsf, jsr299, openwebbeans, patrones, seam, user groups, webbeans <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/82/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=82&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/05/11/jbug-argentina/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>

		<media:content url="http://lh4.ggpht.com/_oNyPsiYq03k/SgGewMQ675I/AAAAAAAAJLA/QFV4QY_VieA/Flyer---JBUG.AR.jpg" medium="image">
			<media:title type="html">JBug Argentina</media:title>
		</media:content>
	</item>
		<item>
		<title>java.beans</title>
		<link>http://sebasjm.wordpress.com/2009/05/06/javabeans/</link>
		<comments>http://sebasjm.wordpress.com/2009/05/06/javabeans/#comments</comments>
		<pubDate>Wed, 06 May 2009 04:52:45 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[ejb]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[invocationHandler]]></category>
		<category><![CDATA[j2se]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[patrones]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[reflection]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=67</guid>
		<description><![CDATA[Tengo un post en el hornito listo para salir, pero primero algunas curiosidades. Estuve trabajando un poco con reflection, una de las características mas fuerte de Java y poco explotadas que si son bien manejadas pueden construirse lindos frameworks como Spring, Seam o implementar el stack de EJB. Por el otro lado, el exceso del [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=67&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tengo un post en el hornito listo para salir, pero primero algunas curiosidades.</p>
<p>Estuve trabajando un poco con <em>reflection</em>, una de las características mas fuerte de Java y poco explotadas que si son bien manejadas pueden construirse lindos frameworks como Spring, Seam o implementar el stack de EJB. Por el otro lado, el exceso del uso impacta directamente en la performance de la aplicación y si estamos haciendo cosas complejas utilizando Proxies podemos perdernos y el flujo de ejecución termina lejos de donde esperabamos.</p>
<p>Vamos a ver de que hablamos cuando hablamos de reflection. Aclaro que lo que vallan a leer es solo por la experiencia de uso, no soy ningún experto en la materia, así que cualquier corrección es bienvenida.</p>
<p>Supongamos que tenemos una tarea simple, le queremos listar todas las posibles acciones que nuestro EJB puede hacer al consumidor. Obviamente la primera respuesta es tenerlo en archivo de configuración posiblemente un xml blah blah blah&#8230; pero la verdad es que toda esta información ya está escrita y está en la interfaz del EJB. La pregunta es como hacemos para transformar este código en información visible, y no voy a dar mas vueltas.</p>
<p><span id="more-67"></span></p>
<p>Si le damos una repasada a las instancias de la clase java.lang.Class vemos que cuenta los siguientes metodos ( ademas de unos cuantos más ) :</p>
<ul>
<li>public Method[] getMethods();</li>
<li>public Field[] getFields();</li>
<li>public Constructor[] getConstructors();</li>
<li>public Annotation[] getAnnotations();</li>
</ul>
<p>Con este grupo de métodos podemos sacar mucha información sobre una instancia ( sobre la clase de una instancia ) tanto sea un EJBs, un POJO o lo que sea.</p>
<pre class="brush: java;">

Method[] ms = instancia.getClass().getMethods();
System.out.println(&amp;quot;metodos de la clase &amp;quot; + instancia.getClass().getName() );
for(Method m : ms ){
    System.out.println(&amp;quot;    nombre: &amp;quot; + m.getName() );
}
</pre>
<p>Esto es básico, si ahora queremos llamar a un metodo que eligió el usuario después de que le mostramos las opciones:</p>
<pre class="brush: java;">

// obtenemos la referencia al metodo
method = obtenerElMetodoPorElNombre( opcion );
// y lo invocamos
method.invoke( instancia, parametro1, parametro2 );
// ó con un array de parametros
method.invoke( instancia, new Object[]{ parametro1, parametro2 } );
</pre>
<p>Excelente no? Esto sigue siendo magia para gnomos de clase baja&#8230; veamos ahora a algo mas complejo: Proxies.</p>
<blockquote><p>Los proxies son instancias de ninguna clase</p></blockquote>
<p>(??) Como es esto? Si no tiene una clase asociada como la instanciamos? Que métodos tiene asociado? Para eso antes tienen que saber que es un InvocationHandler ( &#8220;manejador de invocaciones&#8221; a métodos  ).</p>
<p>Un IH es una interfaz que nos va a permitir asociar un objeto a esta <em>instancia mágica</em> sin clase asociada, el proxy. Una ves que tenemos una instancia de un IH, creamos el proxy y le decimos que él será el encargado de recibir las invocaciones a los métodos que el proxy no pueda resolver, porque el proxy no tiene definición de clase por lo tanto no tiene un conjunto de métodos definidos ni implementados. Vamos a las fuentes:</p>
<p>Creemos nuestro IH:</p>
<pre class="brush: java;">

public class ManejadorDeInvocaciones implements InvocationHandler {
    private String texto;
    public ManejadorDeInvocaciones(String texto){
        this.texto = texto;
    }
    // el unico metodo para implementar segun la interfaz
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println(texto + metodo.getName() );
        return true; // solo para que funcione el ejemplo siguiente
    }

}
</pre>
<p>Ahora creemos nuestro proxy mágico y asociemosle el IH. Para eso llamamos al método newInstance con tres parametros en el siguiente orden:</p>
<ul>
<li>classloader : Como hay que crear la definición de una clase al vuelo, esta clase tiene que estar asociada a un classloader que por lo general es this.getClass().getClassLoader()</li>
<li>interfaces: la lista de interfaces que esta clase imaginaria implementa esto nos permite castear el proxy a cualquiera de estas interfaces y utilizarlo como si fuera una instancia de dicha interfaz, transparente para el usuario. Puede ser una lista vacía.</li>
<li>invocationHandler: nuestra instancia de IH que queremos que se encargue de recibir los llamados a los métodos de esta instancia proxy </li>
</ul>
<pre class="brush: java;">

   Object unProxy = Proxy.newProxyInstance( this.getClass().getClassLoader() , new Class[]{ java.util.List.class }, new ManejadorDeInvocaciones(&amp;quot;llamando al metodo &amp;quot;) );
</pre>
<p>Ahora, cualquier método que invoquemos a <em>unProxy</em> automáticamente invocará al método &#8220;invoke&#8221; del IH con la referencia al proxy, método y los argumentos correspondientes. Genial no? Pero si es un Object no podemos llamar a muchos métodos&#8230; para eso está el segundo parámetro, para poder castear nuestro proxy a alguna interfaz de nuestra elección. Por lo tanto lo siguiente es válido:</p>
<pre class="brush: java;">

    List lista = (List) unProxy;
    ....
    lista.add( new Integer(4) );
</pre>
<p>Un detalle, tener en cuenta que el método de la interfaz en si limita un poco la respuesta del método invoke. Por ejemplo, en este caso si el IH devuelve <em>null</em> para la llamada al método <em>boolean add( Object o ) </em>vamos a recibir un lindo <em>NullPointerException</em> con toda razón.</p>
<p>Si para esta altura no se aburrieron de leer ( yo no me aburrí de escribir :P ) les voy a enseñar un truco mas con todo lo aprendido. </p>
<p>Supongamos que queremos una lista que guarda números, pero solo números pares &#8230; (??) si un ejemplo bien básico :D Como harían esto? Sabemos que podemos filtar el tipo con List&lt;Integer&gt; pero no podemos filtrar los valores, para eso tendríamos que extender de ArrayList y reimplementar el método add para agregarle esta loca validación que se me acaba de ocurrir. Otra es hacer un proxy y usarlo como filtro, así:</p>
<pre class="brush: java;">

    // definimos el filtro
    public class ManejadorDeInvocaciones implements InvocationHandler {
        private List&amp;lt;integer&amp;gt; target;
        public ManejadorDeInvocaciones(List&amp;lt;/integer&amp;gt;&amp;lt;integer&amp;gt; target){
            this.target = target;
        }
        // el unico metodo para implementar segun la interfaz
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            if ( method.getName().equals(&amp;quot;add&amp;quot;) ){
                Integer i = (Integer)args[0];
                if (i % 2 == 1) return true;
            }
            return method.invoke( target , args);
        }
    }
    //la lista que tendra los numeros
    List&amp;lt;/integer&amp;gt;&amp;lt;integer&amp;gt; lista = new ArrayList();

    //le asociamos el filtro
    lista = (List&amp;lt;/integer&amp;gt;&amp;lt;integer&amp;gt;)Proxy.newProxyInstance( this.getClass().getClassLoader() , new Class[]{ List.class }, new ManejadorDeInvocaciones(lista) );

    //trabajamos como si fuera una lista comun y corriente
    lista.add( new Integer(5) );
    lista.add( new Integer(2) );
</pre>
<p>Algo para destacar muy importante es el código del filtro queda completamente separado de la instancia _objetivo_, como vemos la definición de la lista ( List ) no conoce el filtro, la implementación de la lista ( ArrayList ) tampoco y ni siquiera el cliente, el usuario de la lista, porque no afecta para nada la manera en la que trabajamos con la lista.  Así como agregamos un filtro de números pares podemos agregar un filtro para transaccionabilidad, un filtro para seguridad con JAAS,  control de concurrencia pero si hacemos todo eso estaríamos haciendo algo muy parecido a lo que hizo JBoss para implementar el stack de EJB 3.0. Eso lo dejo para otro post.</p>
<p>La frutilla del postre viene ahora, con algo que encontré revisando las librerías que vienen con la jdk.</p>
<p>Resulta que cuando queremos llamar a un método usando reflection hay que tener cuidado al buscar la referencia al método que queremos llamar, ya que cuando utilizamos el método java.lang.Class.getMethod(String name, Class&#8230; paramTypes) la busqueda es <strong><em>explicita</em></strong>. Me refiero a que si buscamos el método X que resolvería la jvm para satisfacer Z cantidad de parámetros tenemos que simular la búsqueda del método según las superclases de los tipos de parámetros!!! Suena complicado, y lo es. Suena a que debería estar echo, y lo está&#8230; pero está oculto.   </p>
<p>Explicación &#8220;grafica&#8221; :</p>
<pre class="brush: java;">
assert List.class.getMethod(&amp;quot;add&amp;quot;, Object.class) != null; // esta invocacion devuelve el metodo add
assert List.class.getMethod(&amp;quot;add&amp;quot;, Integer.class) != null; // esto tira la excepcion java.lang.NoSuchMethodException
</pre>
<p>Y tiene sentido, porque aunque cuando llamemos a java.util.List.add( Integer ) sepa a cual nos referimos, el método add( Integer ) no existe. </p>
<p>Para hacer esto podemos mirar pero no usar ( si <span style="text-decoration:line-through;">escucharon</span> leyeron bien ) la clase java.beans.ReflectionUtils del recurso classes.jar, que no tiene javadoc pero tiene una muy linda explicación en la cabecera:</p>
<blockquote><p>/**<br />
 * A utility class for reflectively finding methods, constuctors and fields<br />
 * using reflection.<br />
*/</p></blockquote>
<p>Al parecer es una clase protegida y solo puede ser invocada si estamos desde el mismo paquete, así que lo que yo aconsejo es copiar y pegar todo el código fuente =D total&#8230; no cambia a menos que corran en otra jdk. ( tener cuidado de eso )</p>
<p>De este &#8220;grupo de funciones&#8221; podemos usar <em>Method getPublicMethod(Class declaringClass, String methodName, Class[] argClasses)</em> para encontrar un método que satisfaga los tipo de parámetros que le estamos pasando. Si ven el código fuente se van a dar cuenta que es mucho mas complicado de lo que pensaron jeje.</p>
<p>Bueno eso es todo lo que tengo para decir por el momento de reflection, esto sirve como base para el próximo post sobre un custom interceptor de Seam para hacer algunas cosas locas y para un patrón dinamico de DTO que hice hace mucho, capas le sirve a alguno. Hasta entonces.</p>
<br />Posted in profesional Tagged: ejb, ejemplos, invocationHandler, j2se, java, patrones, proxy, reflection <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=67&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/05/06/javabeans/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>J2SE fashion</title>
		<link>http://sebasjm.wordpress.com/2009/04/20/j2se-fashion/</link>
		<comments>http://sebasjm.wordpress.com/2009/04/20/j2se-fashion/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 14:50:12 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[facelets]]></category>
		<category><![CDATA[gavin king]]></category>
		<category><![CDATA[j2se]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[jsr299]]></category>
		<category><![CDATA[openwebbeans]]></category>
		<category><![CDATA[seam]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[sun-ri]]></category>
		<category><![CDATA[webbeans]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=54</guid>
		<description><![CDATA[Buenas, habrán notado que tuve un pico de blogs y ahora bajo un poco&#8230; no crean que esto va a terminar tan rápido. Simplemente estuve trabajando en algunas cosillas que por supuesto tienen que ver con esta bitácora.  Una de ellas es tener un mirror del blog en inglés, también en wordpresss. Y otra es que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=54&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Buenas, habrán notado que tuve un pico de blogs y ahora bajo un poco&#8230; no crean que esto va a terminar tan rápido. Simplemente estuve trabajando en algunas cosillas que por supuesto tienen que ver con esta bitácora. </p>
<p>Una de ellas es tener un mirror del blog en inglés, también en wordpresss.</p>
<p>Y otra es que me envicié portando la <a href="https://javaserverfaces.dev.java.net/">implementación de Sun</a> de <a href="http://jcp.org/en/jsr/detail?id=127">JSF</a> para J2SE =D . See, hay una nueva moda, cuestionar JEE y preguntar porque estas funcionalidades no lo puedo tener en mis aplicaciones. Esto empezó con Context and Dependecy Injection for Java ( aka jsr-299 ( aka WebBeans ) ) que con mucha lógica dijeron &#8220;Gavin, ¿Qué tiene que ver contextos y DI con JSF y EJB?&#8221; o <a href="http://seamframework.org/Community/WebBeansInNonWebEnvironment">algo similar</a>, ahora me toca a mi seguir con la moda.</p>
<p>Me hice la pregunta ( hace tiempo ya, pero no tengo pruebas =P ) ¿Por qué no puedo utilizar las ventajas de la <a href="http://en.wikipedia.org/wiki/Declarative_programming">programación declarativa</a> en mis aplicaciones desktops y dejar de romperme la cabeza ( aka marote ) en pensar si voy a usar Swing, SWT o similares? Por cierto para tener en cuenta, parece que <a href="http://www.sun.com/third-party/global/oracle/index.jsp">Sun bajó los brazos</a> en este area.</p>
<p>Y el proyecto está avanzando, ayer casi logro levantar un ejemplo pero el spec de JSF parece estar muy ligado al paquete <em>javax.servlet.http</em> y voy a tener que hacer un poco de magia negra, pero de la buena. En cuanto tenga un ejemplo se los muestro, la idea es definir las vistas con JSF/Facelets y implementar un RenderKit para dibujar con la tecnología que queramos. Una vez superado eso agregar Seam, aunque sería óptimo tener una versión GA de OWB ó WB para entonces.</p>
<p> </p>
<p>Salut</p>
<br />Posted in profesional Tagged: facelets, gavin king, j2se, java, jsf, jsr299, openwebbeans, seam, sun, sun-ri, webbeans <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/54/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=54&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/04/20/j2se-fashion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>JBoss Seam</title>
		<link>http://sebasjm.wordpress.com/2009/04/13/jboss-seam/</link>
		<comments>http://sebasjm.wordpress.com/2009/04/13/jboss-seam/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 19:24:28 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[seam]]></category>
		<category><![CDATA[webbeans]]></category>
		<category><![CDATA[jsr299]]></category>
		<category><![CDATA[guice]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[gavin king]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=42</guid>
		<description><![CDATA[Buenas, ya más de una vez me preguntaron y varias veces escuche definiciones no del todo exactas acerca de&#8230; qué es Seam? Antes de escuchar de mis palabras que es Seam, veamos un poco que dice el sitio oficial.( con mis comentarios ) &#8220;Seam is a powerful open source development platform&#8230;&#8221; ( de lo que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=42&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Buenas, ya más de una vez me preguntaron y varias veces escuche definiciones no del todo exactas acerca de&#8230;</p>
<h3>qué es Seam?</h3>
<p>Antes de escuchar de mis palabras que es Seam, veamos un poco que dice el <a href="http://seamframework.org/">sitio oficial</a>.( con mis comentarios )</p>
<p><a href="http://seamframework.org/"></a><strong>&#8220;Seam is a powerful open source development platform&#8230;&#8221;</strong> ( de lo que solo se desprende que es una plataforma =D )</p>
<p><strong>&#8220;Seam integrates technologies such as &#8230;. &#8220;</strong> ( integra tecnologías )</p>
<p><strong>&#8220;&#8230; has been designed from the ground up to eliminate complexity at both architecture and API levels.&#8221;</strong></p>
<p>Si vamos al <a href="http://docs.jboss.com/seam/latest/reference/en-US/html/Book-Preface.html">doc oficial</a>, en la introducción nos cuentan que:</p>
<ul>
<li>[Seam is] One kind of &#8220;stuff&#8221; ( no nos dice mucho )</li>
<li>Integrate JSF with EJB 3.0 ( integración de tecnologías )</li>
<li>Integrated AJAX ( integración de tecnologías )</li>
<li>Business process as a first class construct ( integración de tecnologías )</li>
<li>Declarative state management ( programación declarativa utilizando meta-información )</li>
<li>Bijection ( motor de dependency injection ( &#8230; que sirve para integrar ) )</li>
<li>Workspace management and multi-window browsing ( producto del nuevo manejo de contextos )</li>
<li>Prefer annotations to XML ( marketing )</li>
<li>Integration testing is easy ( &#8230; marketing )</li>
<li>y un par de cosas mas&#8230;</li>
</ul>
<p><span id="more-42"></span></p>
<p>Entonces, de esto se desprenden algunas ( no todas ) de las características mas importantes: la habilidad de integrar tecnologías de diferentes ámbitos a través de la inyección de dependencias. A eso se le agrega un trabajo mas fino de los contextos, tenemos mas contextos lo que no quiere decir que ocupemos más memoria, si no que todo lo contrario vamos a tener más opciones para elegir donde guardar nuestras instancias y estas van a permanecer en memoria el tiempo indicado. Y por último Seam en ingles significa <a href="http://translate.google.com/translate_t#en|es|seam">costura</a>, los que nos da una idea de integración también, si bien una prenda de vestir no está echa solo de costuras ( la tela con la que está echa es mucho mas importante ) forma una parte importante.</p>
<p> </p>
<p>En mi trabajo me pidieron que describiera JBoss Seam para un cliente que no está seguro de querer utilizar dicha tecnología, mi respuesta fue:</p>
<p><em>&#8220;JBoss Seam es una plataforma de integración de tecnologías que tiene como objetivo facilitar el desarrollo de aplicaciones JEE ( sobre todo aplicaciones web ). Es un proyecto Open Source con una comunidad abierta y aunque cuenta con el respaldo de JBoss, su funcionalidad no está ligada al servidor de aplicaciones de este. El desarrollo de Seam, utilizando JSF y EJB que son las tecnologías con mas soporte, es muy ágil ya que reduce el nivel de configuración necesario para la integración y aprovecha al máximo las ventajas de cada una de las tecnologías haciendo al proyecto mas estable, legible, predecible y mantenible.  </em></p>
<div><em>Dado la importancia de las ventajas, Seam principalmente junto a Google Guice y Spring promovieron un nuevo standard ( jsr-299 ) aprobado recientemente por Oracle, IBM, Google, Apache entre otros para ser implementado en la próxima versión de JEE, la JEE 6.&#8221; </em>(es GPL, pueden usarlo mientras nombre al autor con una referencia al post :D )</div>
<p> </p>
<p>Con esto ya deben tener una visión macro de lo que es el producto. Para entrar mas en detalle necesitaría un par de hojas mas y mas tinta porque es bastante extenso, pero les puedo recomendar un <a href="http://www.amazon.com/JBoss-Seam-Simplicity-Beyond-Prentice/dp/0131347969">libro</a> muy bueno que me ayudo en mis comienzos.</p>
<h3>cómo se relaciona Seam con el jsr-299?</h3>
<p>Como recién mencioné, Seam junto a <a href="http://es.wikipedia.org/wiki/Google_Guice">Google Guice</a> y <a href="http://es.wikipedia.org/wiki/Spring_Framework">Spring</a>, impulsaron la necesidad de ponerse de acuerdo en la manera de como Java utilizaba Dependency Injection, definir el nuevo concepto de ciclo de vida de los &#8220;beans&#8221; y normalizar los contextos asociados&#8230; sobre todo el revolucionario contexto conversacional. Hicieron un muy buen trabajo por cierto.</p>
<h3>Seam cumplirá con el jsr-299?</h3>
<p>Por supuesto, va a ser la novedad de la tercera versión de Seam y va a estar disponible para JBoss 5 ( aunque seguramente allá algunos hacks para entonces ;) ). Como no sigo los proyectos de Guice y Spring no se que será de estos frameworks, pero no será distinta la postura.</p>
<p> </p>
<p>Algunos comentarios mas al respecto:</p>
<p> </p>
<ul>
<li>JBoss y Apache ya tienen una implementación de referencia de <em>Contexto and Dependency Injection </em>(aka jsr-299) en un  estado entre alpha y beta&#8230; radioactivo ( busquen en mis post )</li>
<li>Wicket no tiene nada que ver con la especificación, como JSF</li>
<li>Mas sobre jsr-299 en el próximo posts =)</li>
</ul>
<p> </p>
<p> </p>
<p>Saludos</p>
<p>Fuentes:</p>
<p> </p>
<ul>
<li><a href="http://www.infoq.com/news/2009/01/webbeansqa">Entrevista a Gavin King</a></li>
<li><a href="http://jcp.org/en/jsr/detail?id=299">Documentacion del jsr-299</a></li>
</ul>
<br />Posted in profesional Tagged: gavin king, guice, java, jsr299, seam, spring, webbeans <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=42&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/04/13/jboss-seam/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>Estándar no tan estándar?</title>
		<link>http://sebasjm.wordpress.com/2009/04/11/estandar-no-tan-estandar/</link>
		<comments>http://sebasjm.wordpress.com/2009/04/11/estandar-no-tan-estandar/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 17:28:04 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[gurkan erdogdu]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jsr299]]></category>
		<category><![CDATA[openwebbeans]]></category>
		<category><![CDATA[pete muir]]></category>
		<category><![CDATA[webbeans]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=26</guid>
		<description><![CDATA[Como había comentado en el anterior post, mas de un grupo está trabajando en una implementación de Java Context and Dependency Injection ( aka jsr-299 ) por un lado lo tenemos al grupo de Apache con Gurkan Erdogdu a la cabeza y por otro al grupo de JBoss con Pete Muir. Lo que no esperaba encontrarme es [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=26&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Como había comentado en el anterior post, mas de un grupo está trabajando en una implementación de Java Context and Dependency Injection ( aka jsr-299 ) por un lado lo tenemos al grupo de Apache con Gurkan Erdogdu a la cabeza y por otro al grupo de JBoss con Pete Muir.</p>
<p>Lo que no esperaba encontrarme es que ambos tengan diferencias en los fuentes de la interfaces, y no me refiero a la implementación lo cual es completamente entendible, pero si no nos ponemos de acuerdo en las interfaces de entrada&#8230; stamo fritos stamo.</p>
<p>Importante, tener en cuenta las versiones que tomé como referencia:</p>
<ul>
<li>De la implementación de referencia ( RI ) de Pete Muir utilicé la version 1.0.0.BETA1 ya que es la última que cerraron</li>
<li>De la RI de Gurkan Erdogdu tomé la última revisión trunk del SVN público al día de la fecha</li>
</ul>
<p>Pero ¿Qué tipo de diferencias podemos llegar a tener en las interfaces, clases y anotaciones ( teniendo un documento q regule esto ) que influyan en el comportamiento? Hasta ayer me animaba a decir ninguna, pero no es este el caso. Veamos las diferencias:</p>
<p>*Nota: Cuando quiera referirme a la diferencia de códigos voy a utilizar &#8220;gurkan&#8221; para el código de de OpenWebBeans y &#8220;pete&#8221; para el código de WebBeans.</p>
<p> </p>
<h3><span style="color:#c0c0c0;">En las clases</span></h3>
<p>Es lo mas difícil de analizar, ya que no solo tienen que mantener el mismo contrato público ( nombre de métodos, cantidad y tipo de parámetros ) si no que su implementación, sin necesidad de tener las mismas lineas de código debe tener el mismo resultado. Por suerte, solo tenemos dos clases y son fácil de analizar :D.</p>
<p><strong><span style="color:#c0c0c0;">javax.inject.AnnotationLiteral</span></strong></p>
<p>Esta clase ayuda a representar una anotación en forma de una instancia para poder usarla como parámetro de un inyección manual de un componente.</p>
<p>public boolean equals(Object other)</p>
<p>gurkan &#8211; tiene mejores validaciones<br />
pete &#8211; posible NullPointerException en linea 141 cuando el método de una anotación devuelva un valor nulo.</p>
<p><span id="more-26"></span></p>
<div><strong><span style="color:#c0c0c0;">javax.inject.TypeLiteral</span></strong></div>
<div>Esta tiene el mismo fin que la anterior, pero para tipo de datos en general como &#8220;List&lt;String&gt;&#8221;. Al ser tan simple la dos son básicamente lo mismo salvo un pequeño gran detalle, la implementación de Pete no sobre-escribe los metods equals y hashCode. No es trivial la diferencia.</div>
<p> </p>
<h3><span style="color:#c0c0c0;">Pasemos ahora por las las interfaces, en realidad clases abstractas y interfaces </span></h3>
<p> </p>
<p><span style="color:#c0c0c0;"> </span><strong><span style="color:#c0c0c0;">javax.inject.manager.Bean</span></strong></p>
<p>No estoy seguro, pero creo que esta diferencia puede traer problemas de compatibilidad ( compilar con una y utilizar otra en tiempo de ejecución ) y según lo que dice el capitulo 3.11 en la página 39 ( jeje paresco un abogado ) la versión de Gurkan tiene la razón.</p>
<p>pete &#8211; public abstract Set&lt;? extends InjectionPoint&gt; getInjectionPoints();<br />
gurkan &#8211; public abstract Set&lt;InjectionPoint&gt; getInjectionPoints();</p>
<p> </p>
<p><strong><span style="color:#c0c0c0;">javax.inject.manager.Decorator</span></strong></p>
<p>Acá hay un problema grave, los nombres de los métodos no concuerdan. Y según la documentación, específicamente en la página 113 de jsr-299 dice que Pete tiene razón.</p>
<p>pete &#8211; public abstract Set&lt;Annotation&gt; getDelegateBindings();<br />
gurkan &#8211; public abstract Set&lt;Annotation&gt; getDelegateBindingTypes();</p>
<p> </p>
<p><strong><span style="color:#c0c0c0;">javax.inject.manager.Manager</span></strong></p>
<p>La verdad no se que diferencias puede traer, pero ya que estamos la nombramos. Si alguien sabe, que me lo explique. </p>
<p>pete &#8211; public &lt;T&gt; T getInstanceToInject(InjectionPoint injectionPoint, CreationalContext&lt;?&gt; creationalContext);<br />
gurkan &#8211; public &lt;T&gt; T getInstanceToInject(InjectionPoint injectionPoint, CreationalContext&lt;T&gt; context);</p>
<h3><span style="color:#c0c0c0;">Y por último, pero no memos importante, las anotaciones:</span></h3>
<div>Acá podemos categorizar las diferencias para analizarlo mas detalladamente, desde la menos reelevante a la mas _peligrosa_</div>
<div>
<ol>
<li>Existencia / ausencia de @javax.lang.annotation.Documented: No hace mucha diferencia, solo si la anotación va a ser documentada o no.</li>
<li>Existencia de @javax.inject.Production: Pertenece a las mismas APIs de las que estamos hablando. Su funcionalidad es habilitar o inhabilitar la anotación en distintas configuraciones de deployment. Por ejemplo, si anotamos con @Production la anotación @Model, @Model será ignorada en un deployment que no sea el de producción</li>
<li>Diferencias en el atributo @Target: Teniendo uno o mas valores vamos a poder usar la anotación en mas o menos lugares.</li>
<li>Existencia / ausencia de @javax.lang.annotation.Inherited: Creo que es la diferencia que hace mas ruido. Si agregamos esta información a una anotación afectará por transición a todas las subclases de la clase anotada.</li>
</ol>
</div>
<p><strong><span style="color:#c0c0c0;">javax.annotation.Named</span></strong></p>
<p>pete &#8211; @Target( { TYPE, METHOD, FIELD })<br />
gurkan &#8211; @Target( { TYPE, METHOD })</p>
<p><strong><span style="color:#c0c0c0;">javax.webbeans.Model</span></strong></p>
<p>gurkan - @Production<br />
gurkan - @Documented<br />
gurkan - @Inherited</p>
<p><strong><span style="color:#c0c0c0;">javax.interceptor.Interceptor</span></strong></p>
<p>gurkan - @Inherited</p>
<p><strong><span style="color:#c0c0c0;">javax.context.ApplicationScoped</span></strong></p>
<p>pete &#8211; @Target( { TYPE, METHOD, FIELD })<br />
gurkan - @Target( { TYPE, METHOD })</p>
<p><strong><span style="color:#c0c0c0;">javax.context.ConversationScoped</span></strong></p>
<p>pete &#8211; @Target( { TYPE, METHOD, FIELD })<br />
pete &#8211; @Documentend<br />
gurkan - @Target( { TYPE, METHOD })</p>
<p><strong><span style="color:#c0c0c0;">javax.decorator.Decorator</span></strong></p>
<p>gurkan - @Inherited</p>
<p><span style="color:#c0c0c0;"> </span><strong><span style="color:#c0c0c0;">javax.event.Asynchronously</span></strong></p>
<p>pete &#8211; @Documented</p>
<p><strong><span style="color:#c0c0c0;">javax.inject.Disposes</span></strong></p>
<p>gurkan - @Documented</p>
<p><strong><span style="color:#c0c0c0;">javax.inject.New</span></strong></p>
<p>pete &#8211; @Target( { FIELD, PARAMETER })<br />
gurkan - @Target( { METHOD, FIELD, PARAMETER })</p>
<p><strong><span style="color:#c0c0c0;">javax.inject.Production</span></strong></p>
<p>pete &#8211; @Target( { TYPE, METHOD, FIELD })<br />
gurkan - @Target( { TYPE, METHOD })</p>
<p><strong><span style="color:#c0c0c0;">javax.inject.Standard</span></strong></p>
<p>pete &#8211; @Target( { TYPE, METHOD, FIELD })<br />
gurkan - @Target( { TYPE, METHOD })</p>
<p> </p>
<p>Fuentes</p>
<ul>
<li>Versión 1.0.0.BETA de WebBeans desde <a href="http://anonsvn.jboss.org/repos/webbeans/ri/tags/1.0.0.BETA1/">svn</a> </li>
<li>Revisión 764218 de OpenWebBeans desde <a href="https://svn.apache.org/repos/asf/incubator/openwebbeans/trunk/">svn</a></li>
<li>Jsr-299 versión actualizada desde el <a href="http://jcp.org/aboutJava/communityprocess/pr/jsr299/index.html">sitio oficial</a></li>
</ul>
<br />Posted in profesional Tagged: gurkan erdogdu, java, jsr299, openwebbeans, pete muir, webbeans <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=26&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/04/11/estandar-no-tan-estandar/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>OpenWebBeans</title>
		<link>http://sebasjm.wordpress.com/2009/04/10/openwebbeans/</link>
		<comments>http://sebasjm.wordpress.com/2009/04/10/openwebbeans/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 13:01:57 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jsr299]]></category>
		<category><![CDATA[webbeans]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=23</guid>
		<description><![CDATA[Una buena noticia para mi, una muy buena para todos los que seguimos de cerca la JSR-299 y que solo conocían de la implementación del equipo de JBoss de esta especificación. Navegando por la web encontré que Gurkan Erdogdu viene trabajando este tema desde hace rato en su blog y hasta tiene su propia implementación: OpenWebBeans Habrá que seguirla [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=23&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Una buena noticia para mi, una muy buena para todos los que seguimos de cerca la JSR-299 y que solo conocían de la implementación del equipo de JBoss de esta especificación.</p>
<p>Navegando por la web encontré que Gurkan Erdogdu viene trabajando este tema desde hace rato en su <a href="http://gurkanerdogdu.blogspot.com/" target="_blank">blog</a> y hasta tiene su propia implementación: <a href="http://incubator.apache.org/openwebbeans" target="_blank">OpenWebBeans</a></p>
<p>Habrá que seguirla de cerca para ver como evoluciona, groso.</p>
<p>P.D.: Al parecer tiene otro <a href="http://gurkanerdogdu.wordpress.com/2008/10/28/openwebbeans-is-accepted/" target="_blank">blog</a></p>
<p>Salut</p>
<br />Posted in profesional Tagged: java, jsr299, webbeans <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=23&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/04/10/openwebbeans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>Comming soon&#8230;</title>
		<link>http://sebasjm.wordpress.com/2009/04/09/comming-soon/</link>
		<comments>http://sebasjm.wordpress.com/2009/04/09/comming-soon/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 23:21:48 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=17</guid>
		<description><![CDATA[Para no perder el camino/idea del blog y para darle un poco mas de forma a esto que crece ( tampoco para que me sirva de machete =D ) voy a hacer un resumen de los  temas quiero tratar acá: Dependency Injection and Contexto for Java (aka WebBeans) Stress testing en aplicaciones web utilizando  Seam [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=17&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para no perder el camino/idea del blog y para darle un poco mas de forma a esto que crece ( tampoco para que me sirva de machete =D ) voy a hacer un resumen de los  temas quiero tratar acá:</p>
<ul>
<li>Dependency Injection and Contexto for Java (aka WebBeans)</li>
<li>Stress testing en aplicaciones web utilizando  Seam ( JSF, EJB, Seam )</li>
<li>DynamicDTO, un mini proyecto abandonado que revive desde lo obscuro</li>
<li>JBoss 5 y OSGi</li>
<li>Seam en general</li>
</ul>
<p>Quizás me olvide de algo, pero mas o menos es eso y hasta con ese orden de importancia.</p>
<p>Así que ya saben, por si estos temas no les interesa/gustan los temas ;)</p>
<p>Salut</p>
<br />Posted in profesional  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=17&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/04/09/comming-soon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>Service Locator + Seam</title>
		<link>http://sebasjm.wordpress.com/2009/04/09/service-locator-seam/</link>
		<comments>http://sebasjm.wordpress.com/2009/04/09/service-locator-seam/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 21:10:34 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[profesional]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[patrones]]></category>
		<category><![CDATA[seam]]></category>

		<guid isPermaLink="false">http://sebasjm.wordpress.com/?p=10</guid>
		<description><![CDATA[que es el patrón service locator? como se usa? problemas comunes y una manera de resolverlo utilizando las herramientas de Jboss Seam<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=10&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>Un patrón muy utilizado dentro del mundo JEE es el conocido Service Locator, sobre todo para acceder a instancias de EJBs como vamos a ver en el ejemplo mas adelante.</p>
<p>Lamentablemente, aunque se detecta la necesidad de un componente que resuelva el problema de acceder ciertos servicios no siempre la solución implementada cumple con los requisitos o la manera de resolverlo tiene resultados no esperados, como por ejemplo hacer que dicho patrón sea estático o mezclarlo con un Singleton y sumar al caldo un cache _global_ de Stateful Session Bean (aka SFSB), aunque irónicamente se haga cache de Stateless Session Bean (aka SLSB) con el mismo fin. Está bien, en ciertas ocasiones un cache no vendría mal pero vale la pena analizarlo a fondo porque, como _toda_ solución de cache ( deberían anotarlo si no lo saben ), trae muchos efectos colaterales&#8230; muchos.</p>
<p>Primer problema, supongamos que decidimos hacer a la instancia del Service Locator (desde ahora SL) estática porque observamos que no importa el estado del SL, para un nombre de SB queremos que nos devuelva dicho SB sea SF o SL. Si la instancia del Service Locator es única los SFSB que quedan asociados van a ser los mismos para cada llamado dentro de la aplicación, haciendo a nuestro SFSB un servicio estático también.</p>
<p>Segundo problema, si la referencia que tenemos a cada SFSB se mantienen abierta durante mas tiempo de lo que necesitamos y tenemos un problema de conexión o cualquier otro imprevisto ya no hay manera de volver a usar dicho servicio si no renovamos la referencia, esto va sobretodo para aquellos que usan los SFSB con &#8220;métodos estáticos&#8221; o sin estados como por ejemplo &#8220;int sumarDos(int base)&#8221;. Para que se entienda, si tenemos un SFSB asociado a la sesión y el servidor de EJBs se reinicia entro dos llamados, el segundo llamado va a fallar porque el id de SFSB que tiene el cliente que consume dicho servicio no existe en el servidor de EJBs, tirando la siguiente excepción:</p>
<p>javax.ejb.NoSuchEJBException: Could not find stateful bean: &lt;super_id_largo_y_horrible&gt;</p>
<p>Los problemas, o mejor dicho las causas de perder la referencia a un SFSB pueden ser varias ( no siempre un problema ), las mas comunes:</p>
<ul>
<li>Reinicio del servidor de EJBs, si tenemos el cliente y los ejbs en diferentes máquinas virtuales</li>
<li>Inactividad por un tiempo prolongado. Recuerden que los SFSB son uno por cliente, por lo que el contenedor de EJBs destruirá cualquier SFSB que esté inactivo por mas tiempo que por configuración se le indica.</li>
<li>Si llamamos a un método con la anotación @javax.ejb.Remove pero mantenemos la referencia al SFSB.</li>
<li>etc..</li>
</ul>
<p>Solución: NO guardar ninguna instancia de Session Bean en un Service Locator, por mas tentadora que parezca la idea, por mas creamos que sea una buena optimización. En el único caso que vale la pena es cuando sabemos que vamos a consumir solo SLSB, pero como el cliente supuestamente no sabe nada sobre la implementación de los servicios esta solución nos puede traer mas dolores de cabeza mas tarde.</p>
<p> </p>
<p>Dicho esto y como el titulo prometía hablar de JBoss Seam vamos a ver que les parece mi propuesta. Mi Service Locator, si bien van a ver que las clases tienen dependencias de runtime en Seam, la idea principal se puede usar sin este framework.</p>
<p>Empecemos por el principio, el punto de vista del usuario del patrón. ¿Cuál es el mejor Service Locator que conocen? Yo el @EJB, vamos a ver que tan parecido lo podemos hacer.</p>
<p>Hay una anotación de Seam muy parecida, @org.jboss.seam.annotations.In que nos permite inyectar dependencias, el problema es que no queremos hacer un componente diferente por cada implementación que valla a utilizar el cliente, a lo sumo llamaremos al SL con el nombre del EJB que queremos utilizar. Y como hacemos eso con Expression Language (EL) ? Un mapa de ejbs :D</p>
<p>Sería algo como esto:</p>
<pre class="brush: java;">
    @org.jboss.seam.annotations.In(&quot;#{locator['myEJBImplBean']}&quot;)
    private MyEjbInterface mei;
</pre>
<p>Excelente, entonces _locator_ es nuestro componente encargado de encontrar los servicios, nuestro Service Locator. Pero como que es un Mapa? Veamos la implementacion</p>
<pre class="brush: java;">
@Name(&quot;locator&quot;)
@Scope(ScopeType.APPLICATION)
public class EjbLocator implements Serializable {

    public Object locate(String name) throws RuntimeException {
        try {
            String jndi = Init.instance().getJndiPattern();
            return new InitialContext().lookup( jndi.replace(&quot;#{ejbName}&quot;, name) );
        } catch (NamingException ex) {
            log.error(&quot;Error inicializando el ejb &quot; + name , ex);
        }
        return null;
    }

    @Unwrap
    public Map&lt;string ,Object&gt; getResource(){
        return new Map&lt;/string&gt;&lt;string ,Object&gt;(){

            public Object get(Object key) {
                return locate((String)key);
            }

            /* .... muchos metodos que no tiene sentido agregar ... */

            public Object put(String key, Object value) {
                throw new UnsupportedOperationException(&quot;Not supported yet.&quot;);
            }

        };
    }

}
</pre>
<p>Nota:</p>
<ul>
<li>Todas las anotaciones están bajo el paquete org.jboss.seam.annotations</li>
<li>La instancia de InitialContext se podría generar menos seguido</li>
<li>Obviamente quite código q no venia al caso :)</li>
</ul>
<p>Entonces, tenemos un componente Singleton que nos sirve como Service Locator que cuando hacemos referencia a él lo que obtenemos es un mapa. Cuando busquemos un objeto dentro del mapa con la key X, el SL intentará encontrar una referencia a un EJB con el nombre X.</p>
<p>Claramente, los métodos pueden ser estáticos pero la verdad en este caso no hace la diferencia, la magia está en como esto se mezcla con Dependency Injection y Expression Language. Sientanse libres de mandar sugerencias, ideas, correcciones o simples comentarios.</p>
<p>Y como decían en Nivel-X, bueeeno.. esto fue todo y espero q les haya gustado. ( espero que no tenga copyright =P )</p>
<br />Posted in profesional Tagged: ejemplos, java, patrones, seam <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=10&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/04/09/service-locator-seam/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://sebasjm.wordpress.com/2009/04/08/hello-world/</link>
		<comments>http://sebasjm.wordpress.com/2009/04/08/hello-world/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 15:47:49 +0000</pubDate>
		<dc:creator>Sebastian Javier Marchano</dc:creator>
				<category><![CDATA[social]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[primer post, referencia de como postear código fuente<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=1&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Primer post de sebasjm en wordpress&#8230; vamos a ver que sale de esto. Parece mucho mas potente que mi anterior blog, aunque a ese no lo empecé con tantas ganas.</p>
<p>Y.. lo primero es lo primero, como va a ser una bitácora de lo que me valla surgiendo en la mente que tenga que ver java principalmente ya estuve averiguando algo importante&#8230; como postear código java y diferenciarlo del texto de entrada común y silvestre. No fue complicado, algunos queries mágicos al motor de búsqueda por defecto y encontramos algo bastante bueno.</p>
<p>Un ejemplo:  </p>
<pre class="brush: java;">
   public class PrimerPost {
      public static void main (String args[]) {
         System.out.println (&amp;quot;wordpress rulz!&amp;quot;);
      }
   }
</pre>
<p>Salut</p>
<p>Fuente:</p>
<ul>
<li><a href="http://support.wordpress.com/code/#posting-source-code">wordpress support</a></li>
</ul>
<br />Posted in social  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sebasjm.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sebasjm.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sebasjm.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sebasjm.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sebasjm.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sebasjm.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sebasjm.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sebasjm.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sebasjm.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sebasjm.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sebasjm.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sebasjm.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sebasjm.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sebasjm.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sebasjm.wordpress.com&amp;blog=7282653&amp;post=1&amp;subd=sebasjm&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sebasjm.wordpress.com/2009/04/08/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/db35e4014a5ff3296b17f7789c57d162?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sebasjm</media:title>
		</media:content>
	</item>
	</channel>
</rss>
