<?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/"
	>

<channel>
	<title>3f blog &#187; java</title>
	<atom:link href="http://blog.soluciones3f.com.ar/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.soluciones3f.com.ar</link>
	<description>Experiencias compartidas</description>
	<lastBuildDate>Tue, 01 Nov 2011 18:08:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Ejecutar un webservice en tomcat 6 con jdk 1.6 y jax-ws</title>
		<link>http://blog.soluciones3f.com.ar/2010/06/22/ejecutar-un-webservice-en-tomcat-6-con-jdk-1-6-y-jax-ws/</link>
		<comments>http://blog.soluciones3f.com.ar/2010/06/22/ejecutar-un-webservice-en-tomcat-6-con-jdk-1-6-y-jax-ws/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 16:49:27 +0000</pubDate>
		<dc:creator>fafa</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jax-ws]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=565</guid>
		<description><![CDATA[Se que muchos deben haber andado buscando una forma sencilla de resolver el típico problema: ¿Cómo hago un webservice de java tan fácil como lo hago con .NET? Se dice, la nueva arquitectura de java, es muy buena. Se que es posible, se que gente que la usa, pero en ningún lado encontré una forma [...]]]></description>
			<content:encoded><![CDATA[<p>Se que muchos deben haber andado buscando una forma sencilla de resolver el típico problema: ¿Cómo hago un webservice de java tan fácil como lo hago con .NET? Se dice, la nueva arquitectura de java, es muy buena. Se que es posible, se que gente que la usa, pero en ningún lado encontré una forma concreta y práctica que garantice su funcionamiento. Bueno, no estoy seguro que sea eso lo que piensen, lo que si estoy seguro es que eso fue lo que me pasó a mi&#8230; y no es poca cosa, debo agregar. Me costó un poco encontrar una respuesta coherente que sea fácil de transmitir, de ahí, este post.<br />
Intentaré describir en dos niveles, el primero con un ejemplo práctico y el segundo detallando cada función usada. ¿Por qué? porque prefiero que la gente que lea esto entienda el por qué de las cosas que se están haciendo.</p>
<ol>
<li>Crear un proyecto Web (no importa la herramienta, son siempre iguales)</li>
<li>Configurar el web.xml indicándole que direcciones los pedidos (de alguna  url) al servlet de jax-ws</li>
<pre class="brush: xml; title: ; notranslate">
&lt;listener&gt;
	&lt;listener-class&gt;
		com.sun.xml.ws.transport.http.servlet.WSServletContextListener
	&lt;/listener-class&gt;
&lt;/listener&gt;
&lt;servlet&gt;
	&lt;description&gt;## descripción del Servlet ##&lt;/description&gt;
	&lt;display-name&gt;## nombre a mostrar entre los servicios ejecutándose en el servidor ##&lt;/display-name&gt;
	&lt;servlet-name&gt;## nombre de referencia dentro del xml para el Servlet ##&lt;/servlet-name&gt;
	&lt;servlet-class&gt;
		com.sun.xml.ws.transport.http.servlet.WSServlet
	&lt;/servlet-class&gt;
	&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;## nombre de referencia dentro del xml para el Servlet ##&lt;/servlet-name&gt;
	&lt;url-pattern&gt;/##url_dentro_de_la_aplicacion_para_el_servlet##&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
</pre>
<li>Crear un <strong>WEB-INF/sun-jaxws.xml</strong> que contenga:</li>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'&gt;
	&lt;endpoint name='##nombre_de_la_aplicacion##' implementation='paquete.ClaseConAnotacionWebService' url-pattern='/url_asignada_al_servlet_del_webservice' /&gt;
&lt;/endpoints&gt;
</pre>
<li>Configurar las clases que se desea publicar como WebService, con un<strong> @WebService</strong></li>
<li><a href="https://jax-ws.dev.java.net/jax-ws-20-fcs/jaxws-2_0.jar">Descargar el jax-ws</a> (la descarga es un jar, que al clickear muestra una licencia y al aceptar descomprime muchos archivos). Hay que copiar todos los *.jar dentro del directorio $CATALINA/lib</li>
<li>Al desplegar la aplicación web, dentro de un WAR, en el tomcat, el jax generará automáticamente los wsdl y todo archivo necesario para publicar el webservice.</li>
</ol>
<p>Espero que con esto se entienda, links de referencia:</p>
<ul>
<li><a href="http://mywheel.net/blog/index.php/2007/04/18/deploying-java-6-web-services-in-tomcat/">http://mywheel.net/blog/index.php/2007/04/18/deploying-java-6-web-services-in-tomcat/</a></li>
<li><a href="http://mywheel.net/blog/index.php/2007/03/28/web-services-in-java-6/">http://mywheel.net/blog/index.php/2007/03/28/web-services-in-java-6/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2010/06/22/ejecutar-un-webservice-en-tomcat-6-con-jdk-1-6-y-jax-ws/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Utilizar packages en grails&#8230; una necesidad?</title>
		<link>http://blog.soluciones3f.com.ar/2010/02/10/utilizar-packages-en-grails-una-necesidad/</link>
		<comments>http://blog.soluciones3f.com.ar/2010/02/10/utilizar-packages-en-grails-una-necesidad/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 19:15:22 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
				<category><![CDATA[grails]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[controllers]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[gorm]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[namespace]]></category>
		<category><![CDATA[packages]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=483</guid>
		<description><![CDATA[Todos sabemos que en Java es una muy buena práctica la utilización de packages, a tal punto que para casi todo programador de Java es casi una obligatoriedad. El concepto de package en si es muy bueno, casi todos los lenguajes modernos lo tienen de una u otra manera, con un nombre u otro. Se [...]]]></description>
			<content:encoded><![CDATA[<p>Todos sabemos que en Java es una muy buena práctica la utilización de packages, a tal punto que para casi todo programador de Java es casi una obligatoriedad.</p>
<p>El concepto de package en si es muy bueno, casi todos los lenguajes modernos lo tienen de una u otra manera, con un nombre u otro. Se utilizan para evitar coliciones de nombres entre diferentes espacios de nombres.</p>
<p>De tal manera, que en el package paypal puede existir la clase Payment y en el package AlertPay tener otra clase con el mismo nombre Paypal sin ninguna relación con la anterior y cohexistir en el mismo proyecto. Cuando hay una duda (ambiguedad) sobre que clase se esta utilizando basta con escribir el nombre entero de la clase, incluido el package a la que pertenece y listo.</p>
<p>Diciendo esto cualquiera podria ver que tienen cierta utilidad especialmente cuando se comienzan a mezclar codigos desarrolaldos en diferentes lugares (ala plugins) en un mismo proyecto y no se puede tener control sobre que dos desarrolladores no elijan nombres que entren en conflicto.</p>
<p>¿Pero que sucede con grails? Desde la versión 1.2.0 cuando se crea cualquier artefact (ya sea un controller, un dominio, un servicio, etc) y no se le especifica un package, aparece un warning diciendo que es aconsejable utilizar siempre un package al cual hay que contestar con yes, para poder seguir adelante.</p>
<p>Eso es algo bueno, pero por la forma en que funciona Grails los packages pierden un poco su sentido.  No pueden haber dos clases de Dominio, ni dos clases Controllers que tengan el mismo nombre aunque esten definidas en packages diferentes! Se entiende esto dado que Grails utiliza los nombres de las cases para su &#8220;Convention Over Configuration&#8221; y de esa manera mapear facilmente los dominios a tablas con GORM, o las urls para acceder a los Controllers. (Aclaro que lo entiendo, y seguramente hay implicancias ténicas para que sea así, pero me gustaría se le encontrara alguna vuelta)</p>
<p>Mi caso puntual, que me motivo a escribir este post, es que estaba realizando un plugin para realizar pagos que tenía una clase de dominio llamada Payment, y debía utilizar este plugin en un proyecto que utiliza el plugin de Paypal el cual también tiene una clase de dominio llamada Payment.</p>
<p>Al incluir los dos plugins en un mismo proyecto y ejecutar la aplicación se genera el siguiente error:</p>
<p><code><br />
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageSource': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.DuplicateMappingException: duplicate import: Payment refers to both com.soluciones3f.tpv.Payment and org.grails.paypal.Payment (try using auto-import="false")<br />
</code></p>
<p>No investigaré como resolver este problema, simplemente cambiaré el nombre de mi clase para salir del  paso y continuar sin problemas. Pero en todo caso es un problema latente que me gutaría encontrarle alguna solución.</p>
<p>Esto llevaría a pensar que, si igualmente voy a tener colision de nombres entre paquetes, ¿para que usar packages? El problema es que a veces queremos usar packages para order el código (dado que para usar packages se crean directorios.. esto lo ordena un poco y evita tener un unico directorio que mezcla Exceptions, Strategies, Utilites, etc en una sopa indistinguible)  pero si alguna de estas clases que SI pertenecen a un package necesita usar una clase de dominio, que por lo que dije antes decidí no poner en un package&#8230; ahí esta nuevamente el problema.</p>
<p>Grails, o groovy si vamos al caso, heredan la limitación de Java de no poder hacer un import del package (default). Aquel package al que van a parar todas las clases sin package. En consecuencia no tengo forma de usarlas. Entonces, nuevamente, es muy recomendable usar siempre packages a pesar de que grails le quite un poco de sentido.</p>
<p>Por lo pronto, recomiendo ponerle package a todo, ya que tal vez nos puede ahorrar un dolor de cabeza si despues aparece un package que necesita usar lo que ya habia hecho antes, y si bien voy a tener que seguir coordinándome con el resto del universo para no tener dos clases con el mismo nombre, el esfuero que representa usar packages no es tan grande como para no hacerlo y desear que algún día se resuelva este problema.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2010/02/10/utilizar-packages-en-grails-una-necesidad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Actualización a Grails 1.1.1 cuando uno tiene configurado IVY</title>
		<link>http://blog.soluciones3f.com.ar/2009/05/20/actualizacion-a-grails-111-cuando-uno-tiene-configurado-ivy/</link>
		<comments>http://blog.soluciones3f.com.ar/2009/05/20/actualizacion-a-grails-111-cuando-uno-tiene-configurado-ivy/#comments</comments>
		<pubDate>Wed, 20 May 2009 19:56:54 +0000</pubDate>
		<dc:creator>fafa</dc:creator>
				<category><![CDATA[gnu linux]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=320</guid>
		<description><![CDATA[Hace poco más de un mes, estamos trabajando fuertemente en el desarrollo de una (en realidad más de una) aplicación web construida con la herramienta de orquestación GRAILS. Es interesante como está construida porque, para los fanáticos de MAVEN (por ejemplo) da un paso más adelante y prepara una serie de cualidades en el entorno [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco más de un mes, estamos trabajando fuertemente en el desarrollo de una (en realidad más de una) aplicación web construida con la herramienta de <em>orquestación</em> GRAILS. Es interesante como está construida porque, para los fanáticos de MAVEN (por ejemplo) da un paso más adelante y prepara una serie de cualidades en el entorno que simplifica mucho a la hora de desarrollar. Para quienes no entienden del tema, tendrán más detalles en un POST <em>proximamente</em>.</p>
<p>Una de estas aplicaciones que estamos desarrollando con Grails tiene configurado el plugin de IVY; IVY es un manejador de dependencias que está dentro del <em>paquete</em> de herramientas de Apache; cuando intentamos hacer el upgrade (desde la versión 1.1 a 1.1.1) nos encontramos con una serie de errores:</p>
<pre>Error executing script Upgrade: : java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;ZZ)Ljava/io/File;
gant.TargetExecutionException: : java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;ZZ)Ljava/io/File;
        at gant.Gant$_dispatch_closure4.doCall(Gant.groovy:331)
        at gant.Gant$_dispatch_closure6.doCall(Gant.groovy:334)
        at gant.Gant$_dispatch_closure6.doCall(Gant.groovy)
        at gant.Gant.withBuildListeners(Gant.groovy:344)
        at gant.Gant.this$2$withBuildListeners(Gant.groovy)
        at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
        at gant.Gant.dispatch(Gant.groovy:334)
        at gant.Gant.this$2$dispatch(Gant.groovy)
        at gant.Gant.invokeMethod(Gant.groovy)
        at gant.Gant.processTargets(Gant.groovy:495)
        at gant.Gant.processTargets(Gant.groovy:480)
Caused by: : java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;ZZ)Ljava/io/File;
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:115)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at Upgrade$_run_closure1.doCall(Upgrade:82)
        at Upgrade$_run_closure2.doCall(Upgrade:261)
        at gant.Gant$_dispatch_closure4.doCall(Gant.groovy:324)
        ... 10 more
Caused by: java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;ZZ)Ljava/io/File;
        at org.apache.tools.ant.taskdefs.optional.ReplaceRegExp.doReplace(ReplaceRegExp.java:326)
        at org.apache.tools.ant.taskdefs.optional.ReplaceRegExp.execute(ReplaceRegExp.java:527)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
        ... 17 more</pre>
<p>Básicamente el problema es que el script que ejecuta GRAILS pone en classpath en primera instancia nuestro directorio <em>lib</em>, en condiciones normales esto sería lógico (porque nuestra aplicación puede usar una versión más nueva de algo que GRAILS no usa) pero en estas condiciones resulta en un error del script conocido como <strong>Upgrade.groovy</strong> es por eso que terminamos ese error.</p>
<p><strong>¿Cuál es la solución? </strong>Fácil, movemos a un directorio temporario <span style="text-decoration: underline;">todo</span> nuestro directorio lib, ejecutamos upgrade y volvemos a mover todo al lugar donde estaba <img src='http://blog.soluciones3f.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Tendremos la aplicación actualizada sin mayores problemas, jijiji.</p>
<p>La idea, no fue mía, fue obra y gracia de Google <img src='http://blog.soluciones3f.com.ar/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Aquí el <a href="http://www.nabble.com/grails-upgrade-fails-with-NoSuchMethodException-for-createTemporaryFile()-td22957488.html">link</a> original.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2009/05/20/actualizacion-a-grails-111-cuando-uno-tiene-configurado-ivy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JBoss Tools, la ¿evolución? de JBoss IDE</title>
		<link>http://blog.soluciones3f.com.ar/2008/07/28/jboss-tools-la-%c2%bfevolucion-de-jboss-ide/</link>
		<comments>http://blog.soluciones3f.com.ar/2008/07/28/jboss-tools-la-%c2%bfevolucion-de-jboss-ide/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 16:37:46 +0000</pubDate>
		<dc:creator>fafa</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jboss]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=94</guid>
		<description><![CDATA[Muchos de los programadores Java de hoy en día usan JBoss como servidor de aplicaciones. Para aquellos que nunca tuvieron la oportunidad, les cuento que JBoss es muy reconocido por ser de los primeros servidores de aplicación empresarial gratuito y open source. Otros siguieron su ejemplo. Hibernate (el framework ORM más usado hoy en día [...]]]></description>
			<content:encoded><![CDATA[<p>Muchos de los programadores Java de hoy en día usan JBoss como servidor de aplicaciones. Para aquellos que nunca tuvieron la <em>oportunidad</em>, les cuento que JBoss es muy reconocido por ser de los primeros servidores de aplicación empresarial gratuito y open source. Otros siguieron su ejemplo. Hibernate (el framework ORM más usado hoy en día en la comunidad Java está muy bien integrado con JBoss). No es casualidad que tanto Christian Bauer como Gavin King participaran en ambos proyectos.</p>
<p>Lo interesante es que gracias al gran crecimiento que tuvo JBoss y su comunidad, Red Hat se vió interesada y compró la empresa. Atrás de eso, se construyó el JBoss Studio, una especie de Websphere hecho por y para JBoss. Pero, claro, para no descuidar la comunidad open source, el equipo de JBoss tambíen distribuye una <em>pack</em> de plugins que convierten al Eclipse es un paso intermedio entre JBoss IDE y Eclipse SDK <em>pelado</em>.</p>
<p>Si van a trabajar con Eclipse y JBoss, les recomiendo usar el JBoss Tools. Lamentablemente tuve algunos problemas para poder usarlo con el Ganymede (la última versión de Eclipse, 3.4), pero en la versión anterior me ha funcionado bastante bien.</p>
<p>Aquí <a href="http://www.jboss.org/tools/download/index.html">el link</a> para poder bajar todas las utilidades de jboss tools.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2008/07/28/jboss-tools-la-%c2%bfevolucion-de-jboss-ide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JBoss en MyEclipse (lo bueno, si breve, dos veces bueno)</title>
		<link>http://blog.soluciones3f.com.ar/2008/05/29/configurar-un-jboss-u-otros-con-myeclipse-601/</link>
		<comments>http://blog.soluciones3f.com.ar/2008/05/29/configurar-un-jboss-u-otros-con-myeclipse-601/#comments</comments>
		<pubDate>Thu, 29 May 2008 22:47:06 +0000</pubDate>
		<dc:creator>fafa</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[myeclipse]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=72</guid>
		<description><![CDATA[El MyEclipse es una especie de super plugin que tiene todas las cosas que uno podría alguna vez necesitar para desarrollar Java. Los que saben algo de Java, saben que no siempre suele ser simple, ni intuitivo. De hecho, también saben que hay tantas miles de formas de hacer lo mismo que puede ser frustrante [...]]]></description>
			<content:encoded><![CDATA[<p>El MyEclipse es una especie de <em>super</em> plugin que tiene todas las cosas que uno podría alguna vez necesitar para desarrollar Java. Los que saben algo de Java, saben que no siempre suele ser simple, ni intuitivo. De hecho, también saben que hay tantas miles de formas de hacer lo mismo que puede ser frustrante intentar encontrar algo que cumpla exactamente con nuestras necesidades. Con MyEclipse, esto se hace un poquito más fácil.</p>
<p>Obvio, aquellos que me conocen, saben perfectamente que soy un fan de MyEclipse. Lo soy porque más de una vez me ha sacado de aprietos. Me ha simplificado la vida. Seamos sinceros. Si algo te simplifica la vida, ¡por qué no agarrarlo fuerte!</p>
<p>En este próximo <strong><em>Tutorial</em></strong> les voy a contar cómo levantar en pocos pasos un JBoss. Debo aclarar que, al ser MyEclipse tan estandard, este mismo criterio se puede usar para cualquier Servidor de Aplicaciones de Java (sea Tomcat, Geronimo, Resin, etc).</p>
<p><span id="more-72"></span></p>
<p><strong>Start up &#8211; ¿Qué será necesario?<br />
</strong></p>
<ul>
<li>JBoss 4.2.2</li>
<li>MyEclipse 6.01 (personalmente, prefiero el full bundle)</li>
<li>JDK 1.5 (es la versión más probada y <em>aceptada</em>)</li>
<li>Concepto: Deploy, del inglés, despliegue.</li>
</ul>
<p><strong>Paso a paso</strong></p>
<p>1. Primero, lo primero, <a href="http://blog.soluciones3f.com.ar/2008/05/13/trucos-para-levantar-un-workspace-de-eclipse/">configuramos un Eclipse</a> para este ejemplo.</p>
<p>2. Nos aseguramos de haber <a href="http://blog.soluciones3f.com.ar/2008/05/02/configurar-un-jdk-en-el-eclipse/">configurado un JDK</a>, porque lo vamos a necesitar después.</p>
<p>3. Nos bajamos un JBoss. En este ejemplo yo bajé la versión 4.2.2-GA, pero es prácticamente lo mismo. La pueden bajar de <a href="http://www.jboss.org/jbossas/downloads/">la página de JBoss</a>. Lo descomprimimos en algún lado y recordamos el directorio. Yo, la tengo en <strong>c:\windows\java\jboss-4.2.2.GA</strong>.</p>
<p>4. Dentro de nuestro Eclipse. Windows-&gt;Preferences-&gt;Server-&gt;JBoss-&gt;JBoss 4.x</p>
<p><a href="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/jboss_paso1.png" rel="lightbox[72]"><img class="alignnone size-medium wp-image-73" title="jboss_paso1" src="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/jboss_paso1-300x249.png" alt="" width="300" height="249" /></a></p>
<p>Debemos activarlo (1.) y después definir el directorio dónde está el JBoss (2.) que para nuestro ejemplo, es el que descomprimimos en el punto 3.</p>
<p>5. Configuramos el JDK con el que se lanzará el JBoss. <strong>Comentario:</strong> el JBoss (tanto como otros Application Server) se ejecutan dentro de una máquina virtual de Java. Eso es, justamente, un JRE. Por ser un servidor de aplicaciones, necesita tener funciones de compilación y es por eso que es <strong>necesario</strong> configurarle un JDK. Básicamente, para dejarle al JBoss compilar Java.</p>
<p><a href="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/jboss_paso2.png" rel="lightbox[72]"><img class="alignnone size-medium wp-image-75" title="jboss_paso2" src="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/jboss_paso2-300x256.png" alt="" width="300" height="256" /></a></p>
<p>6. Ahora, dentro de la ventana principal del Eclipse, podemos hacer Windows-&gt;Show View-&gt;Server y nos aparecerá como se indica en la figura, todos los servidores que tenemos configurados (en mi caso es un JBoss, pero obviamente podría ser cualquier otro)</p>
<p><a href="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/jboss_paso3.png" rel="lightbox[72]"><img class="alignnone size-medium wp-image-76" title="jboss_paso3" src="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/jboss_paso3-300x183.png" alt="" width="300" height="183" /></a></p>
<p>7. Dentro de esta <em>vista</em> tenemos que hacer <em>click derecho</em>: &#8220;Manage Deployments&#8221; y nos permitirá agregar alguna aplicación. Las aplicaciones que MyEclipse nos dejará ejecutar en el servidor serán: EJB Project, Web Service Project, Web Project. No querrá hacer un despliegue de aplicaciones Java comunes u otro tipo de proyecto soportado por el eclipse.</p>
<p><a href="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/jboss_paso4.png" rel="lightbox[72]"><img class="alignnone size-medium wp-image-77" title="jboss_paso4" src="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/jboss_paso4-300x255.png" alt="" width="300" height="255" /></a></p>
<p>8. Ahora bien, una vez que aceptamos eso. El MyEclipse mantendrá sincronizado nuestro código con el servidor y así nos simplificará <strong>mucho</strong> la vida. Tenemos que iniciar el JBoss para ver nuestra aplicación funcionar. Se puede iniciar, como todo en Java, en modo Debug (si queremos hacer depuración) como Normal (si queremos más performance).</p>
<p><a href="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/jboss_paso5.png" rel="lightbox[72]"><img class="alignnone size-medium wp-image-78" title="jboss_paso5" src="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/jboss_paso5-300x116.png" alt="" width="300" height="116" /></a></p>
<p>9. <strong>¡Listo! </strong>la aplicación debería estar funcionando perfectamente en el servidor. Si es una aplicación web, podríamos verla en un navegador. El puerto predeterminado de JBoss, es el 8080&#8230;</p>
<p>¡Disfruten!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2008/05/29/configurar-un-jboss-u-otros-con-myeclipse-601/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Trucos para levantar un Workspace de Eclipse</title>
		<link>http://blog.soluciones3f.com.ar/2008/05/13/trucos-para-levantar-un-workspace-de-eclipse/</link>
		<comments>http://blog.soluciones3f.com.ar/2008/05/13/trucos-para-levantar-un-workspace-de-eclipse/#comments</comments>
		<pubDate>Tue, 13 May 2008 21:13:49 +0000</pubDate>
		<dc:creator>fafa</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[workspace]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=66</guid>
		<description><![CDATA[Aunque todos creemos saber que nuestra técnica es siempre la mejor&#8230; a veces es interesante compararlas. Justamente en el caso de Eclipse, por ser una herramienta tan versatil, existen muchas formas de hacer lo mismo. En adelante les mostraré algunos trucos (tips, hints, ideas) para simplificar la tarea diaria de uso de Eclipse y permitir, [...]]]></description>
			<content:encoded><![CDATA[<p>Aunque todos creemos saber que <em>nuestra </em>técnica es siempre la mejor&#8230; a veces es interesante compararlas. Justamente en el caso de Eclipse, por ser una herramienta tan versatil, existen muchas formas de hacer lo mismo.</p>
<p>En adelante les mostraré algunos trucos (tips, hints, ideas) para simplificar la tarea diaria de uso de Eclipse y permitir, al mismo tiempo, reducir los altos costos de aprendizaje que implican. En adelante cómo manejar un buen workspace y cómo hacer para que el compilador interno del Eclipse no nos genere conflictos con svn. El ejemplo está ilustrado con Eclipse 3.3, otras versiones deberían tener funciones similares pero quedan fuera de esta explicación.</p>
<p><span id="more-66"></span></p>
<p><strong>¿Cómo preparar un <em>buen</em> workspace?</strong></p>
<p>Al arrancar por primera vez un Eclipse, nos pasa que nos pregunta dónde vamos a querer tener nuestro workspace. Para el inexperto, eso podría significar solamente dónde va a poner Eclipse los proyectos Java. Como todo en Java, eso <em>no es tan así</em>. Lo que pasa es que Eclipse requiere guardar información temporaría, llamada <em>metadata</em>, y otros parámetros de configuración que solo dependerán de ese workspace.</p>
<p>En un comienzo podríamos pensar que es algo malísimo, porque tenemos un directorio <em>muerto</em> dentro de nuestra máquina con información que no entendemos. Pero <strong>no es así</strong>, ese directorio guarda información referente a los proyectos asociados, y es una genial alternativa para cuando uno trabaja con diferentes tecnologías o conjuntos de proyectos (imaginen que necesitan usar Java 6 para una aplicación, otra con Java 5 y otra con Java 1.4&#8230; ahora imaginen que cada una tiene diferentes configuraciones de variables y cuestiones directamente relacionadas con la configuración del Eclipse&#8230; esta información está toda guardada dentro del .metadata del directorio correspondiente al workspace). Podemos aprovechar esto para simplificarnos la vida.</p>
<ol>
<li>Creamos 2 directorios directorio, ejemplo:<br />
<em>c:\blog3f\src </em>- dónde pondremos nuestros proyectos (o haremos un download de svn/cvs)<br />
<em>c:\blog3f\ws </em>- dónde apuntaremos el Eclipse</li>
<li>Configuramos un acceso directo a Eclipse, y dentro de las propiedades le agregamos a la linea de comando:<em> &#8220;-data c:\blog3f\ws</em>&#8221; sin las comillas.</li>
<li>Arrancamos el Eclipse, no preguntará dónde está el workspace, justamente, porque en el punto anterior le dijimos con el parámetro<em> -data</em>.</li>
<li>Configuramos ese workspace cómo nos guste.</li>
<li>Si queremos crear proyectos, recordar que la idea es que queden en <em>c:\blog3f\src</em>, entonces si queremos crear el proyecto Post1, en el asistente debemos ingresar tanto el nombre del proyecto (Post1) como el directorio dónde iría a dejarse (<em>c:\blog3f\src\Post1</em>)</li>
<li>Si queremos importar un proyecto (que sería el caso de algo que bajamos de svn/cvs) hacemos File-&gt;Import-&gt;Existing project into Workspace e indicamos el directorio (<em>c:\blog3f\src</em>). Nos dará la opción de seleccionar los poyectos existentes en ese directorio src.</li>
</ol>
<p><strong>Nota: </strong>recordar que si no hay un .project o un .classpath dentro del directorio del proyecto el paso 6, no encontrará el proyecto y habrá que <em>simular</em> un paso 5 apuntando al directorio que tiene faltantes el .project .classpath</p>
<p><strong>¿Cómo evitar que los directorios .svn nos hagan un embrollo?</strong></p>
<p>Si están acostumbrados a usar svn, les gusta el tortoise y entienden cómo funciona. Sabrán que un directorio .svn en cada directorio. El problema con esto es que Eclipse automáticamente los copia adentro del directorio compilado.</p>
<p>Si tenemos un directorio de compilación diferente a dónde tenemos el código fuente, terminará, el Eclipse, diciendole al svn que nuestro directorio <em>compilado</em> equivale a la rama de svn de nuestro <em>código fuente</em>. Dando diferente tipo de errores cuando queramos hacer un commit. <img src='http://blog.soluciones3f.com.ar/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>La alternativa es fácil, tienen que cambiar la configuración del workspace. Dentro de windows-&gt;preferences-&gt;java-&gt;compiler-&gt;building, miren la imagen,</p>
<p><a href="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/eclipseexclude.png" rel="lightbox[66]"><img class="alignnone size-medium wp-image-67" title="eclipseexclude" src="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/eclipseexclude-300x258.png" alt="" width="300" height="258" /></a></p>
<p>En la próxima clase, cómo configurar un jboss con myeclipse, después @EJB 3 con cliente Swing remoto, después @EJB 3 persistencia (JPA)&#8230; sintonicen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2008/05/13/trucos-para-levantar-un-workspace-de-eclipse/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>DB2 y Java: No los llamaría amigos&#8230;</title>
		<link>http://blog.soluciones3f.com.ar/2008/05/09/db2-y-java-no-los-llamaria-amigos/</link>
		<comments>http://blog.soluciones3f.com.ar/2008/05/09/db2-y-java-no-los-llamaria-amigos/#comments</comments>
		<pubDate>Fri, 09 May 2008 18:22:42 +0000</pubDate>
		<dc:creator>fafa</dc:creator>
				<category><![CDATA[celulares]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[sociedad]]></category>
		<category><![CDATA[db2]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=63</guid>
		<description><![CDATA[En mi día a día de trabajo, es habitual tener que enfrentarse con DB2 como base de datos. Es más habitual aun hacerlo con utilidades y funciones de Java, porque es en esta tecnología que trabajo. En adelante una de las varias aventuras que un desarrollador tiene que enfrentarse para poder hacer sus tareas cuando [...]]]></description>
			<content:encoded><![CDATA[<p>En mi día a día de trabajo, es habitual tener que enfrentarse con DB2 como base de datos. Es más habitual aun hacerlo con utilidades y funciones de Java, porque es en esta tecnología que trabajo. En adelante una de las varias aventuras que un desarrollador tiene que enfrentarse para poder hacer sus tareas cuando se trabaja con DB2+Java.</p>
<p><strong>Introducción</strong></p>
<p>DB2 es un motor de base de datos construido por IBM. En los últimos tiempos con mucha inversión se ha logrado posicionar dentro de las más grandes compañías del mundo. Principalmente porque aquellas empresas que tienen Mainframe/Cobol prefieren seguir contando con su proveedor de tecnología. Así es como IBM es la mejor opción.</p>
<p>Por otro lado, dentro de este mismo marco tecnológico, al usar IBM para base de datos, también se prefiere usar IBM para entornos de desarrollo de nueva generación. Es así como decide usarse WebSphere en estas ocasiones. El WebSphere es otra &#8220;grandiosa&#8221; herramienta de IBM de la que vamos a hablar en otra ocasión.</p>
<p><span id="more-63"></span></p>
<p><strong>Problema</strong></p>
<p>Cuando de Java se trata, es muy habitual necesitar una librería JDBC para acceder a una base de datos. Hay diferentes tipos de <em>niveles </em>JDBC y cada nivel tendrá su correspondiente driver y clase de implementación para la Conexión (java.sql.Connection). Los factores que yo considero graves a la hora de usar DB2 como base de datos desde Java son:</p>
<ul>
<li>En versiones antiguas de DB2 driver, era necesario instalar un <em>listener </em>(pequeño demonio en el servidor) que escuara los pedidos de JDBC, porque trabaja en un nivel no nativo. Este <em>listener</em> transformaría los pedidos remotos en bajo nivel, cuestión que DB2 lo interprete (o sea, el driver en el cliente es <strong>muy </strong>bobo y solo reenvia los pedidos e interpreta las respuestas)</li>
<li>Las versiones antes mencionadas muestran errores coherentes y claros cuando hay problemas, sin embargo la descripción de los errores, en drivers nuevos,  son con códigos, pero códigos <strong>feos</strong>, que uno tiene que interpretar mágicamente. Ejemplo: <em>SQLCODE: -401, SQLSTATE: 42818 </em>para decirnos que los operadores no son compatibles.</li>
<li>La actualización de los drivers. Mi peor problema. <strong>¡No exsiten!</strong> es prácticamente imposible encontar un driver lisa y llanamente. Es necesario recorrer toda internet y bajarse un paquete integramente de drivers para DB2, descomprimirlo manualmente y, para colmo de males, descomprimir un .CAB para así sacarles los drivers necesarios para conexión.</li>
<li>En lo que Java respecta, hay instalaciones de DB2 en dónde no funcionan bien algunos métodos de obtención de Metadata (DatabaseMetadata), para lo cuál también hablaremos en algún momento <img src='http://blog.soluciones3f.com.ar/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</li>
</ul>
<p><strong>Solución</strong></p>
<p>Probablemente si llegaron aquí es porque quieren algunas respuestas. Respuestas a nivel informativo, respuestas porque han tenido problemas similares a los mios o sencillamente porque ya agotaron todos los recursos que tuvieron disponibles. Lamentablemente cuando se trata de DB2 cada instalación es un mundo y decirles que tengo la solución es dificil&#8230; pero voy a hacerles algunas sugerencias que pueden ser útiles.</p>
<ul>
<li>Para bajar los drivers, hacerlo de <a href="http://www6.software.ibm.com/sdfdl/v2/regs2/db2pmopn/Xa.2/Xb.aXUaG6wmL0xUX2e2Iij82AAHcmhrjzuT-geAg5I/Xc.db2_v9_nt32_client.zip/Xd./Xf.Lpr.D1vk/Xg.4394652/Xi.swg-db2jdw/XY.regsrvs/XZ.4_Uqjj0JR8ydxAKDHMb-k_qeENs/db2_v9_nt32_client.zip">este link</a> (<strong>upd: </strong><a href="http://www-01.ibm.com/support/docview.wss?uid=swg21288110&amp;rs=0&amp;cs=utf-8&amp;context=SSEPGG&amp;dc=D400&amp;loc=en_US&amp;lang=en&amp;cc=US">nuevo link</a>). Si les pide usuario, dense de alta, es gratis y no te llenan la casilla de Spam. Aviso, es un archivo de casi 300mb (gracias IBM por sobrecargar la red)</li>
<li>Al bajar ese archivo, descomprimirlo en algún lado y buscar el archivo db2_v9_nt32_client.zip\CLIENT\image\db2\Windows\JDBC0001.cab (esto es en la versión que yo bajé). Ese archivo contiene algunos archivos .AAAAAA2677C3 borrar esta extensión, deberían quedar archivos .JAR y .ZIP. Estos son los drivers JDBC para DB2.</li>
<li>Los errores son bastante habituales, pero no desesperen. Hay una genial página de IBM que supuestamente tiene detalle de todos los errores con una cierta descripción. <a href="http://publib.boulder.ibm.com/infocenter/db2help/topic/com.ibm.db2.udb.doc/core/r0sttmsg.htm">DB2 Universal Database &#8211; SQL Messages.</a></li>
<li>Cuando se intenta obtener información de MetaData, a veces es bueno no especificar el tipo de dato que estamos buscando (por ejemplo, si queremos ver la estructura de una tabla y nuestro acceso es a través de su sinónimo, mejor no indicar tabla, dejar que el driver traiga lo que crea conveniente)</li>
</ul>
<p><strong>Referencias</strong></p>
<p><a href="http://www.ibm.com/developerworks/db2/library/techarticle/dm-0512kokkat/#install">http://www.ibm.com/developerworks/db2/library/techarticle/dm-0512kokkat/#install</a></p>
<p><a href="http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.apdv.java.doc/doc/tjvjcccn.htm">http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.apdv.java.doc/doc/tjvjcccn.htm</a></p>
<p><a href="http://uda.openlinksw.com/jdbc/mt/jdbc-db2-mt/">http://uda.openlinksw.com/jdbc/mt/jdbc-db2-mt/</a></p>
<p><a href="https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?lang=en_US&amp;source=swg-idsjs11">https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?lang=en_US&amp;source=swg-idsjs11</a></p>
<p><strong>Conclusión</strong></p>
<p>Espero haberles sido de ayuda&#8230; debo confesar que diariamente lucho contra esto. Creo que IBM hace un buen trabajo de bajo nivel, pero cuando tiene que poner un poco sobre el programador o usuario, se queda medio corto.</p>
<p>Los drivers de DB2 deberían estar super pulidos, hasta Oracle tiene unos drivers Excelentes.. pero más allá de eso prácticamente todas las comunidades opensource tienen drivers geniales. Hasta SQL Server da unos drivers excelentes. ¡A ver si aprendemos ibm!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2008/05/09/db2-y-java-no-los-llamaria-amigos/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Configurar un JDK en el Eclipse</title>
		<link>http://blog.soluciones3f.com.ar/2008/05/02/configurar-un-jdk-en-el-eclipse/</link>
		<comments>http://blog.soluciones3f.com.ar/2008/05/02/configurar-un-jdk-en-el-eclipse/#comments</comments>
		<pubDate>Fri, 02 May 2008 15:02:04 +0000</pubDate>
		<dc:creator>fafa</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javadoc]]></category>
		<category><![CDATA[jdk]]></category>
		<category><![CDATA[setup]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=55</guid>
		<description><![CDATA[Empecemos describiendo las diferencias entre un JDK y un JRE. JDK = Java Development Kit, o sea, Kit de desarrollo para Java. JRE = Java Runtime Environment, o sea, entorno de ejecución de aplicaciónes Java. Está claro, entonces, que tenemos que tener configurado un JDK si vamos a desarrollar. Justamente está previsto para la gente [...]]]></description>
			<content:encoded><![CDATA[<p>Empecemos describiendo las diferencias entre un JDK y un JRE.</p>
<ul>
<li><strong>JDK</strong> = Java Development Kit, o sea, Kit de desarrollo para Java.</li>
<li><strong>JRE</strong> = Java Runtime Environment, o sea, entorno de ejecución de aplicaciónes Java.</li>
</ul>
<p>Está claro, entonces, que tenemos que tener configurado un JDK si vamos a desarrollar. Justamente está previsto para la gente de Sun y es por eso que el Eclipse recien nos dará ayuda en linea, si tenemos configurado un JDK. Irónico es que, por <em>default</em>, el Eclipse venga configurado con un JRE.</p>
<p>Otra cosa importante es tener el <em>compliance level</em> en la misma versión que el JDK que estemos usando.</p>
<p>En adelante, describiré con cierto detalle cómo configurar un Eclipse correctamente para simplificar el desarrollo.</p>
<p><span id="more-55"></span>Asumimos para este tutorial que el que lo está leyendo sabe lo que es el Eclipse, lo tiene instalado y arrancado y puede seguir las instrucciones. Si no, <em>nos dicen</em> y haremos un nuevo post sobre cómo instalar el Eclipse y qué técnicas les recomendamos para sobrellevarlo <img src='http://blog.soluciones3f.com.ar/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p><strong>1. Bajar un JDK</strong><br />
Para nuestro ejemplo, debemos tener instalado un JDK, eso se puede bajar directamente de <a href="http://java.sun.com/javase/downloads/index.jsp" target="_blank">la página de Sun</a>. Ojo al piojo que queremos bajar el JDK Update y no otra cosa. Aquí una imagen.</p>
<p><a href="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/jdk.png" rel="lightbox[55]"><img class="alignnone size-medium wp-image-56" title="jdk" src="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/jdk-300x234.png" alt="" width="300" height="234" /></a></p>
<p>Para los nuevos, una pequeña nota.</p>
<p>JDK 1.4 =&gt; JDK 1.4<br />
JDK 1.5 =&gt; JDK 5<br />
JDK 1.6 =&gt; JDK 6</p>
<p><strong>2. Configurar el JDK dentro del Eclipse</strong></p>
<p>Para configurar el JDK, tenemos que ir a la configuración del Eclipse. Para eso hacemos Windows-&gt;Preferences. Buscamos la opción <em>Installed JREs</em>.</p>
<p><a href="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/eclipsejres1.png" rel="lightbox[55]"><img class="alignnone size-medium wp-image-58" title="eclipsejres1" src="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/eclipsejres1-300x184.png" alt="" width="300" height="184" /></a></p>
<p>Dentro de esta ventana, seleccionamos <em>Add&#8230;</em> y apuntamos a dódne tenemos instalado nuestro JDK. Hay que tomar mucha atención, estamos dentro de la opción <em>Installed JREs</em> y seleccionando un <em>JDK </em>para que sea agregado. Puede sonar confuso. Para mi lo es. Habría que preguntarle a la gente de Eclipse por qué lo hicieron de esta forma. Por favor, recordar, <strong>tenemos que agregar un JDK</strong> (y <span style="text-decoration: underline;">no</span> un JRE). A modo de ejemplo, yo tengo mi jdk 1.6.01. Eso no requiere mayor atención.</p>
<p><a href="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/eclipsejresadd.png" rel="lightbox[55]"><img class="alignnone size-medium wp-image-59" title="eclipsejresadd" src="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/eclipsejresadd-300x267.png" alt="" width="300" height="267" /></a></p>
<p><strong>3. Configurar el <em>compliance level </em>de Eclipse</strong></p>
<p>Una vez configurado el JDK como JRE (si, ya dijimos es medio ambiguo), tenemos que asegurarnos que el Eclipse va a seguir nuestras versiones correctamente. Eso es, validar nuestro código como si fuera código del JDK correspondiente que tenemos. Si usamos un JDK 1.6, tenemos que tener el compliance level en 6.0. Si usamos un JDK 1.4, tenemos que tener el compliance level en 1.4. He aquí una pantalla.</p>
<p><a href="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/eclipsecompliance.png" rel="lightbox[55]"><img class="alignnone size-medium wp-image-60" title="eclipsecompliance" src="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/eclipsecompliance-300x198.png" alt="" width="300" height="198" /></a></p>
<p><strong>4. El toque final</strong></p>
<p>Para algunos es suficiente tener una ayuda de código en linea, para otros, es muy lindo ver una ventana dentro del Eclipse que nos de ayuda de los métodos. ¡Esto es posible! El Eclipse es una herramienta genial que nos permite hacer casi cualquier cosa. Para eso, en cualquier perspectiva que estemos, activamos la ventana JavaDoc. Tenemos que ir Window-&gt;Show View-&gt;Javadoc (o apretar <em>Alt+Shift+Q, J</em>)</p>
<p>Miren abajo para el juego final.</p>
<p><a href="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/eclipseinaction.png" rel="lightbox[55]"><img class="alignnone size-medium wp-image-61" title="eclipseinaction" src="http://blog.soluciones3f.com.ar/wp-content/uploads/2008/05/eclipseinaction-300x282.png" alt="" width="300" height="282" /></a></p>
<p>Como verán, con solo pararse arriba de cualquier método (que sea de la JDK, obviamente) nos dará una ayuda excelente para que podamos trabajar más tranquilos y con menos esfuerzo.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2008/05/02/configurar-un-jdk-en-el-eclipse/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Instalar Java de Sun en Ubuntu Gutsy Gibbon</title>
		<link>http://blog.soluciones3f.com.ar/2008/03/15/instalar-java-de-sun-en-ubuntu-gutsy-gibbon/</link>
		<comments>http://blog.soluciones3f.com.ar/2008/03/15/instalar-java-de-sun-en-ubuntu-gutsy-gibbon/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 19:15:22 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
				<category><![CDATA[gnu linux]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[blackdown java]]></category>
		<category><![CDATA[gutsy gibbon]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[java sun]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/2008/03/15/instalar-java-de-sun-en-ubuntu-gutsy-gibbon/</guid>
		<description><![CDATA[Esto más que un post con algo informativo es más un recordatorio a mi mismo sobre como hacer esto, que siempre me olvido y termino con problemas. Hoy se me dio por instalar la ultima versión de Eclipse en mi computadora. Cuando lo ejecuto me dice que requiere Java igual o superior a 1.5, entonces [...]]]></description>
			<content:encoded><![CDATA[<p>Esto más que un post con algo informativo es más un recordatorio a mi mismo sobre como hacer esto, que siempre me olvido y termino con problemas.</p>
<p>Hoy se me dio por instalar la ultima versión de <a href="http://www.eclipse.org/">Eclipse</a> en mi computadora. Cuando lo ejecuto me dice que requiere Java igual o superior a 1.5, entonces fue momento de instalarlo.</p>
<p>El proceso es como cualquier otro al comienzo:</p>
<p style="border: 1px solid black; padding: 4px; background-color: #ffffcc; font-family: monospace; font-size: smaller"><font color="#0000ff">$ sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts</font></p>
<p>El secreto es que luego no hay que olvidar de ejecutar:</p>
<p style="border: 1px solid black; padding: 4px; background-color: #ffffcc; font-family: monospace; font-size: smaller"><font color="#0000ff">$ sudo update-java-alternatives -s java-6-sun</font></p>
<p>de lo contrario es probable que aún este usando alguna otra máquina virtual.</p>
<p>Para asegurarnos de que estamos ejecutando la correcta, basta ejecutar en la terminal: &#8220;java -version&#8221;. En mi caso ahora dice Java version 1.6.0_03, sin embargo antes de ejecutar update-java-alternatives me decía 1.4.2 Blackdown lo cual me estaba dando muchos dolores de cabeza al no entender porque si habia instalado una versión 1.6 aun me decía 1.4</p>
<p>En fin, espero que  a alguien esto le sea útil como me fue a mi.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2008/03/15/instalar-java-de-sun-en-ubuntu-gutsy-gibbon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Herramientas de Java</title>
		<link>http://blog.soluciones3f.com.ar/2008/03/06/herramientas-de-java/</link>
		<comments>http://blog.soluciones3f.com.ar/2008/03/06/herramientas-de-java/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 18:15:46 +0000</pubDate>
		<dc:creator>fafa</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[poo]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/2008/03/06/herramientas-de-java/</guid>
		<description><![CDATA[Usualmente descubro lo poco que se de algunas cosas. Se que la gente no me considera modesto, sin embargo, a veces siento que soy un completo desconocedor de todo. Aunque, debo confesar, soy de las personas que usan el conocimiento de otros para apoyar sus propias hipótesis. Es así como hace cosa de unos meses [...]]]></description>
			<content:encoded><![CDATA[<p>Usualmente descubro lo poco que se de algunas cosas. Se que la gente no me considera modesto, sin embargo, a veces siento que soy un completo desconocedor de todo. Aunque, debo confesar, soy de las personas que usan el conocimiento de otros para apoyar sus propias hipótesis.</p>
<p>Es así como hace cosa de unos meses encontré una herramienta genial para preparar <a href="http://java.sun.com/products/jndi/">JNDI</a> dentro de una plataforma de pruebas <a href="http://www.junit.org/">JUNIT</a>. La herramienta se llama jrUnitTestHelper. La he probado y me resultó sumamente útil. Me sorprendió también encontrar que la persona que mejoró esa herramienta tiene <a href="http://faq.javaranch.com/java/CodeBarn">una interesante coleccción</a> de otras utilidades.</p>
<p>Les sugiero a todos los javianos por ahí, tenerla en cuenta porque: No tiene sentido intentar reinventar la rueda. Si está hecho, usarlo, si se puede mejorar, mejorarlo. Si no, a quemarse la cabeza. Esta última opción es menos preferida, pero puede pasar.</p>
<p>The JavaRanch Codebarn &#8211; <a href="http://faq.javaranch.com/java/CodeBarn ">http://faq.javaranch.com/java/CodeBarn</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2008/03/06/herramientas-de-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

