<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-486216609369260092</id><updated>2012-01-31T15:22:05.960+01:00</updated><category term='Struts'/><category term='Servlets'/><category term='Programación con Pruebas'/><category term='SQL'/><category term='CSS'/><category term='Diccionario'/><category term='Problemas/Soluciones'/><category term='Web Services'/><category term='Hibernate'/><category term='HashMap'/><category term='Datamart'/><category term='AJAX'/><category term='JSTL'/><category term='Threads'/><category term='Java'/><category term='AppFuse'/><category term='Acegi'/><category term='Componentes Web'/><category term='JQUERY'/><category term='XSTL'/><category term='SpringFrameWork'/><category term='Xml'/><category term='Tutoriales'/><category term='Maven'/><category term='Eclipse'/><category term='CMS'/><category term='Seam-Gen'/><category term='JSF'/><category term='Enum'/><category term='Pentaho'/><category term='Applet'/><title type='text'>El Misterioso Mundo de Java</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://noelia-java.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default?start-index=101&amp;max-results=100'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>245</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-6155952687357733132</id><published>2012-01-31T15:01:00.006+01:00</published><updated>2012-01-31T15:22:05.967+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Applet'/><title type='text'>Applet</title><content type='html'>Un applet es una clase Java que se incrusta en una página HTML y que se  descarga y ejecuta con un navegador. Es un tipo específico de contenedor  de tecnología Java.&lt;br /&gt;&lt;br /&gt;Para ejecutar un applet, el navegador lo carga y después invoca un  método init para realizar la inicialización básica del applet. Cuando  termina init, el navegador invoca el método start. Este método se invoca  en general cuando el applet se hace visible. El método stop se invoca  cuando el applet se hace invisible, esto es, cuando el navegador es  minimizado o sigue un enlace a otro URL.&lt;br /&gt;&lt;br /&gt;Normalmente, un applet se ejecuta dentro de un navegador aunque, para  simplificar y acelerar el desarrollo, se usa la herramienta appletviewer  diseñada para visualizar applets. Es una aplicación Java que permite la  ejecución de applets sin utilizar un navegador. Se puede considerar  como un navegador mínimo.&lt;br /&gt;&lt;br /&gt;Otros elementos del applet:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;getDocumentBase --&amp;gt;&lt;/span&gt;Devuelve un objeto URL que describe el directorio de la página  actual del navegador, donde reside el fichero HTML con la etiqueta  applet.  &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;         &lt;span style="font-weight: bold;"&gt;getCodeBase --&amp;gt;&lt;/span&gt;Devuelve un objeto URL que describe el directorio fuente del  fichero de la clase Applet. Frecuentemente es el mismo que el directorio  del fichero HTML, pero no siempre es así.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;getImage(URL base, String target) --&amp;gt;&lt;/span&gt;Extrae una imagen del fichero indicado por target localizado en  el URL especificado por base. El valor devuelto es una instancia de la  clase Image.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;getAudioClip(URL)--&amp;gt;&lt;/span&gt; base, String target)       Extrae un sonido del fichero indicado por target localizado en  el URL especificando por base. El valor devuelto es una instancia de la  clase java.applet.AudioClip.La manera  más fácil de escuchar un sonido es usando alguno de los métodos play de  la clase Applet.También tenemos loop que reproduce el sonido indefinidamente y stop que finaliza la reproducción del sonido.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;En un fichero HTML, una etiqueta "&amp;lt; param &amp;gt;" en un contexto "&amp;lt; applet &amp;gt;" puede pasar información de configuración al applet. Estos parámetros se recogen desde el código del applet por medio de getParameter(nombre). Si el nombre del parámetro no se puede encontrar, devuelve null. El tipo del parámetro es siempre String. Si se desea de otro tipo, se debe convertir.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-6155952687357733132?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6155952687357733132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6155952687357733132'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2012/01/applet.html' title='Applet'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-895590429735781560</id><published>2012-01-26T12:38:00.010+01:00</published><updated>2012-01-26T14:15:27.329+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Excepciones</title><content type='html'>Las excepciones se generan en la máquina  virtual de Java, como respuesta a una condición inesperada, o en el  código, como resultado de la ejecución de una instrucción &lt;span class="negrita"&gt;throw&lt;/span&gt;.                  &lt;br /&gt;&lt;br /&gt;Una excepción puede ocurrir por dos razones:    &lt;ol type="1"&gt;&lt;li class="ListaNumerada"&gt;      Porque se produzca un error en tiempo de ejecución en la máquina  virtual de Java: en tal caso, se crea una instancia de un objeto       excepción (cualquier objeto que descienda de la clase &lt;span class="negrita"&gt;java.lang.Throwable&lt;/span&gt;). A estas excepciones se les denomina        &lt;span style="font-weight: bold;" class="negrita"&gt;excepciones no verificadas&lt;/span&gt;.    &lt;/li&gt;&lt;li class="ListaNumerada"&gt;      Porque un método genere explícitamente un objeto que descienda de la clase &lt;span class="negrita"&gt;Throwable&lt;/span&gt; (generable): los       objetos generables se generan mediante la palabra clave &lt;span class="negrita"&gt;throw&lt;/span&gt;. Las excepciones generadas de esta forma se denominan       &lt;span class="negrita"&gt;&lt;span style="font-weight: bold;"&gt;excepciones verificadas&lt;/span&gt;.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;Vamos a explicar más detalladamente los tipos de excepciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Excepciones no verificadas&lt;/span&gt;--&amp;gt;se generan por errores en tiempo de ejecución. Son no verificadas  ya que el compilador no es capaz de determinar si el código gestiona la  excepción debido a que un error en tiempo de ejecución puede ocurrir en  cualquier parte de un programa y por multitud de razones.Las clases de excepción que descienden de las clases &lt;span class="negrita"&gt;RuntimeException&lt;/span&gt; y &lt;span class="negrita"&gt;Error&lt;/span&gt; son excepciones no verificadas.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Excepciones verificadas&lt;/span&gt; --&amp;gt;Las excepciones son verificadas por dos razones:&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;El compilador comprueba durante la  compilación que el método incluye código para generar una excepción de  tipo generable (las excepciones no verificadas no necesitan que las  declaremos).&lt;/li&gt;&lt;li&gt;El compilador obliga a que el código que  llame a uno de estos métodos incluya la llamada en una instrucción  try-catch y que proporcione un bloque catch para capturar la excepción.    &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Las clases de excepción que descienden de las clases Throwable (Error y Exception) son excepciones verificadas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-895590429735781560?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/895590429735781560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/895590429735781560'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2012/01/excepciones.html' title='Excepciones'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4364887476090288155</id><published>2012-01-22T20:44:00.011+01:00</published><updated>2012-01-31T12:33:55.846+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Clases animadas</title><content type='html'>La tecnología Java permite declarar una clase dentro de otra. Éstas son llamadas &lt;b&gt;clases anidadas&lt;/b&gt;. La clase que contiene estas clases anidadas recibe el nombre de &lt;b&gt;clase exterior o contenedora&lt;/b&gt;. &lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0.5cm"&gt;Una clase anidada tiene acceso a todos los atributos y métodos de la clase contenedora. Una clase anidada puede ser declarada public, protected, private o package (por defecto). Por el contrario, la clase contenedora sólo puede ser declarada public o package (por defecto). También, a diferencia de las clases contenedoras, una clase anidada puede ser declarada estática (static).&lt;br /&gt;Las clases anidadas pueden ser divididas en dos categorías:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;b&gt;Clases anidadas no estáticas&lt;/b&gt;  ( clases internas) --&amp;gt; Las clases internas tienen acceso directo  a los métodos y los campos de la clase exterior, así como a los  métodos y los campos que hereda de su superclase. Pero, debido a  que una clase interna se ha cargado sólo dentro del contexto de una  instancia de su clase exterior, no podemos definir ningún miembro  estático.&lt;/p&gt;  &lt;p style="margin-bottom: 0cm"&gt;Tenemos dos tipos diferente de clases  anidad no estáticas:&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ol&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;b&gt;Clases internas locales:&lt;/b&gt;  Una clase interna local (a veces llamada clase local), es una clase  declarada dentro de un bloque de código en el cuerpo de un método.  Una clase interna local sólo es visible dentro del bloque de código  en el que se ha definido&lt;b&gt;.&lt;/b&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;b&gt;Clases internas anónimas&lt;/b&gt; →   Las clases internas anónimas (también llamada clases anónimas),  son muy similares a las clases internas locales, pero sin nombre. En  las clases internas locales primero se define la clase y luego se  crean uno o más objetos. En las clases anónimas se unen estos dos  pasos. Como la clase anónima no tiene nombre, sólo se puede crear  un único objeto, ya que las clases anónimas no pueden definir  constructores. Se utilizan en clases con poco código.Siempre deben  ser clases interna e implícitamente finales.La declaración y el  uso de la clase son adyacentes.Nunca pueden ser abstractas Nunca  pueden ser clases estáticas.Para instanciar una clase interna desde  algún lugar que no sea la clase exterior, primero debemos  instanciar la clase exterior, y a continuación, instanciar la clase  interior.&lt;/p&gt; &lt;/li&gt;&lt;/ol&gt; &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Clases anidadas estáticas →  &lt;/b&gt;Las clases anidadas  estáticas sólo pueden ser creadas dentro de otra clase al máximo  nivel, es decir, directamente en el bloque de definición de la  clase contenedora y no en un bloque más interno. Este tipo de  clases anidadas se definen utilizando la palabra static.Debido a su  carácter "estático", estas clases no pueden acceder a  los miembros de su clase contenedora directamente, sino a través de  la instancia de un objeto.Puede acceder a una clase anidada estática  utilizando una referencia que remite a la clase: Outer.StaticNested&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4364887476090288155?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4364887476090288155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4364887476090288155'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2012/01/clases-animadas.html' title='Clases animadas'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4440206883276880706</id><published>2012-01-18T08:39:00.003+01:00</published><updated>2012-01-18T08:47:10.553+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Programación Orientada a Objetos</title><content type='html'>Tienes 3 pilares básicos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Encapsulación --&amp;gt;un método pueda usar a otro método para recibir un resultado sin que el primer método sepa como trabaja el segundo.&lt;/li&gt;&lt;li&gt;Polimorfismo --&amp;gt;diferentes formas en que una variable puede apuntar a un objeto.&lt;/li&gt;&lt;li&gt;Herencia --&amp;gt; una clase puede heredar atributos de la clase que hereda.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4440206883276880706?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4440206883276880706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4440206883276880706'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2012/01/programacion-orientada-objetos.html' title='Programación Orientada a Objetos'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-3504217446795021802</id><published>2012-01-16T14:13:00.001+01:00</published><updated>2012-01-16T14:15:01.012+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Encapsulación</title><content type='html'>&lt;p&gt;Este concepto consiste en la ocultación del estado o de  los datos miembro de un objeto, de forma que sólo es posible modificar  los mismos mediante los métodos definidos para dicho objeto.&lt;/p&gt; &lt;p&gt;Cada objeto está aislado del exterior, de forma que la aplicación es  un conjunto de objetos que colaboran entre sí mediante el paso de  mensajes invocando sus operaciones o métodos. De esta forma, los  detalles de implementación permanecen "ocultos" a las personas que usan  las clases, evitando así modificaciones o accesos indebidos a los datos  que almacenan las clases.&lt;/p&gt; &lt;p&gt;Además, el usuario de la clase no se tiene que preocuparse de cómo  están implementados los métodos y propiedades, concentrándose sólo en  cómo debe usarlos.&lt;/p&gt; &lt;p&gt;La encapsulación es una de las principales ventajas que proporciona la programación orientada a objetos.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-3504217446795021802?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3504217446795021802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3504217446795021802'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2012/01/encapsulacion.html' title='Encapsulación'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4620411687040969389</id><published>2011-11-23T11:46:00.003+01:00</published><updated>2011-11-23T12:01:11.782+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><title type='text'>valuePassThru</title><content type='html'>Estaba teniendo problema a la hora de seleccionar un valor de un combo y recargar otro, me daba un error  j&lt;span style="font-weight: bold;"&gt;ava.lang.IndexOutOfBoundsException: SelectOne submittedValue's index 2 is out of bounds. It should be between 0 and 0&lt;/span&gt; cuando volvía a seleccionar un elemento del combo primero.&lt;br /&gt;&lt;br /&gt;Buscando por internet encontré esta propiedad valuePassThru="true" que si lo colocamos en el combo segundo eliminaba ese fallo que se generaba debido al seleccionar el primer combo, se rellenan los valores del segundo, si elegimos un valor en el segundo, y después cambiamos el primero, el valor anteriormente elegido en el segundo combo puede no existir ya que este se rellena con los nuevos valores correspondientes al valor elegido en el primer combo entonces la propiedad valuePassThru lo que hace es &lt;span id="result_box" class="" lang="es"&gt;&lt;span class="hps"&gt;usar&lt;/span&gt; &lt;span class="hps"&gt;los valores reales de&lt;/span&gt; &lt;span class="hps"&gt;la lista desplegable&lt;/span&gt; &lt;span class="hps"&gt;en lugar de&lt;/span&gt; &lt;span class="hps"&gt;los valores del índice&lt;/span&gt;&lt;span class=""&gt;.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4620411687040969389?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4620411687040969389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4620411687040969389'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2011/11/valuepassthru.html' title='valuePassThru'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5303841192009961671</id><published>2011-10-05T10:58:00.005+02:00</published><updated>2011-10-05T11:29:28.151+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><title type='text'>Rich-message</title><content type='html'>Cuando queremos que aparezca un mensaje de validación de un campo, podemos usar esta etiqueta poniendo "&lt;rich:message for="identificador del campo"&gt;, por ejemplo si queremos que un campo sea obligatorio y si no se rellena que te salga el mensaje de validación hacemos lo siguiente :&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-DNSaajgLinI/Towh0U5H4CI/AAAAAAAAAPU/rXz6AK5JCtU/s1600/imagen.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 61px;" src="http://3.bp.blogspot.com/-DNSaajgLinI/Towh0U5H4CI/AAAAAAAAAPU/rXz6AK5JCtU/s400/imagen.jpg" alt="" id="BLOGGER_PHOTO_ID_5659936014543085602" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-hspjMXFkc2w/TowhupeLZ-I/AAAAAAAAAPM/miC35N3KHGQ/s1600/imagen.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/rich:message&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5303841192009961671?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5303841192009961671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5303841192009961671'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2011/10/rich-message.html' title='Rich-message'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-DNSaajgLinI/Towh0U5H4CI/AAAAAAAAAPU/rXz6AK5JCtU/s72-c/imagen.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-8788256165569192740</id><published>2011-06-22T13:59:00.002+02:00</published><updated>2011-06-22T14:03:33.751+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Función EXTRACT()</title><content type='html'>Hoy necesitaba sacar de una fecha el año y mirando por &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Internet&lt;/span&gt; he encontrado está función. La forma de utilizarla es:   &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;EXTRACT&lt;/span&gt;&lt;/span&gt;( &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Year&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;from&lt;/span&gt; campo_fecha), también podemos utilizar para sacar el día o el mes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-8788256165569192740?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8788256165569192740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8788256165569192740'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2011/06/funcion-extract.html' title='Función EXTRACT()'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2394197097887896273</id><published>2011-03-22T11:06:00.001+01:00</published><updated>2011-03-22T11:08:19.669+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Borrar una FOREIGN KEY</title><content type='html'>ALTER TABLE nombre_tabla DROP CONSTRAINT  nombre_constraint&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2394197097887896273?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2394197097887896273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2394197097887896273'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2011/03/borrar-una-foreign-key.html' title='Borrar una FOREIGN KEY'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-6561447782537545292</id><published>2011-01-25T10:17:00.003+01:00</published><updated>2011-01-25T10:45:32.729+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Acegi'/><title type='text'>Acegi</title><content type='html'>Hoy tengo que trabajar por primera vez con &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Acegi&lt;/span&gt;&lt;/span&gt; y me he puesto a buscar información ,  he &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;leído&lt;/span&gt; que &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Acegi&lt;/span&gt; es un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;framework&lt;/span&gt; ligado a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Spring&lt;/span&gt; que se utiliza para poder adoptar medidas de seguridad en las &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;aplicaciones&lt;/span&gt; java&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-6561447782537545292?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6561447782537545292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6561447782537545292'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2011/01/acegi.html' title='Acegi'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2275606055782357335</id><published>2010-12-27T11:11:00.006+01:00</published><updated>2010-12-27T11:25:39.229+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>Un problema con Ajax</title><content type='html'>Estaba intentando generar un documento que al pulsar un enlace &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ajax&lt;/span&gt; enviara la información del formulario a una método  java y crear un documento con esos datos y luego que se descargara, pues tuve el problema de que no salia la ventana de abrir o descarga el documento, sino lo embebía en la misma pagina de la aplicación.&lt;br /&gt;Resulta que investigando un poco y preguntado a un compañero que &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ajax&lt;/span&gt; no se puede descargar documentos, así que en vez de hacerlo con un a4j:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;commandLink&lt;/span&gt; y si utilizaba un s:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;link&lt;/span&gt; pues no me enviaba la información del formulario , así que me aconsejaron que  utilizara un h:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;commanLink&lt;/span&gt;, que sí &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;envía&lt;/span&gt; la información del formulario y permite la descarga de documentos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2275606055782357335?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2275606055782357335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2275606055782357335'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/12/problema-con-ajax.html' title='Un problema con Ajax'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7209728084252822981</id><published>2010-12-21T09:40:00.009+01:00</published><updated>2010-12-21T14:42:34.506+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Reiniciar secuencia en Oracle</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span style="font-size:100%;"&gt;He estado haciendo una migración de datos de una base de datos a otra y necesitaba reiniciar las secuencias de la tablas donde se van a importar&lt;/span&gt;&lt;span style="font-size:100%;"&gt; los datos  a 1.&lt;br /&gt;Para ello podemos hacer lo siguiente:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;SELECT&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;SEQ&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;.&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;CURRVAL&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;FROM&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; DUAL&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;span style="font-weight: bold;"&gt;--&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Miramos el valor actual&lt;/span&gt;&lt;span style="font-size:100%;"&gt; de la secuencia con la instrucción .&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;ALTER&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;SEQUENCE&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;SEQ&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; INCREMENT&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;by&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; -&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;VAL&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;--&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;con el valor obtenido con la anterios sentencia incrementamos a&lt;span style="font-weight: bold;"&gt; -valo&lt;/span&gt;r para para reiniciar&lt;/span&gt;&lt;span style="font-size:100%;"&gt; la secuencia a 1&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;SELECT&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;SEQ&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;.&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;NEXTVAL&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;FROM&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; DUAL--&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; reiniciamos&lt;/span&gt;&lt;span style="font-size:100%;"&gt; la secuencia.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;ALTER&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;SEQUENCE&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;SEQ&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;INCREMENT&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;by&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; 1&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;--&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;establecemos el incremento de la secuencia.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7209728084252822981?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7209728084252822981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7209728084252822981'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/12/reiniciar-secuencia-en-oracle.html' title='Reiniciar secuencia en Oracle'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4859963698264680630</id><published>2010-09-27T11:25:00.002+02:00</published><updated>2010-09-27T12:08:19.880+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XSTL'/><title type='text'>XSTL</title><content type='html'>&lt;span style="font-size:100%;"&gt;Son unas plantillas para transformar XML en otra cosa. Por ejemplo para transformar XML en HTML.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Más información :&lt;a href="http://www.w3.org/TR/xslt"&gt; http://www.w3.org/TR/xslt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Otras url &lt;a href="http://www.programacion.com/articulo/xslt-_xsl-_xpath:_que_es_cada_cosa_1"&gt;:Xsl, Xstl. Xpath..&lt;/a&gt; , &lt;a href="http://xml.osmosislatina.com/curso/xsl.htm"&gt;Xsl&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4859963698264680630?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4859963698264680630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4859963698264680630'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/09/xstl.html' title='XSTL'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-8438394661592566032</id><published>2010-09-23T11:38:00.005+02:00</published><updated>2010-09-23T12:29:49.102+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Subconsultas relacionadas</title><content type='html'>Una subconsulta es una consulta SELECT que devuelve un valor único y está anidada en una instrucción SELECT, INSERT, UPDATE o DELETE, o dentro de otra subconsulta. Una subconsulta se puede utilizar en cualquier parte en la que se permita una expresión, delante o detras de un WHERE, pero las subconsultas relacionadas pueden usarse en la  cláusula FROM. &lt;br /&gt;&lt;br /&gt;Se puede acualiar una columna de una tabla con información de otro  tabla uando subconsulta en vez de la sintaxis UNION.&lt;br /&gt;&lt;br /&gt;Se pueden crear vista con  subconsultas relacionadas y se pueden usar subconsultas relacionadas con las vistas  del diccionario.&lt;br /&gt;&lt;br /&gt;Puede utilizar tres formas de sintaxis para crear una subconsulta:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="codigo"&gt;        &lt;span style="font-weight: bold;"&gt;comparación&lt;/span&gt; [ANY | ALL | SOME] (instrucción sql)&lt;span style="font-weight: bold;"&gt; --&gt;&lt;/span&gt; &lt;/span&gt;Es una expresión y un operador de comparación que compara la expresión  con el resultado de la subconsulta.&lt;/li&gt;&lt;li&gt;&lt;span class="codigo"&gt;    &lt;span style="font-weight: bold;"&gt;expresión&lt;/span&gt; [NOT] IN (instrucción sql)        [NOT] EXISTS &lt;span style="font-weight: bold;"&gt;--&gt;&lt;/span&gt;&lt;/span&gt;Es una expresión por la que se busca el conjunto resultante de la  subconsulta.&lt;/li&gt;&lt;li&gt;&lt;span class="codigo"&gt;   &lt;span style="font-weight: bold;"&gt;instrucción&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;sql --&gt;&lt;/span&gt;&lt;/span&gt;Es una instrucción SELECT, que sigue el mismo  formato y reglas que cualquier otra instrucción SELECT. Debe ir entre  paréntesis.&lt;/li&gt;&lt;/ul&gt;Los predicados que utliza son :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;EXIST&lt;/span&gt;(con la palabra reservada NOT opcional) --&gt; se utiliza en comparaciones de verdad/falso para determinar si la  subconsulta devuelve algún registro.Este operador tb se puede usar en subconsultas de multiples columnas.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;ANY o SOME&lt;/span&gt; --&gt; los cuales son sinónimos, para recuperar registros de la consulta  principal, que satisfagan la comparación con cualquier otro registro  recuperado en la subconsulta.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;ALL&lt;/span&gt; --&gt; El predicado ALL se utiliza para recuperar únicamente aquellos registros  de la consulta principal que satisfacen la comparación con todos los  registros recuperados en la subconsulta.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;IN or NOT IN&lt;/span&gt;--&gt; para recuperar únicamente aquellos registros de la consulta principal  para los que hay (o no hay) algunos registros de la subconsulta contienen un valor  igual.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-8438394661592566032?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8438394661592566032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8438394661592566032'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/09/subconsultas-relacionadas.html' title='Subconsultas relacionadas'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-628300885594131835</id><published>2010-07-23T11:14:00.002+02:00</published><updated>2010-07-23T11:20:10.252+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Borrar tablas</title><content type='html'>Hace poco vi que al borrar una tabla con &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;DROP&lt;/span&gt; no se borra del esquema de base de datos, sino que se renombra la tabla y se queda en la papelera con un nombre raro como por ejemplo "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;BIN&lt;/span&gt;$&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ZEcoVqu&lt;/span&gt;5&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ag&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;gQKjAFwoptQ&lt;/span&gt;==$0:"&lt;br /&gt;&lt;br /&gt;Para poder borrarla &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;definitivamente&lt;/span&gt; de la base de datos hay que ejecutar la sentencia :&lt;br /&gt;&lt;b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;PURGE&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;TABLE&lt;/span&gt; "nombre de la tabla";&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;También se &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;peude&lt;/span&gt; recuperar esa tabla con la sentencia:&lt;br /&gt;&lt;b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;FLASHBACK&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;TABLE&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;nombreTabla&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;TO&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;BEFORE&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;DROP&lt;/span&gt;;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;Hay más opciones sobre el purgado y versiones del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;drop&lt;/span&gt;, podemos hacer más de un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;drop&lt;/span&gt; de la tabla y querer recuperar uno en concreto o purgar uno en concreto o la papelera entera, etc... Para ello podéis encontrar más información en:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;a class="moz-txt-link-freetext" href="http://www.orafaq.com/node/968"&gt;http://www.orafaq.com/node/968&lt;/a&gt;&lt;/b&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-628300885594131835?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/628300885594131835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/628300885594131835'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/07/problema-al-borrar-tablas.html' title='Borrar tablas'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7214766329465006198</id><published>2010-07-16T10:55:00.001+02:00</published><updated>2010-07-16T10:55:57.724+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Hibernate EntityManager</title><content type='html'>&lt;a href="http://docs.jboss.org/ejb3/app-server/HibernateEntityManager/reference/en/html_single/index.html"&gt;http://docs.jboss.org/ejb3/app-server/HibernateEntityManager/reference/en/html_single/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7214766329465006198?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7214766329465006198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7214766329465006198'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/07/hibernate-entitymanager.html' title='Hibernate EntityManager'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-3146446526431751756</id><published>2010-07-16T10:50:00.000+02:00</published><updated>2010-07-16T10:51:16.478+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><title type='text'>MyFaces Tomahawk</title><content type='html'>&lt;a href="http://myfaces.apache.org/tomahawk/"&gt;http://myfaces.apache.org/tomahawk/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-3146446526431751756?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3146446526431751756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3146446526431751756'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/07/myfaces-tomahawk.html' title='MyFaces Tomahawk'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-1049166682254766126</id><published>2010-07-16T10:49:00.001+02:00</published><updated>2010-07-16T10:49:21.831+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><title type='text'>RichFaces</title><content type='html'>&lt;a href="http://www.jboss.org/richfaces"&gt;http://www.jboss.org/richfaces&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-1049166682254766126?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1049166682254766126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1049166682254766126'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/07/richfaces.html' title='RichFaces'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-9100666655245432158</id><published>2010-07-14T12:39:00.002+02:00</published><updated>2010-09-08T08:59:08.380+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Método hascode() y equals()</title><content type='html'>El método &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;hashCode&lt;/span&gt;() te sirve para asignar un ID al objeto y así pode encontrarlo por ejemplo dentro de una colección, y  el método &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;equals&lt;/span&gt; se utiliza para saber si dos objetos son iguales.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-9100666655245432158?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/9100666655245432158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/9100666655245432158'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/07/mnetodo-hascode-y-equals.html' title='Método hascode() y equals()'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2016424862290328911</id><published>2010-07-06T13:16:00.004+02:00</published><updated>2010-07-06T13:29:07.876+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Tipo CHAR</title><content type='html'>He estado teniendo problemas con una columna de tipo CHAR ,resulta que al sacar el dato en un textarea, el resto del textarea que no estaba relleno metía espacios en blanco y he encontrado esto por Internet,que la longitud de una columna &lt;code class="literal"&gt;CHAR&lt;/code&gt; se fija a   la         longitud que se declara al crear la tabla. La longitud puede  ser         cualquier valor de 0 a 255. Cuando los valores         &lt;code class="literal"&gt;CHAR&lt;/code&gt; se almacenan, se añaden  espacios a la          derecha hasta las longitud específica. Cuando los valores         &lt;code class="literal"&gt;CHAR&lt;/code&gt; se recuperan, estos espacios  se borran.&lt;br /&gt;&lt;br /&gt;El caso es que a mi no me borraba los espacios en blanco tal como dice así que he tenido que cambiar el tipo a varchar2 y se solucionó el problema pues un dato o variable VARCHAR tiene una longitud variable: VARCHAR(20) indica que se trata de una cadena de máximo 20 posiciones. El espacio que se empleará para almacenar esa cadena es solo el que ocupe (5, 10, etc. caracteres).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2016424862290328911?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2016424862290328911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2016424862290328911'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/07/tipo-char.html' title='Tipo CHAR'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-261742316446666198</id><published>2010-06-28T09:07:00.001+02:00</published><updated>2010-06-28T09:08:26.570+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Borrar una columna</title><content type='html'>ALTER TABLE nombre_tabla DROP COLUMN nombre_columna;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-261742316446666198?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/261742316446666198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/261742316446666198'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/06/borrar-una-columna.html' title='Borrar una columna'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-1513224034945969379</id><published>2010-05-21T08:49:00.001+02:00</published><updated>2010-05-21T08:49:55.143+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>Algunos conceptos de Ajax</title><content type='html'>&lt;ul&gt;&lt;li&gt;ajaxSingle --&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Helvetica;"&gt;Cuando le  pones ajaxSingle="true" a un elemento a4j, estás indicando que en la  petición Ajax sólo se enviará ese campo al servidor.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Helvetica;"&gt;El resto de campos del formulario no se  enviarán.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;ajaxRegion --&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Helvetica;"&gt;Y un a4j:region delimita un grupo de  campos que se enviarán en la petición Ajax. Digamos que determina qué  trozo de la web estará involucrada en la petición Ajax.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Helvetica;"&gt;Todo lo que quede fuera de la región,  no contará para el tema Ajax.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;immediate  --&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Helvetica;"&gt;Cuando pones  immediate="true" en un elemento JSF (no es un atributo exclusivo de A4J)  estás indicando que ese elemento no pasará por la validación de JSF.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-1513224034945969379?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1513224034945969379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1513224034945969379'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/05/algunos-conceptos-de-ajax.html' title='Algunos conceptos de Ajax'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2399159320611039877</id><published>2010-04-28T09:01:00.003+02:00</published><updated>2010-04-28T09:05:27.645+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Quitar contraseña del SVN</title><content type='html'>Hace poco he tenido que quitar la contraseña de mi SVN y para ello he tenido que hacer los siguientes pasos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Desconectar el SVN (Discard location).&lt;/li&gt;&lt;li&gt;Eliminar el archivo .keyring, yo lo tengo en la carpeta de eclipse/configuration/org.eclipse.core.runtime.&lt;/li&gt;&lt;li&gt;Reiniciar Eclipse para que se haga efectivo el cambio.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2399159320611039877?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2399159320611039877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2399159320611039877'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/04/quitar-contrasena-del-svn.html' title='Quitar contraseña del SVN'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-699505343333980929</id><published>2010-03-30T10:39:00.006+02:00</published><updated>2010-03-30T11:43:20.895+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SpringFrameWork'/><title type='text'>Spring Security</title><content type='html'>Es un subproyecto de Spring con el cual podemos gestionar la autenticación en las aplicaciones Java tanto a urls del proyecto como a clases Java o acceso a métodos.La gestión de usuario se puede realizar a través de roles en bases de datos.&lt;br /&gt;&lt;br /&gt;Este subproyecto utiliza filtros para la seguridad de métodos o clases o las peticiones al servidor de la aplicación y la conflagración de la seguridad se encuentra dentro del war ear y otras de las ventajas que tienes es que soporta varios modelos de autenticación como LDAP, HTTP Digest etc... y podemos ampliar extendiendo nuestras clases del Spring Security.&lt;br /&gt;&lt;br /&gt;Estos filtros se confirguran en el web.xml.&lt;br /&gt;&lt;br /&gt;Con Spring Security podemos incluis seguridad en nuestras aplicaciones facilmente ya que apenas tenemos que escribir código para poder utilizarlo.&lt;br /&gt;&lt;br /&gt;El jar que necesitamos el : spring-security-core.jar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-699505343333980929?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/699505343333980929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/699505343333980929'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/03/spring-security.html' title='Spring Security'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7223146804914660445</id><published>2010-03-05T11:29:00.005+01:00</published><updated>2010-03-05T13:29:46.404+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Datamart'/><title type='text'>Alterian</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Alterian&lt;/span&gt; en un software cuyo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;funcionamiento&lt;/span&gt; es un motor de base de datos muy optimizado y nos permite realizar muchas operación en muy poco tiempo(estamos hablando entre 50 y 5000 veces más &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;rápidas&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Para que esto ocurra lo que hace el sistema de gestión de bases de datos es  indexar todas las columnas y traspone las filas de las tablas por  columnas, de modo que se optimice el acceso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7223146804914660445?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7223146804914660445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7223146804914660445'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/03/alterian.html' title='Alterian'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5972778930857554500</id><published>2010-03-05T11:06:00.002+01:00</published><updated>2010-03-05T11:28:56.336+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>LDAP</title><content type='html'>Es un protocolo ligero de acceso a directorios y también es considerado como base de datos ala cual se puede realizar consultar y la forma de almacenar puede ser diferente a las bases de datos habituales.&lt;br /&gt;&lt;br /&gt;Habitualmente se utiliza para almacenar usuarios y contraseñas y se suele utilizar para la autenticación.&lt;br /&gt;También es posible almacenar mas información como datos de contacto del usuario, permisos etc...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5972778930857554500?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5972778930857554500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5972778930857554500'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/03/ldap.html' title='LDAP'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5901492164180428697</id><published>2010-02-26T10:19:00.002+01:00</published><updated>2010-02-26T10:21:50.023+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>La mejor manera de tratar errores.</title><content type='html'>Ha pasado que al &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;capturar&lt;/span&gt; alguna error con &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;try&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;catch&lt;/span&gt; se ha puesto en el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;catch&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;log&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;equals&lt;/span&gt;(e) lo mejor seria:&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;try&lt;/span&gt;{&lt;br /&gt;&lt;br /&gt;//acciones&lt;br /&gt;&lt;br /&gt;}&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;catch&lt;/span&gt;(Error e){&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;log&lt;/span&gt;.error( "Se ha producido una &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;excepción&lt;/span&gt; realizar las acciones. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Parametro&lt;/span&gt;1: "+&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;parametro&lt;/span&gt;+". Error: "+e)&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5901492164180428697?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5901492164180428697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5901492164180428697'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/02/la-mejor-manera-de-tratar-errores.html' title='La mejor manera de tratar errores.'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2271103486269255679</id><published>2010-02-24T08:52:00.005+01:00</published><updated>2010-02-24T09:55:55.101+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>String vs StringBuffer vs StringBuilder</title><content type='html'>Hay varias formas de concatenar String :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Con el operador + --&gt; string + string + string&lt;/li&gt;&lt;li&gt;StringBuilder --&gt; Los métodos de StringBuffer son sincronizados, por lo  cual la podemos usar de manera segura en un ambiente de multihilos.&lt;/li&gt;&lt;li&gt;StringBuilder --&gt;Los métodos de StringBuilder no son sincronizados, por  lo que tiene mejor rendimiento que StringBuffer.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;La mejor manera de concatenar String es con StringBuilder, ya que su rendimiento es mayor, el tiempo de concatenacion es menor y en un ambiente multihilo sigue siendo la mejor opción&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2271103486269255679?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2271103486269255679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2271103486269255679'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/02/string-vs-stringbuffer-vs-stringbuilder.html' title='String vs StringBuffer vs StringBuilder'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-1722824574434487598</id><published>2010-02-09T13:48:00.004+01:00</published><updated>2010-02-09T13:57:28.613+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JQUERY'/><title type='text'>Para acceder a la visibilidad de las etiqueta</title><content type='html'>Para ello utilizamos :&lt;br /&gt;&lt;br /&gt;$("#item").css("display")&lt;br /&gt;&lt;br /&gt;he tenido que hacer en mi aplicacion cambiar a imagen si el display es block, para ello he hecho lo siguiente:&lt;br /&gt;&lt;br /&gt; if(jQuery('#item').css('display')=="block"){&lt;br /&gt;     jQuery('#item').attr('src','img/delete.png'); &lt;br /&gt; }else{      &lt;br /&gt;     jQuery('#item').attr('src','img/add.png'); &lt;br /&gt; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-1722824574434487598?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1722824574434487598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1722824574434487598'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/02/para-acceder-los-estilos-de-laaas.html' title='Para acceder a la visibilidad de las etiqueta'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2407444326972187392</id><published>2010-02-09T09:56:00.005+01:00</published><updated>2010-02-09T13:48:16.067+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JQUERY'/><title type='text'>Ejemplo más complejo de Jquery</title><content type='html'>En el apartado anterior puse un pequeño ejemplo, ahora vamos ampliarlo.&lt;br /&gt;&lt;br /&gt;Teníamos una tabla y en una columna una imagen que al pulsar sobre ella aparecía un Texto.&lt;br /&gt;Ahora vamos hacer que al pinchar sobre esa imagen aparezca una tabla de detalle de ese registro. Vamos hacerlo utilizando un servlet, código jquery y html.&lt;br /&gt;&lt;br /&gt;En el ejemplo anterior teníamos:&lt;br /&gt;&lt;br /&gt;En la etiqueta img tendremos la etiqueta id="filaSeleccionada"&lt;br /&gt;&lt;br /&gt;Donde queremos que salga el texto pondremos por ejemplo dentro de la etiqueta div, le añadimos la etiqueta id='miFila' y dentro del div el texto que queremos que aparezca.&lt;br /&gt;&lt;br /&gt;Quitamos el texto pero dejamos el div.&lt;br /&gt;&lt;br /&gt;Ponemos un campo hidden con el id del registro para montar la tabla con los datos Detalle de ese registro.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;El código JQuery será ahora:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="codigo"&gt;$(document).ready(function(){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;jQuery('.filaSeleccionada').click(function() {&lt;br /&gt;    var numero = jQuery(this).next().attr('value');    --&gt; este valor sera el del input hidden, con esto cogemos el valor del siguiente atributo que viene despues de la imagen.&lt;br /&gt;&lt;br /&gt;con esto llamamos al servlet que es lo que hay dentro de las comillas y luego entre {} ponemos las variables que le vamos a pasar al servlet, en ese caso el id de la fila seleccionada&lt;br /&gt;&lt;br /&gt;    jQuery.getJSON ("generaTablaDetalle",&lt;br /&gt;    { numeroFila : numero },&lt;br /&gt;con lo que nos devuelve el servlet hacemos la siguiente operacion&lt;br /&gt;&lt;br /&gt;    function(data){  --&gt;data es lo que nos devuelve el servlet&lt;br /&gt;&lt;br /&gt;    jQuery('#fila'+numero).html(data.detalle);  --&gt; con esta sintaxis hacemos que aparezca donde tenemos la etiqueta id fila+numerofila la tabla que nos ha devuelto el servlet.&lt;br /&gt;&lt;br /&gt;con toggle hacemos que si se ha pulsado sobre la imagen se despliegue con un efecto(esto lo hace slow) la tabla creada y si volvemos a pulsar desaparece en caso de estar la tabla desplegada.&lt;br /&gt;&lt;br /&gt;      jQuery('#fila'+numero).toggle("slow");&lt;br /&gt;       }&lt;br /&gt;      );&lt;br /&gt;});&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;Y el &lt;span style="font-weight: bold;"&gt;servlet&lt;/span&gt; que tendremos será parecido al siguiente:&lt;br /&gt;&lt;br /&gt;public class &lt;span style="font-weight: bold;"&gt;MostrarDetalleServlet&lt;/span&gt; extends HttpServlet implements Servlet {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private static final long serialVersionUID = 1825793524350619027L;&lt;br /&gt;private static Log log = LogFactory.getLog(MostrarDetalleServlet.class);&lt;br /&gt;&lt;br /&gt;protected void doGet(HttpServletRequest request,&lt;br /&gt;        HttpServletResponse response) throws ServletException, IOException {&lt;br /&gt;    doPost(request, response);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;throws ServletException, IOException {    &lt;br /&gt;&lt;br /&gt;    PrintWriter writer = response.getWriter();  --&gt; con esto devolvemos al jquery la tabla que nos vamos a crear&lt;br /&gt;&lt;br /&gt;  //para el encoding    &lt;br /&gt;    String responseEncoding = "text/html;charset=";&lt;br /&gt;    String encoding = null;&lt;br /&gt;    if (StringUtils.isNotEmpty(System.getProperty("sun.jnu.encoding"))) {&lt;br /&gt;        encoding = System.getProperty("sun.jnu.encoding");&lt;br /&gt;    } else {&lt;br /&gt;        encoding = "ISO-8859-1";&lt;br /&gt;    }&lt;br /&gt;    responseEncoding += encoding;&lt;br /&gt;    response.setContentType(responseEncoding);    &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    String numeroFila=(String)request.getParameter("numeroFila");  --&gt; el parámetro  que le hemos pasado en el jquery al hacer la llamada del servlet.&lt;br /&gt;&lt;br /&gt;        String tablaDetalle=null;&lt;br /&gt;//buscamos en base de datos los datos con ese id y montamos la tabla con el resultado obtenido.&lt;br /&gt;        tablaDetalle=método para crear la tabla;     &lt;br /&gt;&lt;br /&gt;        //Redirigimos&lt;br /&gt;        writer.println(" {detalle : \""+ tablaDetalle +"\"} ");&lt;br /&gt;        writer.flush();&lt;br /&gt;        writer.close();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2407444326972187392?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2407444326972187392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2407444326972187392'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/02/ejemplo-mas-complejo-de-jquery.html' title='Ejemplo más complejo de Jquery'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2590880131412592704</id><published>2010-02-08T11:29:00.006+01:00</published><updated>2010-02-09T10:02:41.422+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JQUERY'/><title type='text'>JQuery</title><content type='html'>jQuery es una liviana libreria de JavaScript, pensada para interactuar con los elementos de       una web por medio del &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt;. Lo que la hace       tan especial es su sencillez y su reducido tamaño.&lt;br /&gt;&lt;br /&gt;Los comandos se reconocen por comenzar con el simbolo        "$", y para acceder a los elementos de la página se usa la misma nomenclatura que en CSS:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Para las etiquetas --&gt; a , strong, div.&lt;/li&gt;&lt;li&gt;Para etiquetas con id --&gt; se pone&lt;span style="font-weight: bold;"&gt; #&lt;/span&gt; deltante del nombre de la etiqueta.&lt;/li&gt;&lt;li&gt;Para etiquetas con un class --&gt; se pon &lt;span style="font-weight: bold;"&gt;.&lt;/span&gt; deltante del nombre de la etiqueta&lt;/li&gt;&lt;/ul&gt;Vamos a ver un pequeño ejemplo:&lt;br /&gt;&lt;br /&gt;Tegno una tabla con un listado, una de las columnas tiene una imagen y quiero que al pinchar en esa imagen me aparezca un texto.&lt;br /&gt;Para ello hacemos lo siguiente:&lt;br /&gt;&lt;br /&gt;En la etiqueta img tendremos la etiqueta id="filaSeleccionada"&lt;br /&gt;&lt;br /&gt;Donde queremos que salga el texto pondremos por ejemplo dentro de la etiqueta div, le añadimos la etiqueta id='miFila' style="display: none" y dentro del div el texto que queremos que aparezca.&lt;br /&gt;&lt;br /&gt;El código JQuery será:&lt;br /&gt;&lt;br /&gt;&lt;span class="codigo"&gt;$(document).ready(function(){&lt;/span&gt;&lt;br /&gt;jQuery('#&lt;span style="font-weight: bold;"&gt;filaSeleccionada&lt;/span&gt;').click(function() {     &lt;br /&gt;        jQuery('#&lt;span style="font-weight: bold;"&gt;miFila&lt;/span&gt;').show();&lt;br /&gt;});&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Es un pequeño ejemplo que iremos a medida que vaya conociendo mejor Jquery poniendolo más complicado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2590880131412592704?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2590880131412592704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2590880131412592704'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/02/jquery.html' title='JQuery'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5579998545012410865</id><published>2010-01-18T15:22:00.002+01:00</published><updated>2010-10-01T12:29:00.186+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Coger variables del context</title><content type='html'>Para ello utilizamos la siguinente linea:&lt;br /&gt;&lt;br /&gt;getRequest().getSession().getServletContext().getAttribute("nombre de la variable");&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5579998545012410865?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5579998545012410865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5579998545012410865'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2010/01/coger-variables-del-context.html' title='Coger variables del context'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2162363042983732016</id><published>2009-12-23T08:40:00.001+01:00</published><updated>2009-12-23T08:40:37.617+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Convertir un Calendar a Date</title><content type='html'>Calendar cal=Calendar.getInstance();&lt;br /&gt;Date date=cal.getTime();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2162363042983732016?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2162363042983732016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2162363042983732016'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/12/convertir-un-calendar-date.html' title='Convertir un Calendar a Date'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5698962126189795211</id><published>2009-12-18T10:28:00.003+01:00</published><updated>2009-12-21T10:15:20.541+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Añadir nuevo campo a una tabla existente</title><content type='html'>Para ello utilizamos la sentencia :&lt;br /&gt;&lt;br /&gt;ALTER TABLE NOMBRE_TABLA ADD(nombre_campo tipo);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5698962126189795211?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5698962126189795211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5698962126189795211'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/12/anadir-nuevo-campo-una-tabla-existente.html' title='Añadir nuevo campo a una tabla existente'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4081369628310734484</id><published>2009-12-03T10:18:00.003+01:00</published><updated>2009-12-03T12:24:31.639+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Migrar la aplicacion a Tomcat6</title><content type='html'>Estoy migrando mi aplicacion  con tomcat 5 a tomcart 6.&lt;br /&gt;&lt;br /&gt;Le he metido el tomcat 6 y he arrncado y me ha aparecido el siguiente error:&lt;br /&gt;&lt;span style="font-size:100%;"&gt;java.lang.LinkageError: loader constraints violated when linking javax/el/ExpressionFactory&lt;br /&gt;class&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Al mirar en internet he encontrado que es un conflicto de la libreria EL, para ello le pusieramos un scope provided. Lo hice y me dejo de salir este error.&lt;br /&gt;&lt;br /&gt;Normalmente suele ser el-api.jar y el-ri.jar para saber cual tenemos que excluir miramos en el lib de tomcat cual tenemos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4081369628310734484?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4081369628310734484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4081369628310734484'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/12/migrar-la-aplicacion-tomcat6.html' title='Migrar la aplicacion a Tomcat6'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7809782774923050746</id><published>2009-11-17T12:21:00.003+01:00</published><updated>2009-11-17T12:29:03.858+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Threads'/><title type='text'>Crear un hilo</title><content type='html'>Vamos por ejemplo a crear un hilo para hacer una &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;importación&lt;/span&gt; de datos a la base de datos.&lt;br /&gt;Vamos a imaginarnos un proyecto en el que tenemos un enlace llamado "Importar Datos" al pinchar sobre se no va a un método que su código seria seria similar al siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;public&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;String&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;actionImportarDatos&lt;/span&gt;(){&lt;br /&gt;&lt;br /&gt;Thread hilo = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;new&lt;/span&gt; Thread() {&lt;br /&gt;        &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;public&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;void&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;run&lt;/span&gt;() {&lt;br /&gt;       &lt;br /&gt;            ******* lineas de código para la inserción de datos ***********&lt;br /&gt;&lt;br /&gt;       }&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;hilo.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;start&lt;/span&gt;();&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;return&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;null&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Esto nos &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;servirá&lt;/span&gt; por ejemplo si &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;después&lt;/span&gt; de pulsar el enlace queremos seguir navegando por la aplicación sin que se interrumpa la importación de datos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7809782774923050746?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7809782774923050746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7809782774923050746'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/11/crear-un-hilo.html' title='Crear un hilo'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5310225549481701834</id><published>2009-11-17T10:27:00.006+01:00</published><updated>2009-11-17T12:44:46.150+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Datamart'/><title type='text'>Datamart</title><content type='html'>Un datamart es una base de datos con muchísimos datos al cual puedo realizar consultas rápidamente&lt;br /&gt;&lt;br /&gt;Un datamart es un DataWarehouse a un nivel más pequeño.&lt;br /&gt;&lt;br /&gt;Un datamart tendrá tablas llamadas DIMENSIONES y otras tablas llamadas de HECHO o FACT  TABLE, estas tablas tendrán todas las combinaciones posibles de dichas DIMENSIONES.&lt;br /&gt;&lt;br /&gt;También tendremos tablas detalles estas tablas son por ejemplo, tengo una tabla llamada empresa, otra tabla llamada datos personales y en empresa hay un id que hace referencia a datos personales, pues unimos estas dos tablas en una y será la de detalles.&lt;br /&gt;&lt;br /&gt;La tabla de HECHO también llamada agregada, es la tabla central de un sistema dimensional. Esta tabla es final no se puede crear mas a partir de ella.Esta tablas su claves serna los id relaciones con las tablas que estan relacionadas.&lt;br /&gt;&lt;br /&gt;Por ejemplo tengo una tabla empresas, otra operaciones, otra provincia, otra clientes pues la tabla hecho seria una tabla con los id de cada tabla mas alguno campos necesarios dependiendo de lo que queramos mostrar. Serán datos numéricos  que se pueden resumir para proporcionar información sobre el historial de las operaciones de la organización.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5310225549481701834?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5310225549481701834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5310225549481701834'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/11/datamart.html' title='Datamart'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2772222537877775267</id><published>2009-11-17T10:24:00.003+01:00</published><updated>2011-05-23T12:07:53.212+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Modificar nombre y tipo de una columna</title><content type='html'>Para modificar el nombre y el tipo utilizamos la siguiente instrucción:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ALTER&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;TABLE&lt;/span&gt; nombre_tabla &lt;span style="font-weight: bold;"&gt;RENAME&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;COLUMN&lt;/span&gt; columna_antigua &lt;span style="font-weight: bold;"&gt;TO&lt;/span&gt; columna_nueva;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ALTER&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;TABLE&lt;/span&gt; nombre_tabla &lt;span style="font-weight: bold;"&gt;MODIFY&lt;/span&gt; columna tipo_nuevo;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2772222537877775267?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2772222537877775267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2772222537877775267'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/11/modificar-nombre-y-tipo-de-una-columna.html' title='Modificar nombre y tipo de una columna'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4285904563142052015</id><published>2009-11-13T13:31:00.002+01:00</published><updated>2009-11-13T13:36:30.089+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Dependencias de un jar</title><content type='html'>He necesitado una librería nueva en mi proyecto, pero para meterla en el pom.xml necesitaba saber el groupId,artifactId.&lt;br /&gt;&lt;br /&gt;Para ello me he descargado la librería la he descomprimido, he entrado en la carpeta META-INF/MANIFEST.MF.&lt;br /&gt;&lt;br /&gt;Lo abrimos , abrimos un navegador y entramos en esta dirección &lt;span style="font-size:100%;"&gt;&lt;a href="http://mvnrepository.com/"&gt;http://mvnrepository.com&lt;/a&gt;, aquí buscamos la librería , entramos dentro y comparamos los manifiest y vemos que tienen el mismo tamaño y las mismas cosas, si copiamos el codigo con &lt;/span&gt;groupId,artifactId que no viene en esa página en nuestro pom.xml ,hacemos maven para que se la descargue y ya tenemos nuestra librería en el proyecto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4285904563142052015?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4285904563142052015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4285904563142052015'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/11/dependencias-de-un-jar.html' title='Dependencias de un jar'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-911022761015668137</id><published>2009-11-11T13:42:00.008+01:00</published><updated>2009-11-17T12:20:56.823+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Threads'/><title type='text'>Crear una tarea a una hora determinada</title><content type='html'>Para ello vamos a utilizar la clase java.util.TimerTasK y Timer.&lt;br /&gt;&lt;br /&gt;La clase TimerTask tiene un metodo run que es como los Thread, lo que contiene el metodo run es lo que se va a ejecutar cada cierto periodo.&lt;br /&gt;&lt;br /&gt;La clase Timer&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt; la utilizamos para  para programar tareas para ejecutar en el futuro en un hilo de fondo.&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;Las tareas se pueden programar para un tiempo de ejecución, o para la ejecución repetida a intervalos regulares.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En mi proyecto lo he colocado en la clase que arranca el proyecto, dentro de esa clase me he creado un clase interna:&lt;br /&gt;&lt;br /&gt;class &lt;span style="font-weight: bold;"&gt;ImportarDatos&lt;/span&gt; extends &lt;span style="font-weight: bold;"&gt;TimerTask&lt;/span&gt; {&lt;br /&gt;public void run() {&lt;br /&gt;////    Damos baja prioridad al hilo&lt;br /&gt;Thread.currentThread().setPriority(Thread.MIN_PRIORITY);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;*********************tareas a realizar*****************************&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Y dentro de la clase del listener me he creado lo siguiente:&lt;br /&gt;&lt;br /&gt;System.out.println("*************************************");&lt;br /&gt;System.out.println("* Iniciando recarga Datos...*");&lt;br /&gt;System.out.println("*************************************");&lt;br /&gt;try{&lt;br /&gt;    &lt;span style="font-weight: bold;"&gt;Timer&lt;/span&gt; timer= new Timer();&lt;br /&gt;    Calendar calendar = Calendar.getInstance();&lt;br /&gt;    calendar.set(Calendar.HOUR, 2);&lt;br /&gt;    calendar.set(Calendar.MINUTE, 0);&lt;br /&gt;    calendar.set(Calendar.AM_PM, 0);&lt;br /&gt;    Date date = calendar.getTime();&lt;br /&gt;    timer.schedule(new &lt;span style="font-weight: bold;"&gt;ImportarDatos&lt;/span&gt;(), date, 24 * 60 * 60 * 1000);  &lt;br /&gt;}catch (Exception e) {&lt;br /&gt;    log.debug("Error no controlado");&lt;br /&gt;}&lt;br /&gt;System.out.println("");&lt;br /&gt;&lt;br /&gt;Cada vez que arranque la aplicacion se ejecutara esta tarea y tambien a la hora que le hmos puesto, hay que saber que la hora es una menos si yo he puesto a las 2 de la madrugada se ejecutara a la 1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-911022761015668137?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/911022761015668137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/911022761015668137'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/11/crear-una-tarea-una-hora-determinada.html' title='Crear una tarea a una hora determinada'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-1825125714970104445</id><published>2009-11-06T10:29:00.034+01:00</published><updated>2009-11-12T10:25:05.737+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Creando nueva base de datos</title><content type='html'>Estoy empezando a crear una base de datos desde cero para una aplicación de mi empresa.&lt;br /&gt;&lt;br /&gt;Nosotros nos creamos unos ficheros para luego utilizarlos en la instalación.&lt;br /&gt;Los ficheros que nos creamos son:&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;ol&gt;&lt;li&gt;Crear fichero con las tablas.&lt;/li&gt;&lt;li&gt;Crear fichero con las constraints de las tablas.&lt;/li&gt;&lt;li&gt;Crear fichero con los índices necesarios.&lt;/li&gt;&lt;li&gt;Crear fichero con las secuencias de las tablas.&lt;/li&gt;&lt;li&gt;Crear fichero con los triggers.&lt;/li&gt;&lt;li&gt;Crear fichero con los views.&lt;/li&gt;&lt;li&gt;Crear fichero con los insert de las tablas.&lt;/li&gt;&lt;li&gt;Crear fichero con los permisos a las tablas&lt;/li&gt;&lt;li&gt;Crear ficheros de sinónimos.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;Voy a explicar como hago cada ficheros y que es cada cosa:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fichero de las tablas&lt;/span&gt;&lt;br /&gt;En este fichero vamos a tener la instrucción siguiente para crear las tablas que necesitemos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CREATE&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;TABLE&lt;/span&gt; NOMBRE_TABLA(&lt;br /&gt;campo1 tipo de variable (number, varchar,.....) null or not null,&lt;br /&gt;campo2 tipo de variable (number, varchar,.....) null or not null,&lt;br /&gt;campo3 tipo de variable (number, varchar,.....) null or not null,&lt;br /&gt;....... tipo de variable (number, varchar,.....) null or not null,&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fichero con las constraints&lt;/span&gt;&lt;br /&gt;La cláusula constraints la utilizamos para crear o eliminar índices que pueden ser único o múltiples.&lt;br /&gt;Puede ir seguido de:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;UNIQUE --&gt; para decir que el valor de ese campo es único&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;PRIMARY KEY --&gt;crea un índice primario el campo o los campos especificados. Todos los campos de la clave principal deben ser únicos y no nulos, cada tabla sólo puede contener una única clave principal.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;FOREIGN KEY --&gt;crea un índice sobre el campo cuyo valor sera el contenido de otro campo de otra tabla o de la misma. Puede ser null y se pueden crear varias claves ajenas&lt;/li&gt;&lt;/ul&gt;En este fichero vamos a crear las claves primarias por cada tabla que hayamos creado:&lt;br /&gt;ALTER TABLE NOMBRE_TABLA ADD (&lt;br /&gt;CONSTRAINT PK_NOMBRE_TABLA PRIMARY KEY (campo));&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fichero de los índices&lt;/span&gt;&lt;br /&gt;Yo me he creado un fichero de índices para las tablas que tiene muchos datos , así las búsquedas serán más rápidas,los índices se crean sobre el o los campos que vayamos mas a utilizar, la sentencia para crear índices es la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CREATE&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;UNIQUE&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;INDEX&lt;/span&gt; NOMBRE_INDICE ON TABLA(campo);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fichero de las secuencias&lt;/span&gt;&lt;br /&gt;Para la generación de códigos numéricos automáticos utilizamos las secuencias&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CREATE&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;SEQUENCE &lt;/span&gt;&lt;br /&gt;[MINVALUE ] --&gt;valor mínimo de la secuencia&lt;br /&gt;[MAXVALUE ]--&gt; valor máximo de la secuencia&lt;br /&gt;[START WITH ]--&gt; por el numero que va a empezar la secuencia&lt;br /&gt;[INCREMENT BY ] --&gt; valor que va a incrementar cada vez que insertemos&lt;br /&gt;[NOCACHE | CACHE ]--&gt; se utiliza para que la generación de secuencia vaya mas rápido&lt;br /&gt;[CYCLE] ;--&gt;nocycle or cycle, si ponemos cycle cuando llega al MAXVALUE volvera a empezar desde el MINVALUE, esto puede que no cree exclusividad y si ponemos nocycle nos saldrá un error:&lt;br /&gt;RDB%-E-SEQNONEXT, el siguiente valor para la secuencia "NOMBRE SECUENCIA" no está disponible.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ficheros con los triggers&lt;/span&gt;&lt;br /&gt;Los triggers son disparadores que se ejecuta cuando se cumple una condición establecida al realizar un INSERT, UPDATE o DELETE.&lt;br /&gt;Si vamos a necesitar triggers nos creamos este archivo, la sintaxis de un trigger con update podría ser la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CREATE&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;TRIGGER&lt;/span&gt; nombre_trigger&lt;br /&gt;BEFORE UPDATE ON nombre_tabla&lt;br /&gt;REFERENCING NEW ROW AS campo,OLD ROW AS campo&lt;br /&gt;FOR EACH ROW&lt;br /&gt;condición THEN&lt;br /&gt;END IF;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fichero de views&lt;/span&gt;&lt;br /&gt;Las vistas (views) son consultas, que refleja el contenido de una o más tablas, desde la que se puede acceder a los datos como si fuera una tabla. Así obtenemos seguridad en nuestras tablas sino queremos que el usuario acceda a otras datos de las tablas.O nos evitamos el escribir complejas sentencias sql.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fichero de insert&lt;/span&gt;&lt;br /&gt;En este fichero vamos a tener las sentencias sql de inserción de datos de las tablas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fichero de permisos (grant)&lt;/span&gt;&lt;br /&gt;Concede permiso a un usuario sobre las tablas o vistas. Permiso de SELECT,INSERT, DELETE o UPDATE.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ficheros de sinónimos&lt;/span&gt;&lt;br /&gt;Este fichero contiene las sentencia de creación de sinónimos sobre las tablas o vistas, esto quiere decir que una tabla o vista puede tener dos nombre diferentes, el de la tabla y el de sinónimo que hace referencia a esa tabla. Los sinónimos nos proporciona la ventaja de independizar las tablas físicas de las aplicaciones y que un usuario acceda a otra tablas de otro usuario si tiene permisos para ello.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-1825125714970104445?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1825125714970104445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1825125714970104445'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/11/crando-nueva-base-de-datos.html' title='Creando nueva base de datos'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-9126905606892893445</id><published>2009-11-03T10:46:00.008+01:00</published><updated>2009-11-04T14:05:48.843+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><title type='text'>Barra de progreso con Rich Faces</title><content type='html'>Estoy importando unos datos y para que el usuario no se crea que no esta haciendo nada la aplicacion he creado una barra de progreso para que veo como va la importación de datos.&lt;br /&gt;&lt;br /&gt;Para ello he utilizado las etiquetas siguiente:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WiXyQmt4vdQ/Su__JaMbnuI/AAAAAAAAAM0/2Khc1q_5XvQ/s1600-h/rich.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 638px; height: 148px;" src="http://2.bp.blogspot.com/_WiXyQmt4vdQ/Su__JaMbnuI/AAAAAAAAAM0/2Khc1q_5XvQ/s400/rich.jpg" alt="" id="BLOGGER_PHOTO_ID_5399815015355883234" border="0" /&gt;&lt;/a&gt;y el metodo en mi clase que hace la importacion es :&lt;br /&gt;&lt;br /&gt;public String actionImportarDatos(){&lt;br /&gt;   progreso = 1;&lt;br /&gt;   enProgreso = true; //sino esta a true no sale la barrita&lt;br /&gt;&lt;br /&gt;   List&lt;datosimportarvo&gt; listadoDatosImportar = new LinkedList&lt;datosimportarvo&gt;();&lt;br /&gt;   listadoDatosImportar =método para rellenar esta lista con los datos que voy a importar;&lt;br /&gt;&lt;br /&gt;   total = listadoDatosImportar.size();&lt;br /&gt;   for (DatosIMportar datos : listadoDatosImportar) {&lt;br /&gt;       progreso++;&lt;br /&gt;&lt;br /&gt;     BO. save(datos);  //en el BO tengo un metodo que guarda ese dato importado en la tabla.&lt;br /&gt; &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   mensaje = "Libros importados correctamente";&lt;br /&gt;return null;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   public int getPorcentaje() {&lt;br /&gt;   try {&lt;br /&gt;       return Math.min(progreso * 100 / total, 100);&lt;br /&gt;   } catch (ArithmeticException e) {&lt;br /&gt;       return 0;&lt;br /&gt;   }&lt;br /&gt;   }&lt;/datosimportarvo&gt;&lt;/datosimportarvo&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-9126905606892893445?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/9126905606892893445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/9126905606892893445'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/11/barra-de-progreso-con-rich-faces.html' title='Barra de progreso con Rich Faces'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WiXyQmt4vdQ/Su__JaMbnuI/AAAAAAAAAM0/2Khc1q_5XvQ/s72-c/rich.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2192138285743178314</id><published>2009-10-22T08:45:00.008+02:00</published><updated>2009-10-22T10:22:38.790+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pentaho'/><title type='text'>Primeros pasos con Pentaho Report Designer</title><content type='html'>Me han pedido en mi trabajo unos informes con datos ,graficas de la aplicacion que estamos haciendo y me han dicho que tiene que ser con Pentaho.&lt;br /&gt;&lt;br /&gt;Me descargue la version 1.7 Pentaho Report Designer y empece a hacer pruebas con la aplicación.&lt;br /&gt;&lt;br /&gt;Voy a explicar lo que he aprendido hasta ahora, pues llevo con esto desde ayer.&lt;br /&gt;&lt;br /&gt;La carpeta que me baje tenia 3 archivos :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;startdesigner.bat --&gt; windows&lt;br /&gt;&lt;/li&gt;&lt;li&gt;startdesigner_linux.sh --&gt; linux&lt;br /&gt;&lt;/li&gt;&lt;li&gt;startdesigner_osx.sh --&gt; mac&lt;/li&gt;&lt;/ol&gt;Yo utilo el de linux, para ejecutar el programa tuve que darle persimos de ejecucion al archivo y luego doble click y la pantalla que me aparecio fue la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WiXyQmt4vdQ/SuAEkEDVeqI/AAAAAAAAAMU/3IZqxh1svWU/s1600-h/Pantallazo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 320px;" src="http://4.bp.blogspot.com/_WiXyQmt4vdQ/SuAEkEDVeqI/AAAAAAAAAMU/3IZqxh1svWU/s400/Pantallazo.png" alt="" id="BLOGGER_PHOTO_ID_5395317371199388322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Vemos a la izquierda un menu lateral que contiene los elementos de diseño como gráficas lineas etc..., que puede tener un reporte.&lt;br /&gt;&lt;br /&gt;Para crear un reporte nuevo , le damos a File  Report Wizar para darle formato al reporte y la base de datos que vamos a utilizar.&lt;br /&gt;&lt;br /&gt;Si le damos ala pestaña Design que hay en el centro de la aplicacion nos vamos directamente al reporte con el diseño basico y para decirle que base de datos vamos autilizar en la parte derecha donde pone Data Source pinchamos con el boton derecho y elegimos Añadir.&lt;br /&gt;&lt;br /&gt;Para elegir la base de datos nos saldra una pantalla similar a la siguiente:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WiXyQmt4vdQ/SuASkUFkNFI/AAAAAAAAAMc/RobcFDQz7ME/s1600-h/Pantallazo-Ventana+sin+t%C3%ADtulo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 350px;" src="http://4.bp.blogspot.com/_WiXyQmt4vdQ/SuASkUFkNFI/AAAAAAAAAMc/RobcFDQz7ME/s400/Pantallazo-Ventana+sin+t%C3%ADtulo.png" alt="" id="BLOGGER_PHOTO_ID_5395332768666498130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En esta pantalla podemos elegir entre 3 tipos de bases de datos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;JNDI&lt;/li&gt;&lt;li&gt;Xquery&lt;/li&gt;&lt;li&gt;MQL&lt;/li&gt;&lt;/ol&gt;Una vez que hayamos elegido el tipo de base de datos por ejemplo yo escogi la de JNDI  y le di a añadir,me salio una pantalla para meter los datos de conexion a la base de datos.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WiXyQmt4vdQ/SuATc0nSg3I/AAAAAAAAAMk/wfjJDd_u5PM/s1600-h/Pantallazo-Ventana+sin+t%C3%ADtulo-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 257px;" src="http://4.bp.blogspot.com/_WiXyQmt4vdQ/SuATc0nSg3I/AAAAAAAAAMk/wfjJDd_u5PM/s400/Pantallazo-Ventana+sin+t%C3%ADtulo-1.png" alt="" id="BLOGGER_PHOTO_ID_5395333739470553970" border="0" /&gt;&lt;/a&gt;Metemos los datos necesario y se nos añade al listado.&lt;br /&gt;&lt;br /&gt;Para realizar una consulta sore la cula queremos el inform le damos a  "Query Designer" :&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WiXyQmt4vdQ/SuAT_ZcCb6I/AAAAAAAAAMs/9nSYDRM1dC8/s1600-h/Pantallazo-Ventana+sin+t%C3%ADtulo-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 311px;" src="http://2.bp.blogspot.com/_WiXyQmt4vdQ/SuAT_ZcCb6I/AAAAAAAAAMs/9nSYDRM1dC8/s400/Pantallazo-Ventana+sin+t%C3%ADtulo-2.png" alt="" id="BLOGGER_PHOTO_ID_5395334333471027106" border="0" /&gt;&lt;/a&gt;Abajo a la  izquierda nos saldra un listado con las tablas de nuestra base de datos, para hacer la consulta sobre la o las que queramos pinchamos sobre ella y la arrastramos a la parte derecha.&lt;br /&gt;&lt;br /&gt;Sobre las tablas que hemos elegido podemos selecionar los campos que quermos que se muestren en el report y realizar operacion de sum(), conunt() etc.. sobre los campos.&lt;br /&gt;&lt;br /&gt;Para ello nos ponemos encima del campo y pinchamos boton derecho. También podemos escribir la query a mano.&lt;br /&gt;&lt;br /&gt;Una vez hecho la consulta le damos a Ok y se nos abre la pantalla con los datos elegido, podemos meterle grafico lineas, etc.... para ello elegimo de la paleta izquierda el componente a añadir y lo arrastramos al centro.&lt;br /&gt;&lt;br /&gt;Cuando tengamos listo el reporte le damos a File /Create Report.&lt;br /&gt;&lt;br /&gt;En otro explicare el crear un gráfico.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2192138285743178314?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2192138285743178314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2192138285743178314'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/10/primeros-pasos-con-pentaho-report.html' title='Primeros pasos con Pentaho Report Designer'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WiXyQmt4vdQ/SuAEkEDVeqI/AAAAAAAAAMU/3IZqxh1svWU/s72-c/Pantallazo.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5404075472219086220</id><published>2009-10-14T13:57:00.002+02:00</published><updated>2009-10-14T13:58:01.426+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Datawarehouse</title><content type='html'>http://www.sinnexus.com/business_intelligence/datawarehouse.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5404075472219086220?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5404075472219086220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5404075472219086220'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/10/datawarehouse.html' title='Datawarehouse'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4832393996177263316</id><published>2009-10-14T13:29:00.003+02:00</published><updated>2009-10-14T13:33:28.833+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Datamart</title><content type='html'>Un Datamart es una base de datos departamental, especializada en el almacenamiento de los datos de un área de negocio específica. Se caracteriza por disponer la estructura óptima de datos para analizar la información al detalle desde todas las perspectivas que afecten a los procesos de dicho departamento.&lt;br /&gt;&lt;br /&gt;Por tanto, para crear el datamart de un área funcional de la empresa es preciso encontrar la estructura óptima para el análisis de su información, estructura que puede estar montada sobre una base de datos OLTP, como el propio datawarehouse, o sobre una base de datos OLAP. La designación de una u otra dependerá de los datos, los requisitos y las características específicas de cada departamento. De esta forma se pueden plantear dos tipos de datamarts:&lt;br /&gt;&lt;table class="tablaContenedora" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Datamart OLAP --&gt; Se basan en los populares cubos OLAP, que se construyen agregando, según los requisitos de cada área o departamento, las dimensiones y los indicadores necesarios de cada cubo relacional. El modo de creación, explotación y mantenimiento de los cubos OLAP es muy heterogéneo, en función de la herramienta final que se utilice.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Datamart OLTP -- &gt;Pueden basarse en un simple extracto del datawarehouse, no obstante, lo común es introducir mejoras en su rendimiento (las agregaciones y los filtrados suelen ser las operaciones más usuales) aprovechando las características particulares de cada área de la empresa. Las estructuras más comunes en este sentido son las tablas report, que vienen a ser fact-tables reducidas (que agregan las dimensiones oportunas), y las vistas materializadas, que se construyen con la misma estructura que las anteriores, pero con el objetivo de explotar la reescritura de queries (aunque sólo es posibles en algunos SGBD avanzados, como Oracle).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Información sacada del siguiente enlace:&lt;br /&gt;http://www.sinnexus.com/business_intelligence/datamart.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4832393996177263316?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4832393996177263316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4832393996177263316'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/10/datamart.html' title='Datamart'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-6100350033881673433</id><published>2009-10-14T09:03:00.002+02:00</published><updated>2009-10-14T13:12:50.414+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Alterian</title><content type='html'>Es un software cuyo funcionamiento se basa en bases de datos optimizadas con el fin de realizar consultas mas rapidas sobre una cantidad de datos grandes.&lt;br /&gt;&lt;br /&gt;Para ello el SGBD indexas las columnas y traspone las filas de las tablas por columnas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-6100350033881673433?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6100350033881673433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6100350033881673433'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/10/data-mart.html' title='Alterian'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-6594024375237540790</id><published>2009-10-07T09:47:00.000+02:00</published><updated>2009-10-07T09:48:20.625+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>XPath</title><content type='html'>&lt;a href="http://www.zvon.org/xxl/XPathTutorial/General/examples.html"&gt;http://www.zvon.org/xxl/XPathTutorial/General/examples.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-6594024375237540790?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6594024375237540790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6594024375237540790'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/10/xpath.html' title='XPath'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7464960942904607768</id><published>2009-09-28T10:45:00.002+02:00</published><updated>2009-09-28T10:50:33.363+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Lenguaje Ensamblador</title><content type='html'>Lenguaje de bajo nivel que se utiliza para escribir programas informaticos.Estos programas son generalmente más rápidos y consumen menos recursos del sistema.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7464960942904607768?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7464960942904607768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7464960942904607768'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/09/lenguaje-ensamblador.html' title='Lenguaje Ensamblador'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-1373498474034290480</id><published>2009-09-21T12:59:00.000+02:00</published><updated>2009-09-21T13:00:03.569+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Manual de Log4j</title><content type='html'>He visto en internet un manual sobre esto, aqui dejo el enlace:&lt;br /&gt;&lt;br /&gt;http://emmersonmiranda.blogspot.com/2009/09/manual-de-log4j-1215.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-1373498474034290480?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1373498474034290480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1373498474034290480'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/09/manual-de-log4j.html' title='Manual de Log4j'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7297996579537403196</id><published>2009-09-08T09:00:00.000+02:00</published><updated>2009-09-08T09:01:19.363+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><title type='text'>Libros de tecnologías</title><content type='html'>&lt;a href="http://www.taringa.net/posts/ebooks-tutoriales/1392588/Recopilaci%C3%B3n-de-casi-50-Libros-sobre:-Java,-Certificaciones.html"&gt;http://www.taringa.net/posts/ebooks-tutoriales/1392588/Recopilaci%C3%B3n-de-casi-50-Libros-sobre:-Java,-Certificaciones.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7297996579537403196?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7297996579537403196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7297996579537403196'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/09/libros-de-tecnologias.html' title='Libros de tecnologías'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-6614536798295256060</id><published>2009-08-31T10:33:00.003+02:00</published><updated>2009-08-31T10:57:54.627+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>SimpleDateFormat</title><content type='html'>La clase SimpleDateFormat nos ayuda a mostrar las fechas en el formato que queramos o a reconstruirlas a partir de una cadena de texto.&lt;br /&gt;&lt;br /&gt;Si queremos por ejemplo obtener un fecha en formto dd/mm/aaaa seri de la siguente forma:&lt;br /&gt;&lt;br /&gt;SimpleDateFormat parsear = new SimpleDateFormat("dd/MM/yyyy");&lt;br /&gt;&lt;br /&gt;pasear.format(fecha);&lt;br /&gt;&lt;br /&gt;Donde fecha es la que vamos a formatear.&lt;br /&gt;&lt;br /&gt;Podemos realizar otras funciones para mas información mirar en la API&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-6614536798295256060?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6614536798295256060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6614536798295256060'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/08/simpledateformat.html' title='SimpleDateFormat'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-1707224327762129032</id><published>2009-08-06T12:05:00.001+02:00</published><updated>2009-08-06T12:05:46.906+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Threads'/><title type='text'>Tipos de Threads</title><content type='html'>Existen varios tipos de threads que pueden aparecer en una aplicación:&lt;br /&gt;&lt;br /&gt;   * Threads &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;completamente&lt;/span&gt; independientes, que realizan tareas no relacionadas. Como el caso de imprimir un documento.&lt;br /&gt;   * Threads que trabajan con una misma tarea, es decir se ayudan entre ellos, pero sin &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;interferir&lt;/span&gt; ni intercambiar relación entre ellos. Por ejemplo, threads que colaboran en el producto de dos matrices, ocupándose cada una de ellas de calcular ciertas filas de la matriz producto.&lt;br /&gt;   * Threads que utilizan recursos de modo mutuamente exclusivo, aunque sin tener que coordinar sus actividades. Este ocurre en los threads que intentan leer o actualizar un registro en la base de datos.&lt;br /&gt;   * Threads que deben coordinar sus actividades, de modo que una de ellas no puede empezar o continuar hasta que la otra haya realizado su tarea. Un ejemplo muy conocido es el problema del productor-consumidor .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-1707224327762129032?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1707224327762129032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1707224327762129032'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/08/tipos-de-threads.html' title='Tipos de Threads'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-3117379848532318244</id><published>2009-08-06T11:43:00.002+02:00</published><updated>2009-08-06T12:02:33.578+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Threads'/><title type='text'>Threads</title><content type='html'>Los threads o hilos de ejecución son segmentos de código de un prograna que se ejecutan secuencialmente de modo independiente de las otras partes del programa.&lt;br /&gt;&lt;br /&gt;Utilizamos los  threads en un programa para aislar y sincronizar tareas.Cada hilo se encarga de una parte del programa, por ejemplo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;tranferencia de ficheros&lt;/li&gt;&lt;li&gt;pintar los graficos&lt;/li&gt;&lt;li&gt;conectar a la base de datos.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;La clase Thread desciente de Object e implementa la interface Runnable y no es necesario importarlas a nuestro programa ya que se encuentran dentro del paquete java.lang.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-3117379848532318244?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3117379848532318244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3117379848532318244'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/08/threads.html' title='Threads'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5441846444642936263</id><published>2009-08-06T11:40:00.003+02:00</published><updated>2009-08-06T12:03:27.325+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Threads'/><title type='text'>Método sleep()</title><content type='html'>Este método le dice al Thread que duerma durante los milisegundos especificados entre sus paréntesis.&lt;br /&gt;&lt;br /&gt;Se debería utilizar  cuando se pretenda retrasar la ejecución del hilo.&lt;br /&gt;&lt;br /&gt;El &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;sleep&lt;/span&gt;() no consume recursos del sistema, mientras duerme el hilo, los demás hilos se siguen ejecutando sin problema alguno&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5441846444642936263?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5441846444642936263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5441846444642936263'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/08/metodo-sleep.html' title='Método sleep()'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-8994696238763065676</id><published>2009-07-24T09:17:00.004+02:00</published><updated>2009-08-04T15:09:25.348+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Leer Pdf desde Java</title><content type='html'>Vamos a utilizar la libreria &lt;a href="http://incubator.apache.org/pdfbox/"&gt;PDFBox&lt;/a&gt;, que nos permite manejar diferntes tipos de PDF y convertir pdf a texto.&lt;br /&gt;&lt;br /&gt;Mediante lineas de comando convertimos el pdf en un archivo de texto.&lt;br /&gt;&lt;br /&gt;Aqui tenemos un ejemplo de una clase para Leer PDF&lt;br /&gt;&lt;br /&gt;import java.io.BufferedReader;&lt;br /&gt;import java.io.File;&lt;br /&gt;import java.io.FileInputStream;&lt;br /&gt;import java.io.FileReader;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import org.pdfbox.cos.COSDocument;&lt;br /&gt;import org.pdfbox.pdfparser.&lt;div id=":t7" class="ii gt"&gt;&lt;wbr&gt;PDFParser;&lt;br /&gt;import org.pdfbox.pdmodel.PDDocument;&lt;br /&gt;import org.pdfbox.pdmodel.&lt;wbr&gt;PDDocumentInformation;&lt;br /&gt;import org.pdfbox.util.&lt;wbr&gt;PDFTextStripper;&lt;br /&gt;&lt;br /&gt;   public class LeerPDF {&lt;br /&gt;&lt;br /&gt;        PDFParser parser;&lt;br /&gt;        String parsedText;&lt;br /&gt;        PDFTextStripper pdfStripper;&lt;br /&gt;        PDDocument pdDoc;&lt;br /&gt;        COSDocument cosDoc;&lt;br /&gt;        PDDocumentInformation pdDocInfo;&lt;br /&gt;&lt;br /&gt;      // PDFTextParser Constructor&lt;br /&gt;       public LeerPDF() {&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       // Extract text from PDF Document&lt;br /&gt;       public String pdftoText(String fileName) {&lt;br /&gt; &lt;br /&gt;          //System.out.println("Parsing text from PDF file " + fileName + "....");&lt;br /&gt;          File f = new File(fileName);&lt;br /&gt; &lt;br /&gt;          if (!f.isFile()) {&lt;br /&gt;               System.out.println("File " + fileName + " does not exist.");&lt;br /&gt;                return null;&lt;br /&gt;           }&lt;br /&gt; &lt;br /&gt;          try {&lt;br /&gt;               parser = new PDFParser(new FileInputStream(f));&lt;br /&gt;           } catch (Exception e) {&lt;br /&gt;                System.out.println("Unable to open PDF Parser.");&lt;br /&gt;              return null;&lt;br /&gt;            }&lt;br /&gt;  &lt;br /&gt;         try {&lt;br /&gt;               parser.parse();&lt;br /&gt;               cosDoc = parser.getDocument();&lt;br /&gt;               pdfStripper = new PDFTextStripper();&lt;br /&gt;               pdDoc = new PDDocument(cosDoc);&lt;br /&gt;               parsedText = pdfStripper.getText(pdDoc);&lt;br /&gt;           } catch (Exception e) {&lt;br /&gt;                System.out.println("An exception occured in parsing the PDF Document.");&lt;br /&gt;                e.printStackTrace();&lt;br /&gt;                try {&lt;br /&gt;                       if (cosDoc != null) cosDoc.close();&lt;br /&gt;                      if (pdDoc != null) pdDoc.close();&lt;br /&gt;                 } catch (Exception e1) {&lt;br /&gt;                 e.printStackTrace();&lt;br /&gt;               }&lt;br /&gt;                return null;&lt;br /&gt;            }&lt;br /&gt;            System.out.println("Done.");&lt;br /&gt;           return parsedText;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Write the parsed text from PDF to a file&lt;br /&gt;      /* void writeTexttoFile(String pdfText, String fileName) {&lt;br /&gt;   &lt;br /&gt;            System.out.println("\nWriting PDF text to output text file " + fileName + "....");&lt;br /&gt;           try {&lt;br /&gt;               PrintWriter pw = new PrintWriter(fileName);&lt;br /&gt;               pw.print(pdfText);&lt;br /&gt;                pw.close();&lt;br /&gt;           } catch (Exception e) {&lt;br /&gt;               System.out.println("An exception occured in writing the pdf text to file.");&lt;br /&gt;               e.printStackTrace();&lt;br /&gt;            }&lt;br /&gt;           System.out.println("Done.");&lt;br /&gt;        }*/&lt;br /&gt;&lt;br /&gt;       // Extracts text from a PDF Document and writes it to a text file&lt;br /&gt;       public static void main(String args[]) {&lt;br /&gt;  &lt;br /&gt;           /* if (args.length != 2) {&lt;br /&gt;              System.out.println("Usage: java PDFTextParser  ");&lt;br /&gt;              System.exit(1);&lt;br /&gt;            }*/&lt;br /&gt;&lt;br /&gt;           LeerPDF pdfTextParserObj = new LeerPDF();&lt;br /&gt;           //String pdfToText = pdfTextParserObj.pdftoText(&lt;wbr&gt;args[0]);&lt;br /&gt;           String pdfToText = pdfTextParserObj.pdftoText("C:&lt;wbr&gt;/datos/Java2.pdf");&lt;br /&gt;           System.out.println(pdfToText);&lt;br /&gt; &lt;br /&gt;          /* if (pdfToText == null) {&lt;br /&gt;              System.out.println("PDF to Text Conversion failed.");&lt;br /&gt;          }&lt;br /&gt;          else {&lt;br /&gt;              System.out.println("\nThe text parsed from the PDF Document....\n" + pdfToText);&lt;br /&gt;              // pdfTextParserObj.&lt;wbr&gt;writeTexttoFile(pdfToText, args[1]);&lt;br /&gt;            &lt;br /&gt;               pdfTextParserObj.&lt;wbr&gt;writeTexttoFile(pdfToText, "C:/datos/Java2.txt");&lt;br /&gt;           }*/&lt;br /&gt;      }&lt;br /&gt;   }&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-8994696238763065676?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8994696238763065676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8994696238763065676'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/07/leer-pdf-desde-java.html' title='Leer Pdf desde Java'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5497061229496180199</id><published>2009-07-02T10:32:00.000+02:00</published><updated>2009-07-02T10:33:10.157+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Jaxb</title><content type='html'>http://www.programacion.com/java/tutorial/jaxb/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5497061229496180199?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5497061229496180199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5497061229496180199'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/07/jaxb.html' title='Jaxb'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-3717687953678776372</id><published>2009-06-29T14:47:00.003+02:00</published><updated>2009-06-30T10:26:14.161+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Convertir tipo File a InputStream y viceversa</title><content type='html'>Para convertir de file a inputstream:&lt;br /&gt;&lt;br /&gt;InputStream is = new FileInputStream (file);&lt;br /&gt;&lt;br /&gt;Para convertir de inputstream a file:&lt;br /&gt;&lt;br /&gt; byte[] data = IOUtils.toByteArray(inputStream);&lt;br /&gt; File temportal = new File("/tmp/" + nombreFichero);&lt;br /&gt; org.apache.commons.io.FileUtils.writeByteArrayToFile(temportal, data);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-3717687953678776372?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3717687953678776372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3717687953678776372'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/06/convertir-tipo-file-inputstream.html' title='Convertir tipo File a InputStream y viceversa'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7950050638022643536</id><published>2009-06-22T11:30:00.002+02:00</published><updated>2009-06-30T10:46:21.857+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Crear Excel desde Java</title><content type='html'>Introducción&lt;br /&gt;POI consiste en APIs para manipular varios formatos de ficheros       basados en el formato de Documento Compuesto OLE 2 de Microsoft, utilizando Java puro. En concreto, se pueden       leer y escribir ficheros MS Excel utilizando Java.&lt;br /&gt;&lt;br /&gt;Voy a poner un ejemplo que yo tuve que hacer:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public class Prueba(){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   public String actionExportarExcel(){&lt;br /&gt;   ExportarUtils exportar= ExportarUtils.getInstance();&lt;br /&gt;   Vector v= new Vector(); &lt;br /&gt;//    cabecera del excel&lt;br /&gt;   v.addElement("Cabecera1, cabecera2,....");&lt;br /&gt;   v.addElement(dato1, dato2,dato3,........);&lt;br /&gt;  &lt;br /&gt;   // Generar el fichero&lt;br /&gt;   try {&lt;br /&gt;       exportar.crearExcel(v, "Titulo", "nombreFichero.xls");&lt;br /&gt;   } catch (Exception e) {&lt;br /&gt;       log.debug(e.getMessage());&lt;br /&gt;   }&lt;br /&gt;   return null;&lt;br /&gt;   }&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;}//fin de clase&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//Clase para la preparacion del fichero Excel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;import java.io.FileOutputStream;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;import java.util.StringTokenizer;&lt;br /&gt;import java.util.Vector;&lt;br /&gt;import org.apache.poi.hssf.usermodel.HSSFCell;&lt;br /&gt;import org.apache.poi.hssf.usermodel.HSSFCellStyle;&lt;br /&gt;import org.apache.poi.hssf.usermodel.HSSFFont;&lt;br /&gt;import org.apache.poi.hssf.usermodel.HSSFRow;&lt;br /&gt;import org.apache.poi.hssf.usermodel.HSSFSheet;&lt;br /&gt;import org.apache.poi.hssf.usermodel.HSSFWorkbook;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public class ExportarUtils {&lt;/span&gt;&lt;br /&gt;   private ExportarUtils() {&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public static ExportarUtils getInstance()  {&lt;br /&gt;   if (singleton == null) {&lt;br /&gt;       singleton=new ExportarUtils();&lt;br /&gt;   }&lt;br /&gt;   return singleton;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public static void createCell(HSSFRow row, short i, String value, HSSFCellStyle style) {&lt;br /&gt;   HSSFCell cell = row.createCell(i);&lt;br /&gt;   value = value+" ";    &lt;br /&gt;   cell.setCellValue(value);&lt;br /&gt;   // si no hay estilo, no se aplica&lt;br /&gt;   if (style != null)&lt;br /&gt;       cell.setCellStyle(style);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-weight: bold;"&gt; &lt;/span&gt; public void crearExcel(Vector v, String namesheet, String filename) &lt;br /&gt;    throws Exception { &lt;br /&gt;    try { &lt;br /&gt;        workbook = new HSSFWorkbook();&lt;br /&gt;        HSSFSheet sheet=workbook.createSheet("Nueva Hoja");&lt;br /&gt;        int filas = v.size(); &lt;br /&gt;        for (int i = 0; i &lt; filas; i++) { &lt;br /&gt;        String fila = (String) v.elementAt(i); &lt;br /&gt;        StringTokenizer st = new StringTokenizer(fila, ","); &lt;br /&gt;        HSSFRow row = sheet.createRow((short) i); &lt;br /&gt;        int j = 0; &lt;br /&gt;        while (st.hasMoreTokens()) { &lt;br /&gt;            String token = st.nextToken();           &lt;br /&gt;            // para la cabecera, la primera fila, aplicamos un estilo (negrita y color de fondo azul) &lt;br /&gt;            if (i == 0) { &lt;br /&gt;            HSSFCellStyle style = workbook.createCellStyle(); &lt;br /&gt;            //style.setFillForegroundColor(IndexedColors.BLUE_GREY.getIndex());  ); &lt;br /&gt;           &lt;br /&gt;            style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); &lt;br /&gt;            HSSFFont font = workbook.createFont(); &lt;br /&gt;            font.setFontHeightInPoints((short)10); &lt;br /&gt;            font.setFontName("Courier New"); &lt;br /&gt;            font.setItalic(true); &lt;br /&gt;            // font.setStrikeout(true);&lt;br /&gt;            font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); &lt;br /&gt;            //font.setColor(Short.parseShort("#ffffff")); &lt;br /&gt;            style.setFont(font); &lt;br /&gt;            createCell(row, (short)j, token, style); &lt;br /&gt;            } else &lt;br /&gt;            createCell(row, (short)j, token, null); &lt;br /&gt;&lt;br /&gt;            j = j + 1; &lt;br /&gt;&lt;br /&gt;        } &lt;br /&gt;&lt;br /&gt;        } &lt;br /&gt;&lt;br /&gt;        // Asignar automaticamente el tamaño de las celdas en funcion del contenido &lt;br /&gt;        //for (int i = 0; i &lt; filas; i++) { &lt;br /&gt;        sheet.setDefaultColumnWidth((short) 55); &lt;br /&gt;      //  } &lt;br /&gt;      &lt;br /&gt;        // Escribir el fichero. &lt;br /&gt;        FileOutputStream fileOut = new FileOutputStream(filename); &lt;br /&gt;        workbook.write(fileOut); &lt;br /&gt;        fileOut.close(); &lt;br /&gt;&lt;br /&gt;    } catch (Exception e) &lt;br /&gt;    { &lt;br /&gt;        e.printStackTrace(); &lt;br /&gt;    } &lt;br /&gt;    }&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Aui en este enlace bien mejor explicado &lt;a href="http://poi.apache.org/trans/es/index.html"&gt;POI&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7950050638022643536?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7950050638022643536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7950050638022643536'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/06/crear-excel-desde-java.html' title='Crear Excel desde Java'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-22585860637274000</id><published>2009-06-10T11:51:00.002+02:00</published><updated>2009-06-10T11:59:20.869+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><category scheme='http://www.blogger.com/atom/ns#' term='Problemas/Soluciones'/><title type='text'>Problema con File</title><content type='html'>Necesitaba saber si  un fichero es correcto o no y para ello &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;utilicé&lt;/span&gt; :&lt;br /&gt;&lt;br /&gt;File fichero = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;new&lt;/span&gt; File(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;rutaFichero&lt;/span&gt;);&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;if&lt;/span&gt;(fichero.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;exists&lt;/span&gt;()){&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Pues esto siempre me &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;decía&lt;/span&gt; que no &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;existía&lt;/span&gt; ese fichero cuando si &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;existía&lt;/span&gt; perfectamente.Entonces vi que &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;había&lt;/span&gt; una opción de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;createNewFile&lt;/span&gt;() lo &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;utilicé&lt;/span&gt; en vez del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;exists&lt;/span&gt;() y esto si me funcionaba, y me dijeron que esto &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;podía&lt;/span&gt; ser porque File crea una referencia pero puede ser que &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;todavía&lt;/span&gt; no se ha relacionado con el fichero físico y por eso me daba siempre &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;false&lt;/span&gt; al comprobarlo con &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;exists&lt;/span&gt;().&lt;br /&gt;&lt;br /&gt;Una vez hecho esto del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;createNewFile&lt;/span&gt; ya si podemos hacerle el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;exists&lt;/span&gt;().&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-22585860637274000?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/22585860637274000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/22585860637274000'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/06/problema-con-file.html' title='Problema con File'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4960789079421201333</id><published>2009-06-09T12:07:00.002+02:00</published><updated>2009-06-09T12:30:26.502+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>INNER CLASS</title><content type='html'>Una clase embebida es una clase que se define dentro de otra.&lt;br /&gt;&lt;br /&gt;Se puede definir una clase embebida de la siguiente forma:&lt;br /&gt;class Externa {&lt;br /&gt;   . . .&lt;br /&gt;   class Interna {&lt;br /&gt;       . . .&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;Una diferencia importante es que un objeto de la clase embebida está relacionado siempre con un objeto de la clase que la envuelve, de tal forma que las instancias de la clase embebida deben ser creadas por una instancia de la clase que la envuelve. Desde el exterior estas referencias pueden manejarse, pero calificandolas completamente, es decir nombrando la clase externa y luego la interna. Además una instancia de la clase embebida tiene acceso a todos los datos miembros de la clase que la envuelve sin usar ningún calificador de acceso especial (como si le pertenecieran).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4960789079421201333?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4960789079421201333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4960789079421201333'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/06/inner-class.html' title='INNER CLASS'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-3711972846848412582</id><published>2009-05-26T09:04:00.003+02:00</published><updated>2009-05-26T10:11:05.781+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Constantes de una Interface</title><content type='html'>Todo método o variable  &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;definido&lt;/span&gt; en una interfaz sin &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;public&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;static&lt;/span&gt; y final.&lt;br /&gt;&lt;br /&gt;Esto quiere decir que si declaramos una constante y le damos valores no se le &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;podrá&lt;/span&gt; cambiar nunca.&lt;br /&gt;&lt;br /&gt;Al crearlo no hace falta &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;declararlo&lt;/span&gt; como &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;public&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;statis&lt;/span&gt; final &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;String&lt;/span&gt; nombre="nombre" ya esta &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;implícito&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-3711972846848412582?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3711972846848412582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3711972846848412582'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/constantes-de-una-interface.html' title='Constantes de una Interface'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-6253258817562073630</id><published>2009-05-26T08:30:00.004+02:00</published><updated>2009-05-26T08:53:59.217+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Normas de Nomenclatura</title><content type='html'>Esto hace que los programas sean más fáciles de leer y estándar &lt;ul&gt;&lt;li&gt;Clases--&gt; Los nombres de clases deben ser palabras completas, en mayúsculas y minúsculas, con la primera letra de cada palabra en mayúscula. Los nombres de clases deben ser simples y descriptivos, utilizando palabras completas y acrónimos o abreviaturas (a no ser que la abreviatura sea ampliamente conocida, como URL o HTML). Por ejemplo: class Coche ,class EmpresaProductora.&lt;/li&gt;&lt;li&gt;Interfaces--&gt; Siguen las mismas reglas que las clases. Por ejemplo: interface AlmacenarCoche, class Almacen.&lt;/li&gt;&lt;li&gt;Métodos--&gt;Los métodos deberían ser verbos, en mayúsculas y minúsculas, con la primera letra en minúscula, y la primera letra de cada una de las palabras internas en mayúscula. Por ejemplo: correr(), numeroRuedas(), pintarCoche().&lt;/li&gt;&lt;li&gt;Variables--&gt; Todas los nombres de variables de instancia o de clase deben estar constituidos por palabras con la primera letra de la primera palabra en minúscula y la primera letra de las palabras internas en mayúscula.Los nombres de variables deben ser cortos y significativos. La elección de un nombre de variable debe ser mnemotécnico, es decir, pensado para que un lector casual al verla comprenda su uso. Se deben evitar las variables de una sola letra, excepto en variables temporales de corto uso. Nombres comunes para este tipo de variables son: &lt;span style=";font-family:Courier New;font-size:85%;"  &gt;i&lt;/span&gt;&lt;span style="font-size:100%;"&gt;, &lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;j&lt;/span&gt;&lt;span style="font-size:100%;"&gt;, &lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;k&lt;/span&gt;&lt;span style="font-size:100%;"&gt;, &lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;m&lt;/span&gt;&lt;span style="font-size:100%;"&gt; y &lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;n&lt;/span&gt;&lt;span style="font-size:100%;"&gt; para enteros; &lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;c&lt;/span&gt;&lt;span style="font-size:100%;"&gt;, d y e para caracteres.Por ejemplo: int i; char *cp, float miVariable.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;int char="" float=""&gt;&lt;span style=";font-family:Verdana,Helvetica;font-size:85%;"  &gt;Constantes--&gt;L&lt;/span&gt;&lt;/int&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana,Helvetica;font-size:85%;"  &gt;os nombres de variables declaradas como constantes de clase y constantes ANSI, deberías escribirse siempre en mayúsculas, con las palabras internas separadas por el signo de subrayado ("_"). Las constantes ANSI se deben evitar en lo posible, para facilitar la depuración del código. Por ejemplo &lt;/span&gt;int MIN_WIDTH = 4;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-6253258817562073630?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6253258817562073630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6253258817562073630'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/normas-de-nomenclatura.html' title='Normas de Nomenclatura'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-8275452446689698880</id><published>2009-05-20T09:14:00.004+02:00</published><updated>2009-05-20T09:40:55.142+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Métodos y Variables estáticas</title><content type='html'>Los utilizamos para realizar acciones que no  &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;están&lt;/span&gt; asociados a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;ningún&lt;/span&gt; objeto en particular, son&lt;br /&gt;comunes para todos los objetos de la  clase.&lt;br /&gt;&lt;br /&gt;Para acceder a ellos ponemos  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;NombreClase&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;metodoStatic&lt;/span&gt;, no se instancia como los &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;métodos&lt;/span&gt; y &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;variables&lt;/span&gt; objetos.&lt;br /&gt;&lt;br /&gt;No conviene usar muchos métodos estáticos, pues si bien se aumenta la rapidez  de ejecución, se pierde flexibilidad, no se hace un uso efectivo de la memoria y no se trabaja según los principios de la  Programación Orientada a Objetos.&lt;br /&gt;&lt;br /&gt;Para crear atributos o métodos estaticos se usa la palabra static.&lt;br /&gt;&lt;div style="text-align: center;"&gt;static String nombre&lt;br /&gt;static int nombreMetodo(){}&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-8275452446689698880?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8275452446689698880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8275452446689698880'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/metodos-y-variables-estaticas.html' title='Métodos y Variables estáticas'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4820159113107297905</id><published>2009-05-18T14:23:00.002+02:00</published><updated>2009-05-19T08:58:12.335+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Errores de lógica</title><content type='html'>Los errores de lógica son conocidos como BUGS. Estos son los errores que nos tomarán tiempo hasta encontrarlos&lt;br /&gt;Puede costar encontrarlo y para ello hacemos el debug cuando suceden errores de lógica, para ir viendo pasao a paso el programa y ver donde hemos podio fallar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4820159113107297905?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4820159113107297905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4820159113107297905'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/errores-de-lnogica.html' title='Errores de lógica'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-6500455915805177851</id><published>2009-05-18T14:19:00.000+02:00</published><updated>2009-05-18T14:21:21.185+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Errores de ejecución</title><content type='html'>Los errores en tiempo de ejecución son errores que aparecen mientras se ejecuta su programa. Estos errores aparecen normalmente cuando su programa intenta una operación que es imposible que se lleve a cabo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-6500455915805177851?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6500455915805177851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6500455915805177851'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/errores-de-ejecucion.html' title='Errores de ejecución'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5275830992445811052</id><published>2009-05-18T14:11:00.001+02:00</published><updated>2009-05-18T14:18:51.598+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Errores de compilación</title><content type='html'>Los errores de compilación son errores que impiden que su programa se ejecute, es decir si el compilar Java (javac) no puede reconocer la sentencia,este devuelve un mensaje de error, usualmente con una línea de código de referencia. También se conoce a los errores de sintaxis como errores en tiempo de compilación.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5275830992445811052?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5275830992445811052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5275830992445811052'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/errores-de-compilacion.html' title='Errores de compilación'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7563971332094879782</id><published>2009-05-18T11:28:00.002+02:00</published><updated>2009-05-18T13:18:23.379+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Variables</title><content type='html'>Las variables son la manera en que indicamos al compilador el espacio en memoria que debe de reservar para almacenar la información.&lt;br /&gt;&lt;br /&gt;Las variables pueden ser de 2 tipos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; primitivo--&gt; int, char, long,byte,boolean,float,double.Estas variable tiene el valor asignado directamente .&lt;br /&gt;&lt;/li&gt;&lt;li&gt;referenciadas--&gt;no tienen el valor directamente sino que apuntan a una espacio de memoria donde se encuentra el valor,(los objetos).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7563971332094879782?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7563971332094879782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7563971332094879782'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/variables.html' title='Variables'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7637260525262384232</id><published>2009-05-18T11:13:00.004+02:00</published><updated>2009-05-18T11:28:44.829+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Clases</title><content type='html'>Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos.&lt;br /&gt;&lt;br /&gt;Estrcutura de una clase:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;acceso class nombre clase{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//cuerpo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Las características de una clase son las siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1) Todas las variables y funciones de Java deben pertenecer a una clase.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;2) Si una clase deriva de otra (extends), hereda todas sus variables y métodos.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;3) En un fichero se pueden definir varias clases, pero en un fichero no puede haber más que una clase public.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;6) Si una clase contenida en un fichero no es public, no es necesario que el fichero se llame como la clase.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;7) Los métodos de una clase pueden referirse de modo global al objeto de esa clase al que       se aplican por medio de la referencia this.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;8) Las clases se pueden agrupar en packages, introduciendo una línea al comienzo del fichero (package packageName;).&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7637260525262384232?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7637260525262384232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7637260525262384232'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/clases.html' title='Clases'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7989467584991793186</id><published>2009-05-18T10:11:00.006+02:00</published><updated>2009-05-18T10:45:33.777+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Métodos</title><content type='html'>Un método es una función que puede ser llamado desde dentro de la clase o de otra clase.&lt;br /&gt;&lt;br /&gt;Un método puede devolver datos o nada, en el caso que no se devuelva nada como tipo de retorno void.&lt;br /&gt;&lt;br /&gt;Si el metodo que estamos creando recibe una lista de argumentos la forma de ponerlo seria&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0); font-weight: bold;"&gt; &lt;span style="color: rgb(102, 0, 0);"&gt;acceso tipoRetorno nombre_metodo(TipoVariable arg1, TipoVariable arg2, ....)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Los métodos se crean de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt; acceso tipodeRetorno nombre_método(lista de arguementos){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt;//cuerpo &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La llamada al método, se realiza poniendo el nombre y pasandole los argumentos en el caso que tuvieran.Por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;int actionCalcular(int num1, int num2){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;int suma=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;suma=num1+num2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;return suma&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Los método tambien tiene modificadores de acceso.&lt;/span&gt;En java hay 4 tipos de accesos a los métodos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;public--&gt;todo el mundo accede a este método, ya sea desde otra clase, paquete, subclase, ....&lt;br /&gt;&lt;/li&gt;&lt;li&gt;private--&gt; sólo acceden se al método dentro de la misma clase.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;protected--&gt;pueden acceder a este mñetodo los que esten en el mismo paquete, la misma clase y su subclases.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;predeterminado--&gt;pueden acceder la misma clase y los que estén en el mismo paquete.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7989467584991793186?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7989467584991793186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7989467584991793186'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/metodos.html' title='Métodos'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-3128085755954119820</id><published>2009-05-18T10:05:00.004+02:00</published><updated>2009-05-18T10:10:51.244+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Constantes</title><content type='html'>En Java, se utiliza la palabra clave final para indicar que una variable debe comportarse como si fuese constante, significando con esto que no se permite su modificación una vez que haya sido declarada e inicializada.&lt;br /&gt;&lt;br /&gt;Como es una constante, se le ha de proporcionar un valor en el momento en que se declare, por ejemplo:&lt;br /&gt;&lt;br /&gt; class Prueba {&lt;br /&gt;     final int version = 1';&lt;br /&gt;     . . .&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;Si se intenta modificar el valor de una variable final desde el código de la aplicación, se generará un error de compilación.&lt;br /&gt;&lt;br /&gt;Si se usa la palabra clave final con una variable o clase estática, se pueden crear constantes de clase, haciendo de esto modo un uso altamente eficiente de la memoria, porque no se necesitarán múltiples copias de las constantes.&lt;br /&gt;&lt;br /&gt;La palabra clave final también se puede aplicar a métodos, significando en este caso que los métodos no pueden ser sobreescritos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-3128085755954119820?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3128085755954119820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3128085755954119820'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/constantes.html' title='Constantes'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-8638392807840028030</id><published>2009-05-18T08:18:00.003+02:00</published><updated>2009-05-18T09:10:41.841+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Literales</title><content type='html'>Un valor constante en Java se crea utilizando una representación literal de él.&lt;br /&gt;&lt;br /&gt;String nombre--&gt; donde nombre es el literal.&lt;br /&gt;&lt;br /&gt;Java utiliza 5 tipos de elementos:&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Enteros&lt;/strong&gt;:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;byte&lt;/strong&gt;    8 bits    complemento a dos&lt;/li&gt;&lt;li&gt;&lt;strong&gt;short&lt;/strong&gt;    16 bits    complemento a  dos&lt;/li&gt;&lt;li&gt;&lt;strong&gt;int&lt;/strong&gt;    32 bits    complemento a dos&lt;/li&gt;&lt;li&gt;&lt;strong&gt;long&lt;/strong&gt;    64 bits    complemento a dos&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Reales en coma flotante&lt;/strong&gt;:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;float&lt;/strong&gt;    32 bits    IEEE 754&lt;/li&gt;&lt;li&gt;&lt;strong&gt;double&lt;/strong&gt;    64 bits    IEEE 754 &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Booleanos&lt;/strong&gt;:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;false&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Caracteres&lt;/strong&gt;:&lt;/p&gt; &lt;p&gt; Por ejemplo: a       \t      \u????    [????] es un número unicode&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cadenas&lt;/strong&gt;:&lt;/p&gt; &lt;p&gt;    Por ejemplo: “Esto es una cadena literal”&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-8638392807840028030?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8638392807840028030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8638392807840028030'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/literales.html' title='Literales'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-3118434075334553133</id><published>2009-05-11T12:14:00.004+02:00</published><updated>2009-05-11T12:42:53.174+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Definir mi proyecto como repositorio.</title><content type='html'>Si queremos acceder a un repositorio que no esa el que tenemos en local, tenemos que crearnos una etiqueta mirror en el fichero setting.xml de la carpeta configuracion de maven.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En esa etiqueta ponemos todo lo necesario para conectarsno al repositorio, id, url y mirrorof&lt;br /&gt;&lt;br /&gt;&lt;div id=":ws" dir="ltr" class="kl"&gt;El proyecto lo exportamos como jar al repositorio que quieras indicandolo en el pom, con el comando mvn deploy.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-3118434075334553133?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3118434075334553133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3118434075334553133'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/definiri-repositorio-externo.html' title='Definir mi proyecto como repositorio.'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7564090607745309631</id><published>2009-05-08T11:54:00.004+02:00</published><updated>2009-05-08T12:21:16.242+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Abstracción</title><content type='html'>Permite capatar las caraterísticas esenciales de un objeto, asi como su comportamiento.&lt;br /&gt;&lt;br /&gt;Vamos a ver un ejemplo, el de un automovil, que es que todo el mundo usa a la hora de explicar esto.&lt;br /&gt;Veamos lo que podemos abtraer del automovil:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;marca&lt;/li&gt;&lt;li&gt;modelo&lt;/li&gt;&lt;li&gt;nº de puertas&lt;/li&gt;&lt;li&gt;color&lt;/li&gt;&lt;/ul&gt;Ahora veamos las caracterisiticas semenjantes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;arrancar.&lt;/li&gt;&lt;li&gt;frenar.&lt;/li&gt;&lt;li&gt;acelerar&lt;/li&gt;&lt;/ul&gt;La abstracción es clave para diseñar un buen software.&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7564090607745309631?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7564090607745309631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7564090607745309631'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/abstraccion.html' title='Abstracción'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5728512594038750968</id><published>2009-05-08T11:28:00.003+02:00</published><updated>2009-05-08T11:52:54.525+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>IBATIS</title><content type='html'>Es un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;framework&lt;/span&gt; de código abierto basado en capas que se ocupa de la capa de Persistencia.&lt;br /&gt;&lt;br /&gt;Puede ser implementado en Java y .&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;NET&lt;/span&gt; (también existe un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;port&lt;/span&gt; para &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Ruby&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;on&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Rails&lt;/span&gt; llamado &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;RBatis&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Asocia objetos de modelo (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;JavaBeans&lt;/span&gt;) con sentencias &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;SQL&lt;/span&gt; o procedimientos almacenados mediante ficheros  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;XML&lt;/span&gt;, simplificando la utilización de bases de datos.&lt;br /&gt;&lt;br /&gt;A diferencia de Hibernate, se necesitan conocimientos de sql, permite la optimización de las consultas, ya sea con lenguaje estándar o con SQL propietario del motor de base de datos utilizado. Con iBATIS, siempre se sabe lo que se está ejecutando en la base de datos, y tiene herramientas para evitar el problema de las “N + 1 consultas” y para generar consultas dinámicas muy potentes.&lt;br /&gt;&lt;br /&gt;Se configura mediante un fichero XML de configuración, &lt;b&gt;sql-map-config.xml&lt;/b&gt;.&lt;br /&gt;Además cada &lt;b&gt;objeto de modelo&lt;/b&gt;, que representa al objeto en la aplicación, se relaciona con un fichero del tipo &lt;b&gt;sqlMap.xml&lt;/b&gt;, que contiene sus sentencias &lt;a href="http://es.wikipedia.org/wiki/SQL" title="SQL"&gt;SQL&lt;/a&gt;. Por ejemplo, un objeto Java &lt;i&gt;Usuario&lt;/i&gt; con un objeto XML &lt;i&gt;usuario.xml&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Es posible subdividir la capa de Persistencia en tres subcapas:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;La capa de &lt;b&gt;Abstracción&lt;/b&gt; será el interfaz con la capa de la lógica de negocio, haciendo las veces de “facade” entre la aplicación y la persistencia. Se implementa de forma general mediante el patrón &lt;a href="http://es.wikipedia.org/wiki/Data_Access_Object" title="Data Access Object"&gt;Data Access Object&lt;/a&gt; (DAO), y particularmente en iBATIS se implementa utilizando su framework DAO (ibatis-dao.jar).&lt;/li&gt;&lt;li&gt;La capa de &lt;b&gt;Framework de Persistencia&lt;/b&gt; será el interfaz con el gestor de Base de Datos ocupándose de la gestión de los datos mediante un API. Normalmente en Java se utiliza &lt;a href="http://es.wikipedia.org/wiki/JDBC" title="JDBC" class="mw-redirect"&gt;JDBC&lt;/a&gt;; iBATIS utiliza su framework SQL-MAP (ibatis-sqlmap.jar).&lt;/li&gt;&lt;li&gt;La capa de &lt;b&gt;Driver&lt;/b&gt; se ocupa de la comunicación con la propia Base de Datos utilizando un Driver específico para la misma.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Toda implementación de iBATIS incluye los siguientes componentes:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;b&gt;Data Mapper&lt;/b&gt;: proporciona una forma sencilla de interacción de datos entre los objetos &lt;a href="http://es.wikipedia.org/wiki/Java" title="Java"&gt;Java&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/.NET" title=".NET" class="mw-redirect"&gt;.NET&lt;/a&gt; y bases de datos relacionales.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Data Access Object&lt;/b&gt;: abstracción que oculta la persistencia de objetos en la aplicación y proporciona un API de acceso a datos al resto de la aplicación&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5728512594038750968?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5728512594038750968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5728512594038750968'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/ibatis.html' title='IBATIS'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-6923630578905972183</id><published>2009-05-05T10:58:00.005+02:00</published><updated>2009-05-05T11:37:44.848+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Tipos de Clases</title><content type='html'>Existen varios tipos de clases en java:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;abstract --&gt; esta clase tiene al menos un método abstracto, no se instancia y se utiliza como clase base para herencia. La clase que deriva de esta tiene que declarar e implementar todos los métodos de la clase abstracta que sean abstracto, sino daria un error de compilación. Lo métodos no pueden ser privados o staticos sino no se pueden acceder a ellos. Ejemplo&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: justify;"&gt;                                  &lt;span style="color: rgb(204, 0, 0);"&gt;abstract&lt;/span&gt; class &lt;span style="color: rgb(204, 0, 0);"&gt;Prueba&lt;/span&gt; {&lt;br /&gt;     &lt;br /&gt;                       abstract metodo1();&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;                    abstract void metodo2();&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;                    void metodo3(){ //implementación }&lt;br /&gt;&lt;br /&gt;                  }&lt;br /&gt;         &lt;br /&gt;             public class &lt;span style="color: rgb(204, 0, 0);"&gt;Prueba2&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;extends&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;Prueba&lt;/span&gt;{&lt;br /&gt;             &lt;br /&gt;                  void metodo1(){ //implementación }&lt;br /&gt;                  void metodo2(){ //implementación }&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;              }&lt;br /&gt;   &lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="textoResaltado"&gt;synchronizable --&gt; &lt;/span&gt;Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;public --&gt;Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;final --&gt;esta se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase &lt;i&gt;final&lt;/i&gt;. Por ejemplo, la clase &lt;i&gt;Math&lt;/i&gt; es una clase &lt;i&gt;final.&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-6923630578905972183?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6923630578905972183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6923630578905972183'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/tipos-de-clases.html' title='Tipos de Clases'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2031877265831830470</id><published>2009-05-04T14:09:00.007+02:00</published><updated>2009-05-04T14:49:58.834+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Calendar</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Calendar&lt;/span&gt; es una clase abstracta base para convertir entre un objeto de tipo Date (java.util.Date) y un conjunto de campos enteros como &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;YEAR&lt;/span&gt; (año), &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;MONTH&lt;/span&gt; (mes), &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;DAY&lt;/span&gt; (día), &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;HOUR&lt;/span&gt; (hora), etc.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Calendar&lt;/span&gt; tiene muchas funciones en común con java.util.Date, lo que diferencia es a la hora de extraer datos, los de java.util.Date están obsoletos, y si manejamos algunos de estos métodos en realidad esas accediendo a funcionalidades de la clase &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Calendar&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;El método &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;getInstance&lt;/span&gt;()  nos devuelve una subclase de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Calendar&lt;/span&gt; con la hora actual, y usamos el método &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;set&lt;/span&gt;( ) para cambiar a la fecha.&lt;br /&gt;&lt;br /&gt;Tenemos que tener en cuenta que no todos los calendarios tienes años de 365 o 12 meses y a la hora de realizar operaciones tenemos que utilizar las subclases adecuadas el tipo de calendario que queramos.&lt;br /&gt;&lt;br /&gt;Para extraer los datos tenemos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;YEAR&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;MONTH&lt;/span&gt;&lt;/li&gt;&lt;li&gt;DATE, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;DAY&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;OF&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;MONTH&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;HOUR&lt;/span&gt;&lt;/li&gt;&lt;li&gt;MINUTE&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;SECOND&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Por ejemplo nosotros utilizaríamos la subclase &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;GregorianCalendar&lt;/span&gt;.&lt;br /&gt;Con esta clase podemos sumar varios días sin preocuparnos de calcular luego el año o el mes, lo hace la subclase sola.&lt;br /&gt;&lt;br /&gt;Tenemos dos métodos  que nos permiten avanzar un tiempo exacto sobre los datos obtenidos anteriormente, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;add&lt;/span&gt;(Constante, valor) y &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;roll&lt;/span&gt;(Constante, valor), recordemos que constante es por ejemplo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Calendar&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;MONTH&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;Roll&lt;/span&gt;() este hay que tener en &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;cuanta&lt;/span&gt; que cuando llega al limite &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_24"&gt;inferior&lt;/span&gt; o superior de constante cambia al limite &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_25"&gt;contrario&lt;/span&gt; sin cambiar los siguientes atributos.&lt;br /&gt;&lt;br /&gt;Los que hay que tener en cuenta son &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;add&lt;/span&gt;(), &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;get&lt;/span&gt;(),&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;set&lt;/span&gt;().&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2031877265831830470?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2031877265831830470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2031877265831830470'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/05/calendar.html' title='Calendar'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-907441238526772878</id><published>2009-04-20T12:41:00.003+02:00</published><updated>2009-04-20T12:58:32.589+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>JAXWS</title><content type='html'>Es el API java para el desarrollo de WS XML, forma parte de la distribución J2EE de Sun y al igual que otras APIs utiliza las anotaciones para el despliegue de las aplicación.&lt;br /&gt;&lt;br /&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;JAX-WS es una tecnología para la construcción de servicios web y los clientes que se comunican a través de XML.&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; JAX-WS permite a los desarrolladores escribir mensajes orientados a RPC, así como orientado a servicios web.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;En JAX-WS, una llamada a procedimiento remoto está representado por un protocolo basado en XML, como SOAP.&lt;/span&gt; &lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt; La especificación SOAP define sobre la estructura, la codificación de normas y convenciones de representación de llamadas a procedimiento remoto y las respuestas.&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt; Estas llamadas y respuestas se transmiten como mensajes SOAP (archivos XML) a través de HTTP.&lt;/span&gt; &lt;a name="wp83841"&gt; &lt;/a&gt;&lt;p class="pBody"&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;Aunque los mensajes SOAP son complejas, la API de JAX-WS oculta esta complejidad de la aplicación de desarrolladores&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt; En el lado del servidor, el desarrollador especifica los procedimientos remotos mediante la definición de métodos de una interfaz escrita en el lenguaje de programación Java.&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; El desarrollador también los códigos de una o más clases que implementan esos métodos.&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="pBody"&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Los programas cliente también son fáciles de código.&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; Un cliente crea un proxy (un objeto que representa el servicio) y luego simplemente invoca los métodos en el proxy.&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; Con JAX-WS, el desarrollador no generar o analizar mensajes SOAP.&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; Es el tiempo de ejecución JAX-WS sistema que convierte las llamadas a la API y las respuestas y los mensajes de SOAP.&lt;/span&gt; &lt;/p&gt;&lt;a name="wp81691"&gt; &lt;/a&gt;&lt;p class="pBody"&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;Con JAX-WS, los clientes y los servicios web tienen una gran ventaja: la independencia de la plataforma de lenguaje de programación Java.&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;Además, JAX-WS no es restrictiva: JAX-WS un cliente puede acceder a un servicio web que no se está ejecutando en la plataforma Java, y viceversa.&lt;/span&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="pBody"&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;Esta flexibilidad es posible gracias a JAX-WS utiliza tecnologías definidas por el World Wide Web Consortium (W3C): HTTP, SOAP, y el Lenguaje de descripción de servicios Web (WSDL&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="pBody"&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; WSDL especifica un formato XML para describir un servicio como un conjunto de parámetros de funcionamiento en los mensajes.&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;a name="wp63869"&gt; &lt;/a&gt;&lt;p class="pBody"&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-907441238526772878?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/907441238526772878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/907441238526772878'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/04/jaxws.html' title='JAXWS'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-8800146273971580826</id><published>2009-04-13T13:12:00.002+02:00</published><updated>2009-04-15T09:10:14.626+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Comandos DDL</title><content type='html'>&lt;ul&gt;&lt;li&gt;CREATE  Utilizado para crear nuevas tablas, campos e índices.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;DROP  Empleado para eliminar tablas e índices.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;ALTER  Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-8800146273971580826?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8800146273971580826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8800146273971580826'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/04/comandos-dll.html' title='Comandos DDL'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-8930549385416712106</id><published>2009-04-13T13:05:00.001+02:00</published><updated>2009-04-13T13:12:04.284+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Comandos DML</title><content type='html'>&lt;ul&gt;&lt;li&gt;SELECT  Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;INSERT  Utilizado para cargar lotes de datos en la base de datos en una única operación.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;UPDATE  Utilizado para modificar los valores de los campos y registros especificados.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;DELETE  Utilizado para eliminar registros de una tabla de una base de datos.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-8930549385416712106?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8930549385416712106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8930549385416712106'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/04/comandos-dml.html' title='Comandos DML'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4375689175097363</id><published>2009-04-13T13:03:00.005+02:00</published><updated>2009-04-15T08:18:03.595+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Introducción Sql</title><content type='html'>Es un lenguaje de consulta estructurado que utilizado por el motor de bases de datos de Microsoft Jet.SQL&lt;br /&gt;&lt;br /&gt;Existen dos tipos de comandos para este lenguaje:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Comandos DDL --&gt;   que permiten crear y definir nuevas bases de datos, campos e índices.&lt;/li&gt;&lt;li&gt;Comandos DML --&gt; que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4375689175097363?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4375689175097363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4375689175097363'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/04/introduccion-sql.html' title='Introducción Sql'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2724611745377765410</id><published>2009-04-13T12:24:00.008+02:00</published><updated>2009-04-13T13:02:19.654+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Índices</title><content type='html'>Un índice no es más que una orden para que el servidor de base de datos haga una reorganización física de la tabla respecto a unas normas (índices). Pero claro, si sobre una tabla con muchos índices hacemos muchos INSERT/UPDATE/DELETE (operaciones DML), eso implica un coste muy importante. Con lo que puede al final ir más lento con índices que sin ellos.&lt;br /&gt;&lt;br /&gt;Hay que tener en cuenta:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Las consultas más frecuentes deberían tener índices. El que hace la aplicación sabe cuál es más frecuente.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Esto es muy importante con campos VARCHAR, cuya búsqueda no indexada es horrible (FULL SCAN).&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;No hay que tener demasiados índices. Nunca 20, por ejemplo. A ser posible, máximo 6 ó 7. Se puede buscar qué consultas son más frecuentes y priorizar.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Una PK implica un índice.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Una FK también implica un índice. Es decir, si tenéis una tabla NOTICIA con un ID_TEMA que es FK a la PK de una tabla TEMA (ID_TEMA)... ya tenéis un índice sobre ID_TEMA, no hay que volver a hacerlo.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; los índices deben hacerse para campos que normalmente no deberían permitir valores nulos&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Esto es una explicación muy buena de un compañero de mi trabajo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2724611745377765410?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2724611745377765410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2724611745377765410'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/04/indices.html' title='Índices'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-9088930276107452048</id><published>2009-03-27T10:52:00.004+01:00</published><updated>2009-03-27T11:23:12.517+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>CIFS (Common Internet File System)</title><content type='html'>Es un protocolo que permite el intercambio de ficheros.&lt;br /&gt;&lt;br /&gt;Es la versión pública y multivendedor    del protocolo SMB&lt;br /&gt;&lt;br /&gt;He econtrado una definición más tecnica y mas completa:&lt;br /&gt;CIFS define un protocolo de acceso a sistemas de archivos remotos normalizado para uso en redes, permitiendo a los grupos de usuarios trabajar juntos y compartir documentos ya sea a través de Internet o dentro de sus intranets corporativas. Es una tecnología multiplataforma, abierta, basada en los protocolos para compartir archivos de MS Windows y otros sistemas operativos comunes, soportada por UNIX y otros sistemas operativos. En su máxima expresión, CIFS permitiría a millones de usuarios compartir sus archivos sin instalar nuevo software o cambiar su forma de trabajo habitual.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-9088930276107452048?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/9088930276107452048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/9088930276107452048'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/03/cifs.html' title='CIFS (Common Internet File System)'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5100570290348456865</id><published>2009-03-24T14:03:00.004+01:00</published><updated>2009-03-25T11:48:09.629+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><title type='text'>Drupal</title><content type='html'>Primero veamos una definición de Drupal:&lt;br /&gt;Es un sistema de gestión de contenido para sitios Web.Permite publicar artículos, imágenes, u otros archivos y servicios añadidos como foros, encuestas, votaciones, blogs y administración de usuarios y permisos. Drupal es un sistema dinámico: en lugar de almacenar sus contenidos en archivos estáticos en el sistema de ficheros del servidor de forma fija, el contenido textual de las páginas y otras configuraciones son almacenados en una base de datos y se editan utilizando un entorno Web incluido en el producto.(cogido de la wiki).&lt;br /&gt;&lt;br /&gt;En resumen:&lt;br /&gt;Drupal es una plataforma increíblemente potente. Su sistema modular y framework básico permiten desarrollos rápidos de sitios con muchas funcionalidades. Todo lo que necesitas es imaginar que quieres construir y empezar a poner una pieza sobre otra.&lt;br /&gt;Es un CMS pero también podría considerarse un framework&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5100570290348456865?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5100570290348456865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5100570290348456865'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/03/drupal.html' title='Drupal'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5274887170499372434</id><published>2009-03-04T14:30:00.002+01:00</published><updated>2009-03-04T14:48:30.551+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Añadir un jar Externo</title><content type='html'>Pinchamos sobre el proyecto con el botón derecho y elegimos la opción&lt;br /&gt;Build Path--&gt;Configure &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Build&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Path&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Se nos abre una ventana que son las propiedades del proyecto, y elegimos la pestaña &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Libraries&lt;/span&gt; y pulsamos el botón &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Add&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;External&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;JARs&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Buscamos donde tengamos el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;jar&lt;/span&gt;, le damos aceptar y listo.&lt;br /&gt;&lt;br /&gt;Para agregar &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;jar&lt;/span&gt; que &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;están&lt;/span&gt; el repositorio.&lt;br /&gt;&lt;br /&gt;Es igual que lo de antes pero se pulsa el botón &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Add&lt;/span&gt; Variable.&lt;br /&gt;Vamos a explicar como crear la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;variable&lt;/span&gt;.&lt;br /&gt;Para ello se le pulsa &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Add&lt;/span&gt; variable y le damos a Configure Variables, le ponemos la ruta del repositorio en este caso y un nombre. para esa variable.&lt;br /&gt;&lt;br /&gt;Le damos aceptar y ya podemos acceder a las &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;librerías&lt;/span&gt; que contiene repositorio.&lt;br /&gt;&lt;br /&gt;Ahora pinchamos sobre esa variable y buscamos la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;librería&lt;/span&gt; que queremos añadir y todo listo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5274887170499372434?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5274887170499372434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5274887170499372434'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/03/anadir-un-jar-externo.html' title='Añadir un jar Externo'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4782168581829420803</id><published>2009-03-04T14:16:00.002+01:00</published><updated>2009-03-04T14:27:19.615+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Error Server Tomcat en Eclipse</title><content type='html'>Muchas veces cuando he instalado eclipse desde cero al ejecutar un proyecto  enorme pues puede tardar bastante en arrancar y por defecto viene definido el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;server&lt;/span&gt; con 10 segundos de espera, entonces nunca arranca y te da errores de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;conexion&lt;/span&gt; de tiempo.&lt;br /&gt;&lt;br /&gt;Para solventar esto nos vamos a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Window&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Preference&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Server&lt;/span&gt; y ampliamos los segundos de esperas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4782168581829420803?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4782168581829420803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4782168581829420803'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/03/error-server-tomcat-en-eclipse.html' title='Error Server Tomcat en Eclipse'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-6769520856427121174</id><published>2009-02-24T12:51:00.003+01:00</published><updated>2009-02-24T13:01:08.190+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Portlet</title><content type='html'>Son componentes modulares de la interfaz de usuario.&lt;br /&gt;&lt;br /&gt;El &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;portlet&lt;/span&gt; permite la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;personalización&lt;/span&gt;, la presentación, y la gestión de la seguridad. Los &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;portlets&lt;/span&gt; se diferencian de los &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;servlets&lt;/span&gt; por ser estos componentes de servidor con perspectiva funcional.&lt;br /&gt;&lt;br /&gt;El concepto de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;portlet&lt;/span&gt; es propio del mundo Java, y tiene su traducción en el entorno Microsoft como "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;web&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;parts&lt;/span&gt;". (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Sharepoint&lt;/span&gt; Portal &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Server&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;Los portales usan &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;portlets&lt;/span&gt; como componentes de interfaz de usuario que proveen de una capa de presentación a los sistemas de información.&lt;br /&gt;&lt;br /&gt;Ejemplos de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;portlets&lt;/span&gt;  &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;meteorología&lt;/span&gt;, foros, encuestas, formularios, canales &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;RSS&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;El contenido generado por los &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;portlets&lt;/span&gt; se denomina "fragmento". Es código &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;XHTML&lt;/span&gt;, HTML, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;WML&lt;/span&gt;, etc. Los fragmentos agregados resultantes de la operación de varios &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;portlets&lt;/span&gt; constituyen un documento que se traduce en el interfaz del portal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-6769520856427121174?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6769520856427121174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6769520856427121174'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/02/portlet.html' title='Portlet'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7687431966822714317</id><published>2009-02-24T12:34:00.001+01:00</published><updated>2009-02-24T12:51:35.142+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Liferay</title><content type='html'>Es un portal de gestión de contenidos de código abierto escrito en Java.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7687431966822714317?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7687431966822714317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7687431966822714317'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/02/liferay.html' title='Liferay'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4344668298463641648</id><published>2009-02-24T12:29:00.001+01:00</published><updated>2009-02-24T12:32:27.111+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><title type='text'>CMS (Content Management System)</title><content type='html'>Es un programa que permite crear una estructura de soporte (framework) para la creación y administración de contenidos, principalmente en páginas web, por parte de los participantes.&lt;br /&gt;&lt;br /&gt;El sistema permite manejar de manera independiente el contenido y el diseño. Así, es posible manejar el contenido y darle en cualquier momento un diseño distinto al sitio sin tener que darle formato al contenido de nuevo, además de permitir la fácil y controlada publicación en el sitio a varios editores&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4344668298463641648?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4344668298463641648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4344668298463641648'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/02/cms-content-management-system.html' title='CMS (Content Management System)'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2041970880648576821</id><published>2009-02-05T11:27:00.006+01:00</published><updated>2009-02-16T12:27:45.255+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Ventajas e incovenientes de los Web Services</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Ventajas&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Son programable.&lt;/li&gt;&lt;li&gt;Están basados en XML, que es un lenguaje abierto.&lt;/li&gt;&lt;li&gt;Son auto descriptivo.&lt;/li&gt;&lt;li&gt;Pueden buscar registros de  otros Web services.&lt;/li&gt;&lt;li&gt;Se basan en el estándar existente, es decir, es totalmente independiente          de la tecnología subyacente utilizada para construir la aplicación.Son independientes a las plataformas, bases de          datos, y los lenguajes de programación, liberando totalmente a          los programadores de las limitaciones encontradas previamente al tratar          de interconectar aplicaciones entre si.&lt;/li&gt;&lt;li&gt; Los Web Services, pueden publicar servicios          simples que están desconectados de los objetos de datos y solo          envían la respuesta requerida al solicitante. Esto elimina la necesidad          de publicar tablas completas de datos y por lo tanto, de proporcionar          un ambiente más seguro.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Inconvenientes&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Para realizar transacciones no pueden compararse en su grado de desarrollo con los estándares abiertos de computación distribuida como CORBA (Common Object Request Broker Architecture).&lt;/li&gt;&lt;li&gt;Su rendimiento es bajo si se compara con otros modelos de computación distribuida, tales como RMI (Remote Method Invocation), CORBA, o DCOM (Distributed Component Object Model). Es uno de los inconvenientes derivados de adoptar un formato basado en texto. Y es que entre los objetivos de XML no se encuentra la concisión ni la eficacia de procesamiento.&lt;/li&gt;&lt;li&gt;Al apoyarse en HTTP, pueden esquivar medidas de seguridad basadas en &lt;i&gt;firewall&lt;/i&gt; cuyas reglas tratan de bloquear o auditar la comunicación entre programas a ambos lados de la barrera.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2041970880648576821?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2041970880648576821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2041970880648576821'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/02/ventajas-e-incovenientes.html' title='Ventajas e incovenientes de los Web Services'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-5236098337813092762</id><published>2009-02-05T11:24:00.001+01:00</published><updated>2009-02-05T11:27:01.637+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>WS-Security</title><content type='html'>Es un protocolo de comunicaciones que suministra un medio para aplicar seguridad a los Servicios Web.&lt;br /&gt;&lt;br /&gt;El protocolo contiene especificaciones sobre como debe garantizarse la integridad y seguridad en mensajería de Servicios Web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-5236098337813092762?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5236098337813092762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/5236098337813092762'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/02/ws-security.html' title='WS-Security'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-3121295070222112166</id><published>2009-02-05T11:22:00.001+01:00</published><updated>2009-02-05T11:24:06.595+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>UDDI</title><content type='html'>son las siglas del catálogo de negocios de Internet denominado &lt;i&gt;Universal Description, Discovery and Integration&lt;/i&gt;. El registro en el catálogo se hace en XML. UDDI es una iniciativa industrial abierta (sufragada por la OASIS) entroncada en el contexto de los servicios Web. El registro de un negocio en UDDI tiene tres partes: &lt;ul&gt;&lt;li&gt;Páginas blancas - dirección, contacto y otros identificadores conocidos.&lt;/li&gt;&lt;li&gt;Páginas amarillas - categorización industrial basada en taxonomías.&lt;/li&gt;&lt;li&gt;Páginas verdes - información técnica sobre los servicios que aportan las propias empresas.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;UDDI es uno de los estándares básicos de los servicios Web cuyo objetivo es ser accedido por los mensajes SOAP y dar paso a documentos WSDL, en los que se describen los requisitos del protocolo y los formatos del mensaje solicitado para interactuar con los servicios Web del catálogo de registros.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-3121295070222112166?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3121295070222112166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/3121295070222112166'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/02/uddi.html' title='UDDI'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2910911343186451527</id><published>2009-02-05T11:17:00.001+01:00</published><updated>2009-02-05T11:20:17.211+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>WSDL (Web Services Description Languages)</title><content type='html'>Es un formato XML que se utiliza para describir servicios Web.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;WSDL describe la interfaz pública a los servicios Web. Está basado en XML y describe la forma de comunicación, es decir, los requisitos del protocolo y los formatos de los mensajes necesarios para interactuar con los servicios listados en su catálogo. Las operaciones y mensajes que soporta se describen en abstracto y se ligan después al protocolo concreto de red y al formato del mensaje.&lt;/p&gt; &lt;p&gt;Así, WSDL se usa a menudo en combinación con SOAP y XML Schema. Un programa cliente que se conecta a un servicio web puede leer el WSDL para determinar que funciones están disponibles en el servidor. Los tipos de datos especiales se incluyen en el archivo WSDL en forma de XML Schema. El cliente puede usar SOAP para hacer la llamada a una de las funciones listadas en el WSDL.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2910911343186451527?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2910911343186451527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2910911343186451527'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/02/wsdl-web-services-description-languages.html' title='WSDL (Web Services Description Languages)'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-2269489949403476676</id><published>2009-02-05T11:15:00.001+01:00</published><updated>2009-02-05T11:47:32.698+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>SOAP</title><content type='html'>Es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XML&lt;/span&gt;. Este protocolo deriva de un protocolo creado por David &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Winer&lt;/span&gt; en 1998, llamado &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;XML&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;RPC&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;SOAP&lt;/span&gt; fue creado por Microsoft, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;IBM&lt;/span&gt; y otros y está actualmente bajo el auspicio de la W3C&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-2269489949403476676?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2269489949403476676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/2269489949403476676'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/02/soap.html' title='SOAP'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-7401645296811382117</id><published>2009-02-05T11:08:00.001+01:00</published><updated>2009-02-05T11:08:55.427+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Web Services Protocol Stack</title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-7401645296811382117?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7401645296811382117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/7401645296811382117'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/02/web-services-protocol-stack.html' title='Web Services Protocol Stack'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-8624516712124745349</id><published>2009-02-05T11:07:00.000+01:00</published><updated>2009-02-05T11:08:43.609+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><title type='text'>Estánderes Web services</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Estándares empleados:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Web Services Protocol Stack&lt;/span&gt;: Así se denomina al conjunto de servicios y protocolos de los servicios Web.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;XML&lt;/span&gt; (Extensible Markup Language): Es el formato estándar para los datos que se vayan a intercambiar.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;SOAP&lt;/span&gt; (Simple Object Access Protocol) o XML-RPC (XML Remote Procedure Call): Protocolos sobre los que se establece el intercambio.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Otros protocolos&lt;/span&gt;: los datos en XML también pueden enviarse de una aplicación a otra mediante protocolos normales como HTTP (Hypertext Transfer Protocol), FTP (File Transfer Protocol), o SMTP (Simple Mail Transfer Protocol).&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-8624516712124745349?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8624516712124745349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/8624516712124745349'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/02/estanderes-web-services.html' title='Estánderes Web services'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-6314332824124991102</id><published>2009-02-04T11:51:00.007+01:00</published><updated>2009-03-27T10:53:16.822+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>Alfresco</title><content type='html'>Es un sistema de administración de código abierto/libre. Esta basado en Java concretamente hecho con Spring, Jsf e Hibernate.&lt;br /&gt;&lt;br /&gt;Incluye un repositorio de contenidos, un framework de portal web para administrar y usar contenidos estándar en portales.&lt;br /&gt;&lt;br /&gt;Contiene un interfaz &lt;a href="http://noelia-java.blogspot.com/2009/03/cifs.html"&gt;CIFS&lt;/a&gt;  para la compatibilidad entre los distintos sistema Windows   e Unix.&lt;br /&gt;&lt;br /&gt;Alfresco es utilizado como Software de gestión documental para documentos, páginas web, registros, imágenes y desarrollo de contenido.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-6314332824124991102?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6314332824124991102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/6314332824124991102'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/02/alfresco.html' title='Alfresco'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-434965038808838</id><published>2009-01-27T10:22:00.003+01:00</published><updated>2009-01-27T11:01:10.036+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><title type='text'>SAP</title><content type='html'>Es un suit de aplicaciones, creado por una empresa alemana.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-434965038808838?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/434965038808838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/434965038808838'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/01/sap.html' title='SAP'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-1725646054780971976</id><published>2009-01-23T11:05:00.002+01:00</published><updated>2009-01-23T11:07:57.820+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Mapeo objeto-relacional</title><content type='html'>Es una técnica de programación para convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y el utilizado en una base de datos relacional&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-1725646054780971976?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1725646054780971976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1725646054780971976'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/01/mapeo-objeto-relacional.html' title='Mapeo objeto-relacional'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-1041937586319983420</id><published>2009-01-23T09:53:00.003+01:00</published><updated>2009-02-06T13:17:49.086+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>JPA
Java persistent api (JPA)</title><content type='html'>Proporciona un &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;estándar&lt;/span&gt; para gestionar datos relaciones en aplicaciones J2&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;EE&lt;/span&gt; o J2SE de forma que simplifique el desarrollo de la persistencia de datos.&lt;br /&gt;&lt;br /&gt;Desde la versión    ya no requiere un contenedor &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;EJB&lt;/span&gt; ni un servidor J2&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;EE&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Es una &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;API&lt;/span&gt; de persistencias de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;POJOS&lt;/span&gt;.&lt;br /&gt;Es &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;una&lt;/span&gt; combinación de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Hibernate&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Toplink&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;JDO&lt;/span&gt; y versiones anteriores de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;EJB&lt;/span&gt;.El &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;mapeo&lt;/span&gt; se hacen en la misma clase de la entidad a través de anotaciones.&lt;br /&gt;&lt;br /&gt;No se requiere de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;XML&lt;/span&gt; y pueden definirse transacciones como anotación de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;JPA&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;El objetivo que persigue el diseño de esta &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;API&lt;/span&gt; es no perder las ventajas de la orientación a objetos al interactuar con una base de datos, como sí pasaba con &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;EJB&lt;/span&gt;2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-1041937586319983420?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1041937586319983420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/1041937586319983420'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/01/jpa-java-persistent-api-jpa.html' title='JPA&#xA;Java persistent api (JPA)'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-486216609369260092.post-4428343129543295529</id><published>2009-01-23T09:52:00.003+01:00</published><updated>2009-01-29T12:51:51.134+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diccionario'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Criteria</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Criteria Query&lt;/span&gt; nos permite definir consultas con un estilo orientado a objetos, muy distinto al clásico SQL o HQ&lt;br /&gt;&lt;br /&gt;Su código es más complicado que el de HQL ya que necesita un análisis más detallado ya que utiliza objetos.&lt;br /&gt;&lt;br /&gt;Una de las ventajas de Criteria es que puede montar consultas dinámicas más fácil, como por ejemplo, si queremos que tenga un where con varias opciones:&lt;br /&gt;&lt;br /&gt;Criteria criteria = session.createCriteria(Coche.class);&lt;br /&gt;if (nombre != null) {&lt;br /&gt;criteria.add(Restrictions.eq("color", color));&lt;br /&gt;}&lt;br /&gt;if (edad != null) {&lt;br /&gt;criteria.add(Restrictions.eq("puertas", puertas));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;List coches = criteria.list();&lt;br /&gt;&lt;br /&gt;Y en HQL tendriamos que concatenar string y esto puede inducir errores:&lt;br /&gt;String query = "from Coche where color like 'Rojo%' and puertas &gt; 2;";&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;List&lt;/span&gt; coches = sess.createQuery(query).list();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/486216609369260092-4428343129543295529?l=noelia-java.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4428343129543295529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/486216609369260092/posts/default/4428343129543295529'/><link rel='alternate' type='text/html' href='http://noelia-java.blogspot.com/2009/01/criteria.html' title='Criteria'/><author><name>Noelia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
