<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://dosideas.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Leito</id>
		<title>Dos Ideas. - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://dosideas.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Leito"/>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/Especial:Contribuciones/Leito"/>
		<updated>2026-05-05T00:58:37Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=REST_con_Spring&amp;diff=5692</id>
		<title>REST con Spring</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=REST_con_Spring&amp;diff=5692"/>
				<updated>2011-02-10T17:33:47Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Spring Framework]] 3.x trae la posibilidad de crear servicios web REST de manera muy simple. &lt;br /&gt;
&lt;br /&gt;
== Un ejemplo ==&lt;br /&gt;
Vamos a realizar una aplicación que responda a las siguientes URL: &lt;br /&gt;
&lt;br /&gt;
 /persona/todos   : devuelve todas las personas&lt;br /&gt;
 /persona/123     : devuelve la persona cuyo id es 123&lt;br /&gt;
&lt;br /&gt;
Tendremos que seguir 3 pasos:&lt;br /&gt;
# Configurar el servlet de Spring&lt;br /&gt;
# Crear la clase que atenderá y resolverá estas peticiones&lt;br /&gt;
# Configurar Spring&lt;br /&gt;
&lt;br /&gt;
=== El servlet de Spring ===&lt;br /&gt;
Lo primero es configurar el servlet de Spring que se encargará de tomas las peticiones y redireccionarla a las clases correspondientes. La clase que se encarga de esto es ''org.springframework.web.servlet.DispatcherServlet''. Un archivo web.xml de ejemplo sería: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;web-app version=&amp;quot;2.5&amp;quot; xmlns=&amp;quot;http://java.sun.com/xml/ns/javaee&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:schemaLocation=&amp;quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;display-name&amp;gt;json-con-spring-mvc&amp;lt;/display-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;filter-name&amp;gt;characterEncodingFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
        &amp;lt;filter-class&amp;gt;org.springframework.web.filter.CharacterEncodingFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;encoding&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;UTF-8&amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;forceEncoding&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
        &amp;lt;filter-name&amp;gt;characterEncodingFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
        &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;servlet&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;Spring MVC Dispatcher Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-class&amp;gt;org.springframework.web.servlet.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;&lt;br /&gt;
			WEB-INF/applicationContext-clasico.xml&lt;br /&gt;
            &amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
        &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;Spring MVC Dispatcher Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;url-pattern&amp;gt;/app/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;session-config&amp;gt;&lt;br /&gt;
        &amp;lt;session-timeout&amp;gt;&lt;br /&gt;
            30&lt;br /&gt;
        &amp;lt;/session-timeout&amp;gt;&lt;br /&gt;
    &amp;lt;/session-config&amp;gt;&lt;br /&gt;
    &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;
        &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;
    &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este ejemplo, el servlet de Spring queda atendiendo todas las URL que empiecen con &amp;quot;/app&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== El controller ===&lt;br /&gt;
La clase que toma las peticiones HTTP es una clase Java anotada con @Controller. Esta clase asocia las URL con métodos. Los objetos que devuelven los métodos son luego procesador por conversores, que representan la respuesta de distinta manera (XML, JSON, etc.)&lt;br /&gt;
&lt;br /&gt;
Para esto, creamos una clase de la siguiente forma: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
package com.dosideas.jsonconspringmvc;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collection;&lt;br /&gt;
import org.springframework.stereotype.Controller;&lt;br /&gt;
import org.springframework.web.bind.annotation.PathVariable;&lt;br /&gt;
import org.springframework.web.bind.annotation.RequestBody;&lt;br /&gt;
import org.springframework.web.bind.annotation.RequestMapping;&lt;br /&gt;
import org.springframework.web.bind.annotation.ResponseBody;&lt;br /&gt;
&lt;br /&gt;
@Controller&lt;br /&gt;
@RequestMapping(value=&amp;quot;/persona&amp;quot;)&lt;br /&gt;
public class PersonaController {&lt;br /&gt;
&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/{id}&amp;quot;)&lt;br /&gt;
    public @ResponseBody Persona get(@PathVariable Long id) {&lt;br /&gt;
        Persona p = new Persona(&amp;quot;Invasor &amp;quot; + id, &amp;quot;Zim &amp;quot; + id);&lt;br /&gt;
        return p;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/todos&amp;quot;)&lt;br /&gt;
    public @ResponseBody Collection&amp;lt;Persona&amp;gt; getTodos() {&lt;br /&gt;
        Collection&amp;lt;Persona&amp;gt; personas = new ArrayList&amp;lt;Persona&amp;gt;();&lt;br /&gt;
        for (int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
            Persona p = new Persona(&amp;quot;Invasor &amp;quot; + i, &amp;quot;Zim&amp;quot; + i);&lt;br /&gt;
            personas.add(p);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return personas;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El objeto Persona es un POJO que tiene dos atributos: nombre y apellido. Los tags @RequestMapping se encargan de asociar la clase y cada uno de sus métodos con una URL en particular. &lt;br /&gt;
&lt;br /&gt;
=== La configuración ===&lt;br /&gt;
Lo último que nos queda configurar es Spring con un archivo clásico (el cual es referenciado por el servlet):  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot;&lt;br /&gt;
       xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
       xmlns:p=&amp;quot;http://www.springframework.org/schema/p&amp;quot;&lt;br /&gt;
       xmlns:aop=&amp;quot;http://www.springframework.org/schema/aop&amp;quot;&lt;br /&gt;
       xmlns:tx=&amp;quot;http://www.springframework.org/schema/tx&amp;quot;&lt;br /&gt;
       xmlns:context=&amp;quot;http://www.springframework.org/schema/context&amp;quot;&lt;br /&gt;
       xmlns:mvc=&amp;quot;http://www.springframework.org/schema/mvc&amp;quot;&lt;br /&gt;
       xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;context:component-scan base-package=&amp;quot;com.dosideas.jsonconspringmvc&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;mvc:annotation-driven /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El tag ''mvc:annotation-driven'' se encarga de configurar automáticamente para emepezar a recibir y responder peticiones usando los controladores encontrados. &lt;br /&gt;
&lt;br /&gt;
Más aún, la configuración predeterminada se encarga de realizar [http://en.wikipedia.org/wiki/Content_negotiation negociación de contenido]: la respuesta se formatea de acuerdo a las capacidades del cliente. Por ejemplo, si en el classpath tenemos agregado las librerías de Jackson (un parser JSON), se habilitará el soporte JSON correspondiente. Si están agregadas las librerías de JAXB2, se habilitará el soporte XML. &lt;br /&gt;
&lt;br /&gt;
=== Probando ===&lt;br /&gt;
Podemos crear una prueba [[JUnit]] para acceder a nuestro servicio: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
package com.dosideas.jsonconspringmvc;&lt;br /&gt;
&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import org.apache.commons.httpclient.methods.GetMethod;&lt;br /&gt;
import org.apache.commons.httpclient.HttpMethod;&lt;br /&gt;
import org.apache.commons.httpclient.HttpClient;&lt;br /&gt;
import org.junit.Test;&lt;br /&gt;
import static org.junit.Assert.*;&lt;br /&gt;
&lt;br /&gt;
public class HttpTest {&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaTodosJSON() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/todos&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/json&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;[{\&amp;quot;&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaPorIdJSON() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/34421&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/json&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;{\&amp;quot;&amp;quot;));&lt;br /&gt;
        assertTrue(resultado.contains(&amp;quot;34421&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaPorIdXML() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/34421&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/xml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;&amp;lt;?xml version=\&amp;quot;1.0\&amp;quot;&amp;quot;));&lt;br /&gt;
        assertTrue(resultado.contains(&amp;quot;34421&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manejo de errores ==&lt;br /&gt;
Es posible personalizar las excepciones para que devuelvan códigos de estado HTTP personalizados, usando la anotación @ResponseStatus en la excepción lanzada. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
@ResponseStatus(value=HttpStatus.NOT_FOUND, reason=&amp;quot;No se encontró el recurso pedido&amp;quot;)&lt;br /&gt;
public class NotFoundException extends RuntimeException { ... }&lt;br /&gt;
&lt;br /&gt;
.....&lt;br /&gt;
&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/id/{id}&amp;quot;)&lt;br /&gt;
    public @ResponseBody Persona findById(@PathVariable long id) {&lt;br /&gt;
        Contact contact = personaService.findById(id);&lt;br /&gt;
        if (contact == null) {&lt;br /&gt;
            throw new NotFoundException();&lt;br /&gt;
        } else {&lt;br /&gt;
            return contact;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manejo de la respuesta ==&lt;br /&gt;
La anotación @ResponseStatus puede usarse para personalizar el código HTTP de cualquier respuesta, al ubicarla en el método. &lt;br /&gt;
Por ejemplo, los métodos que devuelven void pueden usar esta anotación para indicar que no hay contenido (es útil si, por ejemplo, se parsea el contenido con algunas librerías como [[JQuery]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/delete/{id}&amp;quot;)&lt;br /&gt;
    @ResponseStatus(HttpStatus.NO_CONTENT)&lt;br /&gt;
    public void delete(@PathVariable long id) {&lt;br /&gt;
        contactService.delete(id);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Descargar un proyecto de ejemplo ===&lt;br /&gt;
Les dejamos para [http://www.dosideas.com/descargas/category/2-spring-framework.html?download=41%3Ap descargar un proyecto de ejemplo de REST con Spring MVC] donde tienen todos los fuentes necesarios para abrir y ejecutar el ejemplo de esta página.&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [http://www.dosideas.com/descargas/category/2-spring-framework.html?download=41%3Ap Descargar un proyecto de ejemplo]&lt;br /&gt;
* [http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch18.html Creating Restful services - Documentación oficial]&lt;br /&gt;
* [http://www.informit.com/guides/content.aspx?g=java&amp;amp;seqNum=544 Creating Restful web services]&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/wa-spring3webserv/index.html?ca=drs- Building RESTful web services using Spring 3]&lt;br /&gt;
* [http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=springRestJson Spring + REST + JSON = SOAUI]&lt;br /&gt;
* [http://www.jpalace.org/docs/spring/rest.html Sprint REST Tutorial]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Controller_con_Spring_usando_anotaciones&amp;diff=5691</id>
		<title>Controller con Spring usando anotaciones</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Controller_con_Spring_usando_anotaciones&amp;diff=5691"/>
				<updated>2011-02-10T17:26:07Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Spring Framework]] nos permiten la creación de Controllers mediante anotaciones. Mostraremos un sencillo ejemplo utilizando [[Spring Framework]] 3.0&lt;br /&gt;
&lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&lt;br /&gt;
=== Creación del controller ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
package com.dosideas.web.controller;&lt;br /&gt;
&lt;br /&gt;
import org.springframework.stereotype.Controller;&lt;br /&gt;
import org.springframework.web.bind.annotation.RequestMapping;&lt;br /&gt;
&lt;br /&gt;
@Controller&lt;br /&gt;
public class PruebaController {&lt;br /&gt;
&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/unMetodo.htm&amp;quot;)&lt;br /&gt;
    public String imprimirHolaMundo() {&lt;br /&gt;
        System.out.println(&amp;quot;Hola Mundo&amp;quot;);&lt;br /&gt;
        return &amp;quot;index&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que hacemos en la creación del controller es agregar la anotación @Controller, que indica que dicha clase es un controller. Además, antes del método agregamos la anotación @RequestMapping con un valor. Dicho valor tendrá que ver con el url al que tendremos que dirigirnos para ejecutar el método del controller. Por último en el controller, estamos retornando un String (en este caso &amp;quot;index&amp;quot;). Ese String corresponde al nombre del .jsp (que se encuentra en WEB-INF/jsp) al que queremos que se redirija la página una vez que se ejecute el método.&lt;br /&gt;
&lt;br /&gt;
=== Configuración del web.xml ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;web-app version=&amp;quot;2.5&amp;quot;&lt;br /&gt;
xmlns=&amp;quot;http://java.sun.com/xml/ns/javaee&amp;quot;&lt;br /&gt;
xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
xsi:schemaLocation=&amp;quot;http://java.sun.com/xml/ns/javaee &lt;br /&gt;
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;!-- Declaración del servlet --&amp;gt;&lt;br /&gt;
    &amp;lt;servlet&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;pruebaController&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-class&amp;gt;org.springframework.web.servlet.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
        &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;!-- Mapping del servlet anterior--&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;pruebaController&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Interceptaremos todo lo que es .htm --&amp;gt;&lt;br /&gt;
        &amp;lt;url-pattern&amp;gt;*.htm&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;!--Tiempo en minutos que dura una session --&amp;gt;&lt;br /&gt;
    &amp;lt;session-config&amp;gt;&lt;br /&gt;
        &amp;lt;session-timeout&amp;gt;30&amp;lt;/session-timeout&amp;gt;&lt;br /&gt;
    &amp;lt;/session-config&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuración del &amp;lt;servlet-name&amp;gt;-servlet.xml ===&lt;br /&gt;
&lt;br /&gt;
El nombre de este archivo debe ser el mismo que se configuró en el web.xml en el tag &amp;lt;servlet-name&amp;gt;. Como nosotros le pusimos pruebaController, quedará pruebaController-servlet.xml :)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot;&lt;br /&gt;
xmlns:p=&amp;quot;http://www.springframework.org/schema/p&amp;quot;&lt;br /&gt;
xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
xmlns:context=&amp;quot;http://www.springframework.org/schema/context&amp;quot;&lt;br /&gt;
xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans &lt;br /&gt;
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&lt;br /&gt;
http://www.springframework.org/schema/context &lt;br /&gt;
http://www.springframework.org/schema/context/spring-context-2.5.xsd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
La siguiente declaración se encargará de levantar las clases que posean las &lt;br /&gt;
anotaciones (@Controller, @RequestMapping, @Repository, etc) en el paquete que &lt;br /&gt;
se le indique. Notese que en este caso le indico el paquete de la clase controller &lt;br /&gt;
que quiero ejemplificar.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
    &amp;lt;context:component-scan base-package=&amp;quot;com.dosideas.web.controller&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Declaramos un HandlerMapping para que entre al método del controller --&amp;gt;&lt;br /&gt;
  &amp;lt;bean&lt;br /&gt;
 class=&amp;quot;org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Declaramos un HandlerAdapter para que se redirija al .jsp que configuramos --&amp;gt;&lt;br /&gt;
    &amp;lt;bean&lt;br /&gt;
 class=&amp;quot;org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
En la siguiente declaración configuramos el prefijo y el &lt;br /&gt;
sufijo del archivo .jsp (en este caso) al cual se va a &lt;br /&gt;
redireccionar una vez que se ejecute el método del Controller.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
    &amp;lt;bean class=&amp;quot;org.springframework.web.servlet.view.InternalResourceViewResolver&amp;quot;&lt;br /&gt;
p:prefix=&amp;quot;/WEB-INF/jsp/&amp;quot; p:suffix=&amp;quot;.jsp&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probamos lo realizado ===&lt;br /&gt;
&lt;br /&gt;
Si todo quedó como mostramos y tenemos el archivo index.jsp en la carpeta WEB-INF/jsp, deployamos el .war y deberíamos poder pegarle al controller, que ejecute el método y que redirija a index.jsp utilizando la siguiente url:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://&amp;lt;ip&amp;gt;:&amp;lt;puerto&amp;gt;/&amp;lt;nombreApp&amp;gt;/&amp;lt;valor setteado en el @RequestMapping del método&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://111.111.111.111:8001/servletSpringConAnotaciones/unMetodo.htm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [[REST con Spring]]&lt;br /&gt;
* [http://static.springsource.org/spring/docs/2.5.6/reference/mvc.html#mvc-annotation Documentación oficial de Spring para Controller con Anotaciones]&lt;br /&gt;
&lt;br /&gt;
[[Category:Spring Framework]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=REST_con_Spring&amp;diff=5642</id>
		<title>REST con Spring</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=REST_con_Spring&amp;diff=5642"/>
				<updated>2010-12-22T15:48:46Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Probando */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Spring Framework]] 3.x trae la posibilidad de crear servicios web REST de manera muy simple. &lt;br /&gt;
&lt;br /&gt;
== Un ejemplo ==&lt;br /&gt;
Vamos a realizar una aplicación que responda a las siguientes URL: &lt;br /&gt;
&lt;br /&gt;
 /persona/todos   : devuelve todas las personas&lt;br /&gt;
 /persona/123     : devuelve la persona cuyo id es 123&lt;br /&gt;
&lt;br /&gt;
Tendremos que seguir 3 pasos:&lt;br /&gt;
# Configurar el servlet de Spring&lt;br /&gt;
# Crear la clase que atenderá y resolverá estas peticiones&lt;br /&gt;
# Configurar Spring&lt;br /&gt;
&lt;br /&gt;
=== El servlet de Spring ===&lt;br /&gt;
Lo primero es configurar el servlet de Spring que se encargará de tomas las peticiones y redireccionarla a las clases correspondientes. La clase que se encarga de esto es ''org.springframework.web.servlet.DispatcherServlet''. Un archivo web.xml de ejemplo sería: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;web-app version=&amp;quot;2.5&amp;quot; xmlns=&amp;quot;http://java.sun.com/xml/ns/javaee&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:schemaLocation=&amp;quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;display-name&amp;gt;json-con-spring-mvc&amp;lt;/display-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;filter-name&amp;gt;characterEncodingFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
        &amp;lt;filter-class&amp;gt;org.springframework.web.filter.CharacterEncodingFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;encoding&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;UTF-8&amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;forceEncoding&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
        &amp;lt;filter-name&amp;gt;characterEncodingFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
        &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;servlet&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;Spring MVC Dispatcher Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-class&amp;gt;org.springframework.web.servlet.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;&lt;br /&gt;
			WEB-INF/applicationContext-clasico.xml&lt;br /&gt;
            &amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
        &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;Spring MVC Dispatcher Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;url-pattern&amp;gt;/app/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;session-config&amp;gt;&lt;br /&gt;
        &amp;lt;session-timeout&amp;gt;&lt;br /&gt;
            30&lt;br /&gt;
        &amp;lt;/session-timeout&amp;gt;&lt;br /&gt;
    &amp;lt;/session-config&amp;gt;&lt;br /&gt;
    &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;
        &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;
    &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este ejemplo, el servlet de Spring queda atendiendo todas las URL que empiecen con &amp;quot;/app&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== El controller ===&lt;br /&gt;
La clase que toma las peticiones HTTP es una clase Java anotada con @Controller. Esta clase asocia las URL con métodos. Los objetos que devuelven los métodos son luego procesador por conversores, que representan la respuesta de distinta manera (XML, JSON, etc.)&lt;br /&gt;
&lt;br /&gt;
Para esto, creamos una clase de la siguiente forma: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
package com.dosideas.jsonconspringmvc;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collection;&lt;br /&gt;
import org.springframework.stereotype.Controller;&lt;br /&gt;
import org.springframework.web.bind.annotation.PathVariable;&lt;br /&gt;
import org.springframework.web.bind.annotation.RequestBody;&lt;br /&gt;
import org.springframework.web.bind.annotation.RequestMapping;&lt;br /&gt;
import org.springframework.web.bind.annotation.ResponseBody;&lt;br /&gt;
&lt;br /&gt;
@Controller&lt;br /&gt;
@RequestMapping(value=&amp;quot;/persona&amp;quot;)&lt;br /&gt;
public class PersonaController {&lt;br /&gt;
&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/{id}&amp;quot;)&lt;br /&gt;
    public @ResponseBody Persona get(@PathVariable Long id) {&lt;br /&gt;
        Persona p = new Persona(&amp;quot;Invasor &amp;quot; + id, &amp;quot;Zim &amp;quot; + id);&lt;br /&gt;
        return p;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/todos&amp;quot;)&lt;br /&gt;
    public @ResponseBody Collection&amp;lt;Persona&amp;gt; getTodos() {&lt;br /&gt;
        Collection&amp;lt;Persona&amp;gt; personas = new ArrayList&amp;lt;Persona&amp;gt;();&lt;br /&gt;
        for (int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
            Persona p = new Persona(&amp;quot;Invasor &amp;quot; + i, &amp;quot;Zim&amp;quot; + i);&lt;br /&gt;
            personas.add(p);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return personas;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El objeto Persona es un POJO que tiene dos atributos: nombre y apellido. Los tags @RequestMapping se encargan de asociar la clase y cada uno de sus métodos con una URL en particular. &lt;br /&gt;
&lt;br /&gt;
=== La configuración ===&lt;br /&gt;
Lo último que nos queda configurar es Spring con un archivo clásico (el cual es referenciado por el servlet):  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot;&lt;br /&gt;
       xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
       xmlns:p=&amp;quot;http://www.springframework.org/schema/p&amp;quot;&lt;br /&gt;
       xmlns:aop=&amp;quot;http://www.springframework.org/schema/aop&amp;quot;&lt;br /&gt;
       xmlns:tx=&amp;quot;http://www.springframework.org/schema/tx&amp;quot;&lt;br /&gt;
       xmlns:context=&amp;quot;http://www.springframework.org/schema/context&amp;quot;&lt;br /&gt;
       xmlns:mvc=&amp;quot;http://www.springframework.org/schema/mvc&amp;quot;&lt;br /&gt;
       xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;context:component-scan base-package=&amp;quot;com.dosideas.jsonconspringmvc&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;mvc:annotation-driven /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El tag ''mvc:annotation-driven'' se encarga de configurar automáticamente para emepezar a recibir y responder peticiones usando los controladores encontrados. &lt;br /&gt;
&lt;br /&gt;
Más aún, la configuración predeterminada se encarga de realizar [http://en.wikipedia.org/wiki/Content_negotiation negociación de contenido]: la respuesta se formatea de acuerdo a las capacidades del cliente. Por ejemplo, si en el classpath tenemos agregado las librerías de Jackson (un parser JSON), se habilitará el soporte JSON correspondiente. Si están agregadas las librerías de JAXB2, se habilitará el soporte XML. &lt;br /&gt;
&lt;br /&gt;
=== Probando ===&lt;br /&gt;
Podemos crear una prueba [[JUnit]] para acceder a nuestro servicio: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
package com.dosideas.jsonconspringmvc;&lt;br /&gt;
&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import org.apache.commons.httpclient.methods.GetMethod;&lt;br /&gt;
import org.apache.commons.httpclient.HttpMethod;&lt;br /&gt;
import org.apache.commons.httpclient.HttpClient;&lt;br /&gt;
import org.junit.Test;&lt;br /&gt;
import static org.junit.Assert.*;&lt;br /&gt;
&lt;br /&gt;
public class HttpTest {&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaTodosJSON() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/todos&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/json&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;[{\&amp;quot;&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaPorIdJSON() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/34421&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/json&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;{\&amp;quot;&amp;quot;));&lt;br /&gt;
        assertTrue(resultado.contains(&amp;quot;34421&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaPorIdXML() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/34421&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/xml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;&amp;lt;?xml version=\&amp;quot;1.0\&amp;quot;&amp;quot;));&lt;br /&gt;
        assertTrue(resultado.contains(&amp;quot;34421&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descargar un proyecto de ejemplo ===&lt;br /&gt;
Les dejamos para [http://www.dosideas.com/descargas/category/2-spring-framework.html?download=41%3Ap descargar un proyecto de ejemplo de REST con Spring MVC] donde tienen todos los fuentes necesarios para abrir y ejecutar el ejemplo de esta página.&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [http://www.dosideas.com/descargas/category/2-spring-framework.html?download=41%3Ap Descargar un proyecto de ejemplo]&lt;br /&gt;
* [http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch18.html Creating Restful services - Documentación oficial]&lt;br /&gt;
* [http://www.informit.com/guides/content.aspx?g=java&amp;amp;seqNum=544 Creating Restful web services]&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/wa-spring3webserv/index.html?ca=drs- Building RESTful web services using Spring 3]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=REST_con_Spring&amp;diff=5641</id>
		<title>REST con Spring</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=REST_con_Spring&amp;diff=5641"/>
				<updated>2010-12-22T15:35:19Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Spring Framework]] 3.x trae la posibilidad de crear servicios web REST de manera muy simple. &lt;br /&gt;
&lt;br /&gt;
== Un ejemplo ==&lt;br /&gt;
Vamos a realizar una aplicación que responda a las siguientes URL: &lt;br /&gt;
&lt;br /&gt;
 /persona/todos   : devuelve todas las personas&lt;br /&gt;
 /persona/123     : devuelve la persona cuyo id es 123&lt;br /&gt;
&lt;br /&gt;
Tendremos que seguir 3 pasos:&lt;br /&gt;
# Configurar el servlet de Spring&lt;br /&gt;
# Crear la clase que atenderá y resolverá estas peticiones&lt;br /&gt;
# Configurar Spring&lt;br /&gt;
&lt;br /&gt;
=== El servlet de Spring ===&lt;br /&gt;
Lo primero es configurar el servlet de Spring que se encargará de tomas las peticiones y redireccionarla a las clases correspondientes. La clase que se encarga de esto es ''org.springframework.web.servlet.DispatcherServlet''. Un archivo web.xml de ejemplo sería: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;web-app version=&amp;quot;2.5&amp;quot; xmlns=&amp;quot;http://java.sun.com/xml/ns/javaee&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:schemaLocation=&amp;quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;display-name&amp;gt;json-con-spring-mvc&amp;lt;/display-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;filter-name&amp;gt;characterEncodingFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
        &amp;lt;filter-class&amp;gt;org.springframework.web.filter.CharacterEncodingFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;encoding&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;UTF-8&amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;forceEncoding&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
        &amp;lt;filter-name&amp;gt;characterEncodingFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
        &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;servlet&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;Spring MVC Dispatcher Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-class&amp;gt;org.springframework.web.servlet.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;&lt;br /&gt;
			WEB-INF/applicationContext-clasico.xml&lt;br /&gt;
            &amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
        &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;Spring MVC Dispatcher Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;url-pattern&amp;gt;/app/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;session-config&amp;gt;&lt;br /&gt;
        &amp;lt;session-timeout&amp;gt;&lt;br /&gt;
            30&lt;br /&gt;
        &amp;lt;/session-timeout&amp;gt;&lt;br /&gt;
    &amp;lt;/session-config&amp;gt;&lt;br /&gt;
    &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;
        &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;
    &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este ejemplo, el servlet de Spring queda atendiendo todas las URL que empiecen con &amp;quot;/app&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== El controller ===&lt;br /&gt;
La clase que toma las peticiones HTTP es una clase Java anotada con @Controller. Esta clase asocia las URL con métodos. Los objetos que devuelven los métodos son luego procesador por conversores, que representan la respuesta de distinta manera (XML, JSON, etc.)&lt;br /&gt;
&lt;br /&gt;
Para esto, creamos una clase de la siguiente forma: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
package com.dosideas.jsonconspringmvc;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collection;&lt;br /&gt;
import org.springframework.stereotype.Controller;&lt;br /&gt;
import org.springframework.web.bind.annotation.PathVariable;&lt;br /&gt;
import org.springframework.web.bind.annotation.RequestBody;&lt;br /&gt;
import org.springframework.web.bind.annotation.RequestMapping;&lt;br /&gt;
import org.springframework.web.bind.annotation.ResponseBody;&lt;br /&gt;
&lt;br /&gt;
@Controller&lt;br /&gt;
@RequestMapping(value=&amp;quot;/persona&amp;quot;)&lt;br /&gt;
public class PersonaController {&lt;br /&gt;
&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/{id}&amp;quot;)&lt;br /&gt;
    public @ResponseBody Persona get(@PathVariable Long id) {&lt;br /&gt;
        Persona p = new Persona(&amp;quot;Invasor &amp;quot; + id, &amp;quot;Zim &amp;quot; + id);&lt;br /&gt;
        return p;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/todos&amp;quot;)&lt;br /&gt;
    public @ResponseBody Collection&amp;lt;Persona&amp;gt; getTodos() {&lt;br /&gt;
        Collection&amp;lt;Persona&amp;gt; personas = new ArrayList&amp;lt;Persona&amp;gt;();&lt;br /&gt;
        for (int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
            Persona p = new Persona(&amp;quot;Invasor &amp;quot; + i, &amp;quot;Zim&amp;quot; + i);&lt;br /&gt;
            personas.add(p);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return personas;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El objeto Persona es un POJO que tiene dos atributos: nombre y apellido. Los tags @RequestMapping se encargan de asociar la clase y cada uno de sus métodos con una URL en particular. &lt;br /&gt;
&lt;br /&gt;
=== La configuración ===&lt;br /&gt;
Lo último que nos queda configurar es Spring con un archivo clásico (el cual es referenciado por el servlet):  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot;&lt;br /&gt;
       xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
       xmlns:p=&amp;quot;http://www.springframework.org/schema/p&amp;quot;&lt;br /&gt;
       xmlns:aop=&amp;quot;http://www.springframework.org/schema/aop&amp;quot;&lt;br /&gt;
       xmlns:tx=&amp;quot;http://www.springframework.org/schema/tx&amp;quot;&lt;br /&gt;
       xmlns:context=&amp;quot;http://www.springframework.org/schema/context&amp;quot;&lt;br /&gt;
       xmlns:mvc=&amp;quot;http://www.springframework.org/schema/mvc&amp;quot;&lt;br /&gt;
       xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;context:component-scan base-package=&amp;quot;com.dosideas.jsonconspringmvc&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;mvc:annotation-driven /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El tag ''mvc:annotation-driven'' se encarga de configurar automáticamente para emepezar a recibir y responder peticiones usando los controladores encontrados. &lt;br /&gt;
&lt;br /&gt;
Más aún, la configuración predeterminada se encarga de realizar [http://en.wikipedia.org/wiki/Content_negotiation negociación de contenido]: la respuesta se formatea de acuerdo a las capacidades del cliente. Por ejemplo, si en el classpath tenemos agregado las librerías de Jackson (un parser JSON), se habilitará el soporte JSON correspondiente. Si están agregadas las librerías de JAXB2, se habilitará el soporte XML. &lt;br /&gt;
&lt;br /&gt;
=== Probando ===&lt;br /&gt;
Podemos crear una prueba [[JUnit]] para acceder a nuestro servicio: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
package com.dosideas.jsonconspringmvc;&lt;br /&gt;
&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import org.apache.commons.httpclient.methods.GetMethod;&lt;br /&gt;
import org.apache.commons.httpclient.HttpMethod;&lt;br /&gt;
import org.apache.commons.httpclient.HttpClient;&lt;br /&gt;
import org.junit.Test;&lt;br /&gt;
import static org.junit.Assert.*;&lt;br /&gt;
&lt;br /&gt;
public class HttpTest {&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaTodosJSON() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/todos&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/json&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;[{\&amp;quot;&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaPorIdJSON() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/34421&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/json&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;{\&amp;quot;&amp;quot;));&lt;br /&gt;
        assertTrue(resultado.contains(&amp;quot;34421&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaPorIdXML() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/34421&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/xml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;&amp;lt;?xml version=\&amp;quot;1.0\&amp;quot;&amp;quot;));&lt;br /&gt;
        assertTrue(resultado.contains(&amp;quot;34421&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [http://www.dosideas.com/descargas/category/2-spring-framework.html?download=41%3Ap Descargar un proyecto de ejemplo]&lt;br /&gt;
* [http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch18.html Creating Restful services - Documentación oficial]&lt;br /&gt;
* [http://www.informit.com/guides/content.aspx?g=java&amp;amp;seqNum=544 Creating Restful web services]&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/wa-spring3webserv/index.html?ca=drs- Building RESTful web services using Spring 3]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=REST_con_Spring&amp;diff=5640</id>
		<title>REST con Spring</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=REST_con_Spring&amp;diff=5640"/>
				<updated>2010-12-22T15:22:23Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Probando */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Spring Framework]] 3.x trae la posibilidad de crear servicios web REST de manera muy simple. &lt;br /&gt;
&lt;br /&gt;
== Un ejemplo ==&lt;br /&gt;
Vamos a realizar una aplicación que responda a las siguientes URL: &lt;br /&gt;
&lt;br /&gt;
 /persona/todos   : devuelve todas las personas&lt;br /&gt;
 /persona/123     : devuelve la persona cuyo id es 123&lt;br /&gt;
&lt;br /&gt;
Tendremos que seguir 3 pasos:&lt;br /&gt;
# Configurar el servlet de Spring&lt;br /&gt;
# Crear la clase que atenderá y resolverá estas peticiones&lt;br /&gt;
# Configurar Spring&lt;br /&gt;
&lt;br /&gt;
=== El servlet de Spring ===&lt;br /&gt;
Lo primero es configurar el servlet de Spring que se encargará de tomas las peticiones y redireccionarla a las clases correspondientes. La clase que se encarga de esto es ''org.springframework.web.servlet.DispatcherServlet''. Un archivo web.xml de ejemplo sería: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;web-app version=&amp;quot;2.5&amp;quot; xmlns=&amp;quot;http://java.sun.com/xml/ns/javaee&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:schemaLocation=&amp;quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;display-name&amp;gt;json-con-spring-mvc&amp;lt;/display-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;filter-name&amp;gt;characterEncodingFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
        &amp;lt;filter-class&amp;gt;org.springframework.web.filter.CharacterEncodingFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;encoding&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;UTF-8&amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;forceEncoding&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
        &amp;lt;filter-name&amp;gt;characterEncodingFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
        &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;servlet&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;Spring MVC Dispatcher Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-class&amp;gt;org.springframework.web.servlet.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;&lt;br /&gt;
			WEB-INF/applicationContext-clasico.xml&lt;br /&gt;
            &amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
        &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;Spring MVC Dispatcher Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;url-pattern&amp;gt;/app/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;session-config&amp;gt;&lt;br /&gt;
        &amp;lt;session-timeout&amp;gt;&lt;br /&gt;
            30&lt;br /&gt;
        &amp;lt;/session-timeout&amp;gt;&lt;br /&gt;
    &amp;lt;/session-config&amp;gt;&lt;br /&gt;
    &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;
        &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;
    &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este ejemplo, el servlet de Spring queda atendiendo todas las URL que empiecen con &amp;quot;/app&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== El controller ===&lt;br /&gt;
La clase que toma las peticiones HTTP es una clase Java anotada con @Controller. Esta clase asocia las URL con métodos. Los objetos que devuelven los métodos son luego procesador por conversores, que representan la respuesta de distinta manera (XML, JSON, etc.)&lt;br /&gt;
&lt;br /&gt;
Para esto, creamos una clase de la siguiente forma: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
package com.dosideas.jsonconspringmvc;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collection;&lt;br /&gt;
import org.springframework.stereotype.Controller;&lt;br /&gt;
import org.springframework.web.bind.annotation.PathVariable;&lt;br /&gt;
import org.springframework.web.bind.annotation.RequestBody;&lt;br /&gt;
import org.springframework.web.bind.annotation.RequestMapping;&lt;br /&gt;
import org.springframework.web.bind.annotation.ResponseBody;&lt;br /&gt;
&lt;br /&gt;
@Controller&lt;br /&gt;
@RequestMapping(value=&amp;quot;/persona&amp;quot;)&lt;br /&gt;
public class PersonaController {&lt;br /&gt;
&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/{id}&amp;quot;)&lt;br /&gt;
    public @ResponseBody Persona get(@PathVariable Long id) {&lt;br /&gt;
        Persona p = new Persona(&amp;quot;Invasor &amp;quot; + id, &amp;quot;Zim &amp;quot; + id);&lt;br /&gt;
        return p;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/todos&amp;quot;)&lt;br /&gt;
    public @ResponseBody Collection&amp;lt;Persona&amp;gt; getTodos() {&lt;br /&gt;
        Collection&amp;lt;Persona&amp;gt; personas = new ArrayList&amp;lt;Persona&amp;gt;();&lt;br /&gt;
        for (int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
            Persona p = new Persona(&amp;quot;Invasor &amp;quot; + i, &amp;quot;Zim&amp;quot; + i);&lt;br /&gt;
            personas.add(p);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return personas;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El objeto Persona es un POJO que tiene dos atributos: nombre y apellido. Los tags @RequestMapping se encargan de asociar la clase y cada uno de sus métodos con una URL en particular. &lt;br /&gt;
&lt;br /&gt;
=== La configuración ===&lt;br /&gt;
Lo último que nos queda configurar es Spring con un archivo clásico (el cual es referenciado por el servlet):  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot;&lt;br /&gt;
       xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
       xmlns:p=&amp;quot;http://www.springframework.org/schema/p&amp;quot;&lt;br /&gt;
       xmlns:aop=&amp;quot;http://www.springframework.org/schema/aop&amp;quot;&lt;br /&gt;
       xmlns:tx=&amp;quot;http://www.springframework.org/schema/tx&amp;quot;&lt;br /&gt;
       xmlns:context=&amp;quot;http://www.springframework.org/schema/context&amp;quot;&lt;br /&gt;
       xmlns:mvc=&amp;quot;http://www.springframework.org/schema/mvc&amp;quot;&lt;br /&gt;
       xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;context:component-scan base-package=&amp;quot;com.dosideas.jsonconspringmvc&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;mvc:annotation-driven /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El tag ''mvc:annotation-driven'' se encarga de configurar automáticamente para emepezar a recibir y responder peticiones usando los controladores encontrados. &lt;br /&gt;
&lt;br /&gt;
Más aún, la configuración predeterminada se encarga de realizar [http://en.wikipedia.org/wiki/Content_negotiation negociación de contenido]: la respuesta se formatea de acuerdo a las capacidades del cliente. Por ejemplo, si en el classpath tenemos agregado las librerías de Jackson (un parser JSON), se habilitará el soporte JSON correspondiente. Si están agregadas las librerías de JAXB2, se habilitará el soporte XML. &lt;br /&gt;
&lt;br /&gt;
=== Probando ===&lt;br /&gt;
Podemos crear una prueba [[JUnit]] para acceder a nuestro servicio: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
package com.dosideas.jsonconspringmvc;&lt;br /&gt;
&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import org.apache.commons.httpclient.methods.GetMethod;&lt;br /&gt;
import org.apache.commons.httpclient.HttpMethod;&lt;br /&gt;
import org.apache.commons.httpclient.HttpClient;&lt;br /&gt;
import org.junit.Test;&lt;br /&gt;
import static org.junit.Assert.*;&lt;br /&gt;
&lt;br /&gt;
public class HttpTest {&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaTodosJSON() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/todos&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/json&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;[{\&amp;quot;&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaPorIdJSON() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/34421&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/json&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;{\&amp;quot;&amp;quot;));&lt;br /&gt;
        assertTrue(resultado.contains(&amp;quot;34421&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaPorIdXML() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/34421&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/xml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;&amp;lt;?xml version=\&amp;quot;1.0\&amp;quot;&amp;quot;));&lt;br /&gt;
        assertTrue(resultado.contains(&amp;quot;34421&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch18.html Creating Restful services - Documentación oficial]&lt;br /&gt;
* [http://www.informit.com/guides/content.aspx?g=java&amp;amp;seqNum=544 Creating Restful web services]&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/wa-spring3webserv/index.html?ca=drs- Building RESTful web services using Spring 3]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Spring_Framework&amp;diff=5639</id>
		<title>Spring Framework</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Spring_Framework&amp;diff=5639"/>
				<updated>2010-12-22T15:20:37Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Spring Framework]]&lt;br /&gt;
&lt;br /&gt;
Spring Framework (también conocido simplemente como Spring) es un framework [[Java]] de [[Software Libre]], liviano de aplicación (también existe actualmente una versión para .NET). Su principal característica es brindar un factory de objetos basado en la [[Inyeccion De Dependencia]].&lt;br /&gt;
&lt;br /&gt;
Por su diseño el framework ofrece mucha libertad a los desarrolladores en Java y soluciones muy bien documentadas y fáciles de usar para las prácticas comunes en la industria.&lt;br /&gt;
&lt;br /&gt;
Mientras que las características fundamentales de este framework pueden emplearse en cualquier aplicación hecha en Java, existen muchas extensiones y mejoras para construir aplicaciones basadas en web por encima de la plataforma [[Java EE]]&lt;br /&gt;
&lt;br /&gt;
{{curso|url=http://www.dosideas.com/cursos/course/view.php?id=13|nombre=Introducción a Spring Framework 3.0}}&lt;br /&gt;
&lt;br /&gt;
{{curso|url=http://www.dosideas.com/cursos/course/view.php?id=4|nombre=Introducción al desarrollo Java EE}}&lt;br /&gt;
&lt;br /&gt;
==Descargar la librería==&lt;br /&gt;
Spring puede bajarse libremente de la [http://www.springframework.org web oficial de Spring].&lt;br /&gt;
&lt;br /&gt;
Existen dos distribuciones básicas: la librería de Spring por si misma, y un paquete que contiene Spring junto con todas las dependencias (&amp;quot;with-dependencies&amp;quot;). Este último paquete es el recomendado para comenzar con Spring.&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[Configuracion De Spring]]&lt;br /&gt;
* [[Enviar Mails Con Spring]]&lt;br /&gt;
* [[Interceptores Con Spring]]&lt;br /&gt;
* [[Instanciacion De Objetos Con Spring]]&lt;br /&gt;
* [[Transacciones Con Spring]]&lt;br /&gt;
* [[Mensajeria Con Spring]]&lt;br /&gt;
* [[Hibernate Con Spring]]&lt;br /&gt;
* [[Web Service Con Spring]]&lt;br /&gt;
* [[REST con Spring]]&lt;br /&gt;
* [[Stored Procedures con Spring]]&lt;br /&gt;
* [[Ejb Con Spring]]&lt;br /&gt;
* [[JSF Con Spring]]&lt;br /&gt;
* [[Groovy Con Spring]]&lt;br /&gt;
* [[Spring Batch]]&lt;br /&gt;
* [[Buenas Practicas De Configuracion De Spring]]&lt;br /&gt;
* [[Inyeccion De Mocks De Mockito Con Spring]]&lt;br /&gt;
* [[Inicializacion Lazy De Spring Para Tests]]&lt;br /&gt;
* [[WebLogic con Spring]]&lt;br /&gt;
* [[Spring Integration]]&lt;br /&gt;
* [[Despliegue de Rars con Spring]]&lt;br /&gt;
* [[Controller con Spring usando anotaciones]]&lt;br /&gt;
* [[PropertyEditor de Spring]]&lt;br /&gt;
* [[Spring LDAP]]&lt;br /&gt;
&lt;br /&gt;
==Más información==&lt;br /&gt;
* [http://www.dosideas.com/descargas/category/2-spring-framework.html?download=30%3Ap-3.0 Descargar proyecto con ejemplos de uso]&lt;br /&gt;
* [http://www.springframework.org Web oficial de Spring ]&lt;br /&gt;
* [http://es.wikipedia.org/wiki/Spring_Framework Spring en la Wikipedia ]&lt;br /&gt;
* [http://www.springframework.org/docs/Spring-MVC-step-by-step/ Developing a Spring Framework MVC application step-by-step ]&lt;br /&gt;
* [http://wiki.netbeans.org/SpringMVConNetBeansGlassFish Step-by-step: Spring MVC with NetBeans and GlassFish]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=REST_con_Spring&amp;diff=5638</id>
		<title>REST con Spring</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=REST_con_Spring&amp;diff=5638"/>
				<updated>2010-12-22T15:18:42Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Spring Framework]] 3.x trae la posibilidad de crear servicios web REST de manera muy simple. &lt;br /&gt;
&lt;br /&gt;
== Un ejemplo ==&lt;br /&gt;
Vamos a realizar una aplicación que responda a las siguientes URL: &lt;br /&gt;
&lt;br /&gt;
 /persona/todos   : devuelve todas las personas&lt;br /&gt;
 /persona/123     : devuelve la persona cuyo id es 123&lt;br /&gt;
&lt;br /&gt;
Tendremos que seguir 3 pasos:&lt;br /&gt;
# Configurar el servlet de Spring&lt;br /&gt;
# Crear la clase que atenderá y resolverá estas peticiones&lt;br /&gt;
# Configurar Spring&lt;br /&gt;
&lt;br /&gt;
=== El servlet de Spring ===&lt;br /&gt;
Lo primero es configurar el servlet de Spring que se encargará de tomas las peticiones y redireccionarla a las clases correspondientes. La clase que se encarga de esto es ''org.springframework.web.servlet.DispatcherServlet''. Un archivo web.xml de ejemplo sería: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;web-app version=&amp;quot;2.5&amp;quot; xmlns=&amp;quot;http://java.sun.com/xml/ns/javaee&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:schemaLocation=&amp;quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;display-name&amp;gt;json-con-spring-mvc&amp;lt;/display-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;filter-name&amp;gt;characterEncodingFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
        &amp;lt;filter-class&amp;gt;org.springframework.web.filter.CharacterEncodingFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;encoding&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;UTF-8&amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;forceEncoding&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
        &amp;lt;filter-name&amp;gt;characterEncodingFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
        &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;servlet&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;Spring MVC Dispatcher Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-class&amp;gt;org.springframework.web.servlet.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
        &amp;lt;init-param&amp;gt;&lt;br /&gt;
            &amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;&lt;br /&gt;
            &amp;lt;param-value&amp;gt;&lt;br /&gt;
			WEB-INF/applicationContext-clasico.xml&lt;br /&gt;
            &amp;lt;/param-value&amp;gt;&lt;br /&gt;
        &amp;lt;/init-param&amp;gt;&lt;br /&gt;
        &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
        &amp;lt;servlet-name&amp;gt;Spring MVC Dispatcher Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
        &amp;lt;url-pattern&amp;gt;/app/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;session-config&amp;gt;&lt;br /&gt;
        &amp;lt;session-timeout&amp;gt;&lt;br /&gt;
            30&lt;br /&gt;
        &amp;lt;/session-timeout&amp;gt;&lt;br /&gt;
    &amp;lt;/session-config&amp;gt;&lt;br /&gt;
    &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;
        &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;
    &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este ejemplo, el servlet de Spring queda atendiendo todas las URL que empiecen con &amp;quot;/app&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== El controller ===&lt;br /&gt;
La clase que toma las peticiones HTTP es una clase Java anotada con @Controller. Esta clase asocia las URL con métodos. Los objetos que devuelven los métodos son luego procesador por conversores, que representan la respuesta de distinta manera (XML, JSON, etc.)&lt;br /&gt;
&lt;br /&gt;
Para esto, creamos una clase de la siguiente forma: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
package com.dosideas.jsonconspringmvc;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collection;&lt;br /&gt;
import org.springframework.stereotype.Controller;&lt;br /&gt;
import org.springframework.web.bind.annotation.PathVariable;&lt;br /&gt;
import org.springframework.web.bind.annotation.RequestBody;&lt;br /&gt;
import org.springframework.web.bind.annotation.RequestMapping;&lt;br /&gt;
import org.springframework.web.bind.annotation.ResponseBody;&lt;br /&gt;
&lt;br /&gt;
@Controller&lt;br /&gt;
@RequestMapping(value=&amp;quot;/persona&amp;quot;)&lt;br /&gt;
public class PersonaController {&lt;br /&gt;
&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/{id}&amp;quot;)&lt;br /&gt;
    public @ResponseBody Persona get(@PathVariable Long id) {&lt;br /&gt;
        Persona p = new Persona(&amp;quot;Invasor &amp;quot; + id, &amp;quot;Zim &amp;quot; + id);&lt;br /&gt;
        return p;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/todos&amp;quot;)&lt;br /&gt;
    public @ResponseBody Collection&amp;lt;Persona&amp;gt; getTodos() {&lt;br /&gt;
        Collection&amp;lt;Persona&amp;gt; personas = new ArrayList&amp;lt;Persona&amp;gt;();&lt;br /&gt;
        for (int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
            Persona p = new Persona(&amp;quot;Invasor &amp;quot; + i, &amp;quot;Zim&amp;quot; + i);&lt;br /&gt;
            personas.add(p);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return personas;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El objeto Persona es un POJO que tiene dos atributos: nombre y apellido. Los tags @RequestMapping se encargan de asociar la clase y cada uno de sus métodos con una URL en particular. &lt;br /&gt;
&lt;br /&gt;
=== La configuración ===&lt;br /&gt;
Lo último que nos queda configurar es Spring con un archivo clásico (el cual es referenciado por el servlet):  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot;&lt;br /&gt;
       xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
       xmlns:p=&amp;quot;http://www.springframework.org/schema/p&amp;quot;&lt;br /&gt;
       xmlns:aop=&amp;quot;http://www.springframework.org/schema/aop&amp;quot;&lt;br /&gt;
       xmlns:tx=&amp;quot;http://www.springframework.org/schema/tx&amp;quot;&lt;br /&gt;
       xmlns:context=&amp;quot;http://www.springframework.org/schema/context&amp;quot;&lt;br /&gt;
       xmlns:mvc=&amp;quot;http://www.springframework.org/schema/mvc&amp;quot;&lt;br /&gt;
       xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd&lt;br /&gt;
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;context:component-scan base-package=&amp;quot;com.dosideas.jsonconspringmvc&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;mvc:annotation-driven /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El tag ''mvc:annotation-driven'' se encarga de configurar automáticamente para emepezar a recibir y responder peticiones usando los controladores encontrados. &lt;br /&gt;
&lt;br /&gt;
Más aún, la configuración predeterminada se encarga de realizar [http://en.wikipedia.org/wiki/Content_negotiation negociación de contenido]: la respuesta se formatea de acuerdo a las capacidades del cliente. Por ejemplo, si en el classpath tenemos agregado las librerías de Jackson (un parser JSON), se habilitará el soporte JSON correspondiente. Si están agregadas las librerías de JAXB2, se habilitará el soporte XML. &lt;br /&gt;
&lt;br /&gt;
=== Probando ===&lt;br /&gt;
Podemos crear una prueba [[JUnit]] para acceder a nuestro servicio: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
package com.dosideas.jsonconspringmvc;&lt;br /&gt;
&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import org.apache.commons.httpclient.methods.GetMethod;&lt;br /&gt;
import org.apache.commons.httpclient.HttpMethod;&lt;br /&gt;
import org.apache.commons.httpclient.HttpClient;&lt;br /&gt;
import org.junit.After;&lt;br /&gt;
import org.junit.AfterClass;&lt;br /&gt;
import org.junit.Before;&lt;br /&gt;
import org.junit.BeforeClass;&lt;br /&gt;
import org.junit.Test;&lt;br /&gt;
import static org.junit.Assert.*;&lt;br /&gt;
&lt;br /&gt;
public class HttpTest {&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaTodosJSON() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/todos&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/json&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;[{\&amp;quot;&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaPorIdJSON() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/34421&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/json&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;{\&amp;quot;&amp;quot;));&lt;br /&gt;
        assertTrue(resultado.contains(&amp;quot;34421&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    public void personaPorIdXML() throws IOException {&lt;br /&gt;
        HttpClient httpclient = new HttpClient();&lt;br /&gt;
        HttpMethod method = new GetMethod(&amp;quot;http://localhost:8084/json-con-spring-mvc/app/persona/34421&amp;quot;);&lt;br /&gt;
        method.addRequestHeader(&amp;quot;accept&amp;quot;, &amp;quot;application/xml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        httpclient.executeMethod(method);&lt;br /&gt;
        String resultado = method.getResponseBodyAsString();&lt;br /&gt;
        System.out.println(resultado);&lt;br /&gt;
&lt;br /&gt;
        assertNotNull(resultado);&lt;br /&gt;
        assertTrue(resultado.startsWith(&amp;quot;&amp;lt;?xml version=\&amp;quot;1.0\&amp;quot;&amp;quot;));&lt;br /&gt;
        assertTrue(resultado.contains(&amp;quot;34421&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch18.html Creating Restful services - Documentación oficial]&lt;br /&gt;
* [http://www.informit.com/guides/content.aspx?g=java&amp;amp;seqNum=544 Creating Restful web services]&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/wa-spring3webserv/index.html?ca=drs- Building RESTful web services using Spring 3]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=REST_con_Spring&amp;diff=5637</id>
		<title>REST con Spring</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=REST_con_Spring&amp;diff=5637"/>
				<updated>2010-12-22T15:02:25Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Página creada con 'Spring Framework 3.x trae la posibilidad de crear servicios web REST de manera muy simple.   == Ver también == * [http://static.springsource.org/spring/docs/3.0.0.M3/spring…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Spring Framework]] 3.x trae la posibilidad de crear servicios web REST de manera muy simple. &lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch18.html Creating Restful services - Documentación oficial]&lt;br /&gt;
* [http://www.informit.com/guides/content.aspx?g=java&amp;amp;seqNum=544 Creating Restful web services]&lt;br /&gt;
* [http://www.ibm.com/developerworks/web/library/wa-spring3webserv/index.html?ca=drs- Building RESTful web services using Spring 3]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Web_Service_Con_Spring&amp;diff=5636</id>
		<title>Web Service Con Spring</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Web_Service_Con_Spring&amp;diff=5636"/>
				<updated>2010-12-22T14:52:42Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Spring Framework]] tiene un soporte para poder invocar web services de forma muy simple.&lt;br /&gt;
&lt;br /&gt;
A continuación vamos a ver un ejemplo concreto invocando a un [[Web Service]] de prueba.&lt;br /&gt;
&lt;br /&gt;
==El web service HolaMundo==&lt;br /&gt;
&lt;br /&gt;
Supongamos que tenemos un web service funcionando, con la siguiente operación:&lt;br /&gt;
&lt;br /&gt;
decirHola(nombre : String) : String&lt;br /&gt;
&lt;br /&gt;
De este web service, por supuesto, conocemos la URL del [[WSDL]].&lt;br /&gt;
&lt;br /&gt;
===Invocando al web service con Spring===&lt;br /&gt;
&lt;br /&gt;
Acceder a un web service con Spring implica programar una única interfaz, que será nuestra interfaz de negocio que representará las operaciones del web service.&lt;br /&gt;
&lt;br /&gt;
El resto es configuración, asociando dicha interfaz al web service que queremos consumir.&lt;br /&gt;
&lt;br /&gt;
====La interfaz====&lt;br /&gt;
&lt;br /&gt;
La interfaz HolaMundo será entonces muy simple:&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
package com.dosideas.ws.business;&lt;br /&gt;
&lt;br /&gt;
public interface HolaMundoBo {&lt;br /&gt;
    public String decirHola(String nombre);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eso será todo lo que programaremos para consumir a nuestro web service.&lt;br /&gt;
&lt;br /&gt;
====La configuración====&lt;br /&gt;
&lt;br /&gt;
Claro que, falta la magia de la configuración. Deberemos declarar nuestro bean para ser consumible en un archivo de configuración de Spring.&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;bean id=&amp;quot;business.HolaMundoBo&amp;quot; &lt;br /&gt;
    class=&amp;quot;org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;serviceInterface&amp;quot;&lt;br /&gt;
        value=&amp;quot;com.dosideas.ws.business.HolaMundoBo&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;wsdlDocumentUrl&amp;quot;&lt;br /&gt;
        value=&amp;quot;http://localhost:8080/HolaMundoWS/HolaMundoWebServiceService?wsdl&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;namespaceUri&amp;quot;&lt;br /&gt;
        value=&amp;quot;http://ws.demo.dosideas.com/&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;serviceName&amp;quot;&lt;br /&gt;
        value=&amp;quot;HolaMundoWebServiceService&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;portName&amp;quot;&lt;br /&gt;
        value=&amp;quot;HolaMundoWebServicePort&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;serviceFactoryClass&amp;quot;&lt;br /&gt;
        value=&amp;quot;org.apache.axis.client.ServiceFactory&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El atributo '''serviceInterface''' es la interfaz de negocio que deberá implementar Spring, y es la interfaz que escribimos en el punto anterior.&lt;br /&gt;
&lt;br /&gt;
El atributo '''wsdlDocumentUrl''' es justamente la URL del WSDL.&lt;br /&gt;
&lt;br /&gt;
Los atributos '''namespaceUri''', '''serviceName''' y '''portName''' son los datos necesarios para invocar un web service cualquiera, y salen del mismo WSDL.&lt;br /&gt;
&lt;br /&gt;
====Invocando al web service====&lt;br /&gt;
&lt;br /&gt;
A partir de aquí, invocar al web service es exactamente igual que invocar a cualquier otra clase. Supongamos entonces el método de un test:&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
public void testHolaMundo() {&lt;br /&gt;
    HolaMundoBo instance = (HolaMundoBo) ApplicationContext.getBean(&amp;quot;business.HolaMundoBo&amp;quot;);&lt;br /&gt;
    String result = instance.decirHola(&amp;quot;Zim&amp;quot;);&lt;br /&gt;
    assertEquals(&amp;quot;Hola, Zim&amp;quot;, result);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sobre los tipos de Web Services==&lt;br /&gt;
&lt;br /&gt;
Existen dos tipos de web services:  RPC y Document.&lt;br /&gt;
&lt;br /&gt;
Si bien el nombre de la clase no parece indicarlo, es posible usar el método arriba indicado para acceder a web services Document.&lt;br /&gt;
&lt;br /&gt;
Si el web service contiene objetos no comunes (DTOs propios, por ejemplo) será necesario declarar serializadores para dichos DTO. El subcapítulo 17.5.3 Register Bean Mappings tiene un ejemplo de cómo registrar mapeos propios..&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [[REST con Spring]]&lt;br /&gt;
* [[Spring Web Services]]&lt;br /&gt;
* [[Web Service]]&lt;br /&gt;
* [[Spring Framework]]&lt;br /&gt;
* [http://static.springframework.org/spring/docs/1.1.5/reference/remoting.html Manual de Spring, Capítulo 17: Remoting]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Spring Framework]]&lt;br /&gt;
[[Categoría:Web Service]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Conformaci%C3%B3n_de_equipos&amp;diff=3429</id>
		<title>Conformación de equipos</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Conformaci%C3%B3n_de_equipos&amp;diff=3429"/>
				<updated>2009-10-09T18:38:28Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* La intención de conformar un equipo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El desarrollo de software consiste en la creación de Propiedad Intelectual: creamos abstracciones, cosas que no existen en el mundo real. Aplicamos nuestro intelecto para crear productos de software. &lt;br /&gt;
&lt;br /&gt;
Este trabajo intelectual lo hacemos en equipos, esperando lograr armonia y sinergía entre sus integrantes para crear los mejores productos posibles. Lo cierto es, muy pocas veces tenemos ''intención'' de crear Grandes Equipos. Y, sin embargo, recién cuando seamos capaces de crear Grandes Equipos de personas podremos alcanzar un Gran Producto, ese software que exceda las expectativas de nuestro cliente. &lt;br /&gt;
&lt;br /&gt;
La conformación de equipos trata sobre cómo crear Grandes Equipos, en donde los integrantes actuen de forma profesional, íntegra y alineada en pos de un objetivo en común.&lt;br /&gt;
&lt;br /&gt;
== La intención de conformar un equipo ==&lt;br /&gt;
Generalmente, aprendemos a programar &amp;quot;de forma casera&amp;quot;: nos enseña algo la facultad, vemos cómo programa un amigo o colega, y obviamente probamos mucho por nuestra cuenta. No tenemos ''intención'' de programar &amp;quot;bien&amp;quot;, sino simples ganas. Pero más allá de estas ganas, es común que varias personas pasen su tiempo sin hacer algo concreto y probado para programar ''mejor''. Sin embargo, cuando realmente emepezamos a actuar con verdadera intención de mejorar, aprendemos que existen patrones de diseño, prácticas probadas, convenciones, etc. Más aún, entramos en contacto con prácticas como [[Extreme Programming]], que nos guian a través de prácticas para lograr programar de manera profesional. Logramos la intención de programar bien. &lt;br /&gt;
&lt;br /&gt;
Algo similar ocurre con la gestión de proyectos. Es común que los jefes gestionen los proyectos &amp;quot;con la receta de la abuela&amp;quot;: técnicas y prácticas que surgen del día-a-día. Son estos jefes que terminan gestionado &amp;quot;como se hace acá&amp;quot;, usando planillas de excel, mails, pedidos verbales, llamados por teléfono, micro-gestión, ausencia de gestión, y a veces todo esto junto. Gestionamos proyectos sin intención de gestionar bien. Recién cuando cobramos consciencia de nuestra necesidad de tener una ''intención'' por gestionar es que comenzamos a ver lo que ocurre en el mundo. Y allí nos encontramos con técnicas para la gestión de proyectos, como por ejemplo [[Scrum]]. Logramos la intención de gestionar bien.&lt;br /&gt;
&lt;br /&gt;
Y sin embargo, podemos lograr la intención de programar bien, podemos lograr una buena gestión de proyectos... y nos sigue quedando una parte fundamental por cubrir. La gestión de proyectos y la programación son actividades que giran alrededor de '''equipos de personas'''. ¿Y cómo conformamos estos equipos? ¿Tenemos ''intención'' de crear buenos equipos? &lt;br /&gt;
&lt;br /&gt;
Es común que dejemos librado al azar la conformación del equipo: juntamos a un grupo de personas y les pedimos que resuelvan un proyecto, que generen un producto. Pero, ¿qué hacemos para que este equipo logre alcanzar su máximo potencial, para así lograr el mejor resultado? &lt;br /&gt;
&lt;br /&gt;
Las técnicas de conformación de equipos se encargan de este paso fundamental para el desarrollo de software. '''Antes de construir software debemos construir personas'''.&lt;br /&gt;
&lt;br /&gt;
En esta sección hablaremos sobre distintas técnicas de conformación de equipos, basadas en el libro '''Software for your head''', de Jim y Michele McCarthy (ISBN 0-201-60456-6).&lt;br /&gt;
&lt;br /&gt;
==Las etapas para crear un Gran Equipo==&lt;br /&gt;
La conformación de un equipo de propiedad intelectual gira alrededor de las personas, sus relaciones y emociones. ¿Cómo mejorar la relación entre las personas? ¿Cómo entender lo que nos pasa? ¿Hacia dónde vamos? ¿Qué queremos para nosotros? ¿Y para el equipo?&lt;br /&gt;
&lt;br /&gt;
Nuestro objetivo será encontrar una Visión Compartida por el equipo: aquello que una y guíe al equipo más allá de la duración de un proyecto. Algo que sea de tanto valor para el equipo y para las personas que logre perdurar en el tiempo. Algo por lo que que valga la pena el esfuerzo. &lt;br /&gt;
&lt;br /&gt;
Veremos varios protocolos y patrones para logra conformar el Mejor Equipo, que genere así el Mejor Producto posible. Las 4 etapas, en órden, serán: &lt;br /&gt;
&lt;br /&gt;
# Check-In&lt;br /&gt;
# Decisión&lt;br /&gt;
# Alineamiento&lt;br /&gt;
# Visión compartida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Check-In ===&lt;br /&gt;
&lt;br /&gt;
=== Decisión ===&lt;br /&gt;
&lt;br /&gt;
=== Alineamiento ===&lt;br /&gt;
&lt;br /&gt;
=== Visión compartida ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Las personas son quienes crean al producto ==&lt;br /&gt;
&lt;br /&gt;
(EQUIPO = PRODUCTO) es uno de los conceptos más importantes del desarrollo de software, y a menudo queda olvidado. El PRODUCTO es consecuencia del trabajo del EQUIPO: todas las características que tiene un PRODUCTO son porque el EQUIPO fue capaz de generarlas. Por otro lado, no puedo agregar algo a un PRODUCTO si en el EQUIPO no existe una característica que lo genere. &lt;br /&gt;
&lt;br /&gt;
Existe una correlación directa (aunque a veces no obvia) entre una característica del PRODUCTO y una característica del EQUIPO. Ahora, como el PRODUCTO es consecuencia del trabajo del EQUIPO, para introducir o modificar características en el PRODUCTO deberemos actuar sobre el EQUIPO, que es la única parte de la ecuación a la que tenemos acceso. &lt;br /&gt;
&lt;br /&gt;
De esta manera, (EQUIPO = PRODUCTO) nos permite analizar de forma pasiva una situación. También es una herramienta activa sumamente poderosa, ya que al modificar al EQUIPO vamos a modificar, inevitablemente, el PRODUCTO que se construye. &lt;br /&gt;
&lt;br /&gt;
=== Los procesos y las personas ===&lt;br /&gt;
Son las personas quienes, a través de sus relaciones, crean y sostienen a los procesos. Son las personas quienes usan y aplican las herramientas. Y en definitiva, son las personas quienes trabajan en equipo y crean productos. Por eso buscamos crear los Mejores Equipos que nos permitan desarrollar los Mejores Productos para nuestros clientes. &lt;br /&gt;
&lt;br /&gt;
Los valores que respaldamos y aplicamos en su totalidad nos permiten crear mejores relaciones humanas que, a su vez, generan los mejores equipos de propiedad intelectual posibles. Y allí reside el gran valor que tenemos para ofrecerle a nuestro cliente.&lt;br /&gt;
&lt;br /&gt;
=== La conformación de equipos ===&lt;br /&gt;
Teniendo en cuenta que deberemos trabajar sobre el Equipo, estamos hablando de relaciones de personas. &lt;br /&gt;
&lt;br /&gt;
[[Agil]] habla de un cambio en la forma de pensar y encarar el trabajo, basándonos fuertemente en principios y valores humanos. Aquí radica la dificultad de una implementación Ágil verdadera. &lt;br /&gt;
&lt;br /&gt;
Ágil NO es implementar Scrum, XP u otra metodología. Ágil es un cambio cultural que, luego, se acompaña con cambios en las prácticas y métodos de la organización. &lt;br /&gt;
&lt;br /&gt;
Implementar Scrum (o cuaqluier metodología) sin aceptar el desafío del cambio cultural es una invitación al desastre. Es en el cambio cultural donde radica el verdadero valor de negocio que se pretende generar y maximizar, y no en metodologías particulares. Ya lo sabemos: la bala de plata no existe. Sólo el trabajo serio y profesional. &lt;br /&gt;
&lt;br /&gt;
Es por todo esto que la conformación de equipos es un aspecto fundamental en el desarrollo de cualquier creación de propiedad intelectual (como ser el desarrollo de software). Son las personas que, a través de sus conversaciones, generan relaciones y obtienen resultados (como ser, un producto de software).&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Conformaci%C3%B3n_de_equipos&amp;diff=3428</id>
		<title>Conformación de equipos</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Conformaci%C3%B3n_de_equipos&amp;diff=3428"/>
				<updated>2009-10-09T18:10:50Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El desarrollo de software consiste en la creación de Propiedad Intelectual: creamos abstracciones, cosas que no existen en el mundo real. Aplicamos nuestro intelecto para crear productos de software. &lt;br /&gt;
&lt;br /&gt;
Este trabajo intelectual lo hacemos en equipos, esperando lograr armonia y sinergía entre sus integrantes para crear los mejores productos posibles. Lo cierto es, muy pocas veces tenemos ''intención'' de crear Grandes Equipos. Y, sin embargo, recién cuando seamos capaces de crear Grandes Equipos de personas podremos alcanzar un Gran Producto, ese software que exceda las expectativas de nuestro cliente. &lt;br /&gt;
&lt;br /&gt;
La conformación de equipos trata sobre cómo crear Grandes Equipos, en donde los integrantes actuen de forma profesional, íntegra y alineada en pos de un objetivo en común.&lt;br /&gt;
&lt;br /&gt;
== La intención de conformar un equipo ==&lt;br /&gt;
Generalmente, aprendemos a programar &amp;quot;de forma casera&amp;quot;: nos enseña algo la facultad, vemos cómo programa un amigo o colega, y obviamente probamos mucho por nuestra cuenta. No tenemos ''intención'' de programar &amp;quot;bien&amp;quot;, sino simples ganas. Pero más allá de estas ganas, es común que varias personas pasen su tiempo sin hacer algo concreto y probado para programar ''mejor''. Sin embargo, cuando realmente emepezamos a actuar con verdadera intención de mejorar, aprendemos que existen patrones de diseño, prácticas probadas, convenciones, etc. Más aún, entramos en contacto con prácticas como [[Extreme Programming]], que nos guian a través de prácticas para lograr programar de manera profesional. Logramos la intención de programar bien. &lt;br /&gt;
&lt;br /&gt;
Algo similar ocurre con la gestión de proyectos. Es común que los jefes gestionen los proyectos &amp;quot;con la receta de la abuela&amp;quot;: técnicas y prácticas que surgen del día-a-día. Son estos jefes que terminan gestionado &amp;quot;como se hace acá&amp;quot;, usando planillas de excel, mails, pedidos verbales, llamados por teléfono, micro-gestión, ausencia de gestión, y a veces todo esto junto. Gestionamos proyectos sin intención de gestionar bien. Recién cuando cobramos consciencia de nuestra necesidad de tener una ''intención'' por gestionar es que comenzamos a ver lo que ocurre en el mundo. Y allí nos encontramos con técnicas para la gestión de proyectos, como por ejemplo [[Scrum]]. Logramos la intención de gestionar bien.&lt;br /&gt;
&lt;br /&gt;
Y sin embargo, podemos lograr la intención de programar bien, podemos lograr una buena gestión de proyectos... y nos sigue quedando una parte fundamental por cubrir. La gestión de proyectos y la programación son actividades que giran alrededor de '''equipos de personas'''. ¿Y cómo conformamos estos equipos? ¿Tenemos ''intención'' de crear buenos equipos? &lt;br /&gt;
&lt;br /&gt;
Es común que dejemos librado al azar la conformación del equipo: juntamos a un grupo de personas y les pedimos que resuelvan un proyecto, que generen un producto. Pero, ¿qué hacemos para que este equipo logre alcanzar su máximo potencial, para así lograr el mejor resultado? &lt;br /&gt;
&lt;br /&gt;
Las técnicas de conformación de equipos se encargan de este paso fundamental para el desarrollo de software. '''Antes de construir software debemos construir personas'''.&lt;br /&gt;
&lt;br /&gt;
En esta sección hablaremos sobre distintas técnicas de conformación de equipos, basadas en el libro '''Software for your head''', de Jim y Michele McCarthy. &lt;br /&gt;
&lt;br /&gt;
==Las etapas para crear un Gran Equipo==&lt;br /&gt;
La conformación de un equipo de propiedad intelectual gira alrededor de las personas, sus relaciones y emociones. ¿Cómo mejorar la relación entre las personas? ¿Cómo entender lo que nos pasa? ¿Hacia dónde vamos? ¿Qué queremos para nosotros? ¿Y para el equipo?&lt;br /&gt;
&lt;br /&gt;
Nuestro objetivo será encontrar una Visión Compartida por el equipo: aquello que una y guíe al equipo más allá de la duración de un proyecto. Algo que sea de tanto valor para el equipo y para las personas que logre perdurar en el tiempo. Algo por lo que que valga la pena el esfuerzo. &lt;br /&gt;
&lt;br /&gt;
Veremos varios protocolos y patrones para logra conformar el Mejor Equipo, que genere así el Mejor Producto posible. Las 4 etapas, en órden, serán: &lt;br /&gt;
&lt;br /&gt;
# Check-In&lt;br /&gt;
# Decisión&lt;br /&gt;
# Alineamiento&lt;br /&gt;
# Visión compartida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Check-In ===&lt;br /&gt;
&lt;br /&gt;
=== Decisión ===&lt;br /&gt;
&lt;br /&gt;
=== Alineamiento ===&lt;br /&gt;
&lt;br /&gt;
=== Visión compartida ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Las personas son quienes crean al producto ==&lt;br /&gt;
&lt;br /&gt;
(EQUIPO = PRODUCTO) es uno de los conceptos más importantes del desarrollo de software, y a menudo queda olvidado. El PRODUCTO es consecuencia del trabajo del EQUIPO: todas las características que tiene un PRODUCTO son porque el EQUIPO fue capaz de generarlas. Por otro lado, no puedo agregar algo a un PRODUCTO si en el EQUIPO no existe una característica que lo genere. &lt;br /&gt;
&lt;br /&gt;
Existe una correlación directa (aunque a veces no obvia) entre una característica del PRODUCTO y una característica del EQUIPO. Ahora, como el PRODUCTO es consecuencia del trabajo del EQUIPO, para introducir o modificar características en el PRODUCTO deberemos actuar sobre el EQUIPO, que es la única parte de la ecuación a la que tenemos acceso. &lt;br /&gt;
&lt;br /&gt;
De esta manera, (EQUIPO = PRODUCTO) nos permite analizar de forma pasiva una situación. También es una herramienta activa sumamente poderosa, ya que al modificar al EQUIPO vamos a modificar, inevitablemente, el PRODUCTO que se construye. &lt;br /&gt;
&lt;br /&gt;
=== Los procesos y las personas ===&lt;br /&gt;
Son las personas quienes, a través de sus relaciones, crean y sostienen a los procesos. Son las personas quienes usan y aplican las herramientas. Y en definitiva, son las personas quienes trabajan en equipo y crean productos. Por eso buscamos crear los Mejores Equipos que nos permitan desarrollar los Mejores Productos para nuestros clientes. &lt;br /&gt;
&lt;br /&gt;
Los valores que respaldamos y aplicamos en su totalidad nos permiten crear mejores relaciones humanas que, a su vez, generan los mejores equipos de propiedad intelectual posibles. Y allí reside el gran valor que tenemos para ofrecerle a nuestro cliente.&lt;br /&gt;
&lt;br /&gt;
=== La conformación de equipos ===&lt;br /&gt;
Teniendo en cuenta que deberemos trabajar sobre el Equipo, estamos hablando de relaciones de personas. &lt;br /&gt;
&lt;br /&gt;
[[Agil]] habla de un cambio en la forma de pensar y encarar el trabajo, basándonos fuertemente en principios y valores humanos. Aquí radica la dificultad de una implementación Ágil verdadera. &lt;br /&gt;
&lt;br /&gt;
Ágil NO es implementar Scrum, XP u otra metodología. Ágil es un cambio cultural que, luego, se acompaña con cambios en las prácticas y métodos de la organización. &lt;br /&gt;
&lt;br /&gt;
Implementar Scrum (o cuaqluier metodología) sin aceptar el desafío del cambio cultural es una invitación al desastre. Es en el cambio cultural donde radica el verdadero valor de negocio que se pretende generar y maximizar, y no en metodologías particulares. Ya lo sabemos: la bala de plata no existe. Sólo el trabajo serio y profesional. &lt;br /&gt;
&lt;br /&gt;
Es por todo esto que la conformación de equipos es un aspecto fundamental en el desarrollo de cualquier creación de propiedad intelectual (como ser el desarrollo de software). Son las personas que, a través de sus conversaciones, generan relaciones y obtienen resultados (como ser, un producto de software).&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Conformaci%C3%B3n_de_equipos&amp;diff=3427</id>
		<title>Conformación de equipos</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Conformaci%C3%B3n_de_equipos&amp;diff=3427"/>
				<updated>2009-10-09T18:07:51Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El desarrollo de software consiste en la creación de Propiedad Intelectual: creamos abstracciones, cosas que no existen en el mundo real. Aplicamos nuestro intelecto para crear productos de software. &lt;br /&gt;
&lt;br /&gt;
Este trabajo intelectual lo hacemos en equipos, esperando lograr armonia y sinergía entre sus integrantes para crear los mejores productos posibles. Lo cierto es, muy pocas veces tenemos ''intención'' de crear Grandes Equipos. Y, sin embargo, recién cuando seamos capaces de crear Grandes Equipos de personas podremos alcanzar un Gran Producto, ese software que exceda las expectativas de nuestro cliente. &lt;br /&gt;
&lt;br /&gt;
La conformación de equipos trata sobre cómo crear Grandes Equipos, en donde los integrantes actuen de forma profesional, íntegra y alineada en pos de un objetivo en común.&lt;br /&gt;
&lt;br /&gt;
== La intención de conformar un equipo ==&lt;br /&gt;
Generalmente, aprendemos a programar &amp;quot;de forma casera&amp;quot;: nos enseña algo la facultad, vemos cómo programa un amigo o colega, y obviamente probamos mucho por nuestra cuenta. No tenemos ''intención'' de programar &amp;quot;bien&amp;quot;, sino simples ganas. Pero más allá de estas ganas, es común que varias personas pasen su tiempo sin hacer algo concreto y probado para programar ''mejor''. Sin embargo, cuando realmente emepezamos a actuar con verdadera intención de mejorar, aprendemos que existen patrones de diseño, prácticas probadas, convenciones, etc. Más aún, entramos en contacto con prácticas como [[Extreme Programming]], que nos guian a través de prácticas para lograr programar de manera profesional. Logramos la intención de programar bien. &lt;br /&gt;
&lt;br /&gt;
Algo similar ocurre con la gestión de proyectos. Es común que los jefes gestionen los proyectos &amp;quot;con la receta de la abuela&amp;quot;: técnicas y prácticas que surgen del día-a-día. Son estos jefes que terminan gestionado &amp;quot;como se hace acá&amp;quot;, usando planillas de excel, mails, pedidos verbales, llamados por teléfono, micro-gestión, ausencia de gestión, y a veces todo esto junto. Gestionamos proyectos sin intención de gestionar bien. Recién cuando cobramos consciencia de nuestra necesidad de tener una ''intención'' por gestionar es que comenzamos a ver lo que ocurre en el mundo. Y allí nos encontramos con técnicas para la gestión de proyectos, como por ejemplo [[Scrum]]. Logramos la intención de gestionar bien.&lt;br /&gt;
&lt;br /&gt;
Y sin embargo, podemos lograr la intención de programar bien, podemos lograr una buena gestión de proyectos... y nos sigue quedando una parte fundamental por cubrir. La gestión de proyectos y la programación son actividades que giran alrededor de '''equipos de personas'''. ¿Y cómo conformamos estos equipos? ¿Tenemos ''intención'' de crear buenos equipos? &lt;br /&gt;
&lt;br /&gt;
Es común que dejemos librado al azar la conformación del equipo: juntamos a un grupo de personas y les pedimos que resuelvan un proyecto, que generen un producto. Pero, ¿qué hacemos para que este equipo logre alcanzar su máximo potencial, para así lograr el mejor resultado? &lt;br /&gt;
&lt;br /&gt;
Las técnicas de conformación de equipos se encargan de este paso fundamental para el desarrollo de software. '''Antes de construir software debemos construir personas'''.&lt;br /&gt;
&lt;br /&gt;
En esta sección hablaremos sobre distintas técnicas de conformación de equipos, basadas en el libro '''Software for your head''', de Jim y Michele McCarthy. &lt;br /&gt;
&lt;br /&gt;
==Las etapas para crear un Gran Equipo==&lt;br /&gt;
La conformación de un equipo de propiedad intelectual gira alrededor de las personas, sus relaciones y emociones. ¿Cómo mejorar la relación entre las personas? ¿Cómo entender lo que nos pasa? ¿Hacia dónde vamos? ¿Qué queremos para nosotros? ¿Y para el equipo?&lt;br /&gt;
&lt;br /&gt;
Nuestro objetivo será encontrar una Visión Compartida por el equipo: aquello que una y guíe al equipo más allá de la duración de un proyecto. Algo que sea de tanto valor para el equipo y para las personas que logre perdurar en el tiempo. Algo por lo que que valga la pena el esfuerzo. &lt;br /&gt;
&lt;br /&gt;
Veremos varios protocolos y patrones para logra conformar el Mejor Equipo, que genere así el Mejor Producto posible. Las 4 etapas, en órden, serán: &lt;br /&gt;
&lt;br /&gt;
# Check-In&lt;br /&gt;
# Decisión&lt;br /&gt;
# Alineamiento&lt;br /&gt;
# Visión compartida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Check-In ===&lt;br /&gt;
&lt;br /&gt;
=== Decisión ===&lt;br /&gt;
&lt;br /&gt;
=== Alineamiento ===&lt;br /&gt;
&lt;br /&gt;
=== Visión compartida ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(EQUIPO = PRODUCTO) es uno de los conceptos más importantes del desarrollo de software, y a menudo queda olvidado. El PRODUCTO es consecuencia del trabajo del EQUIPO: todas las características que tiene un PRODUCTO son porque el EQUIPO fue capaz de generarlas. Por otro lado, no puedo agregar algo a un PRODUCTO si en el EQUIPO no existe una característica que lo genere. &lt;br /&gt;
&lt;br /&gt;
Existe una correlación directa (aunque a veces no obvia) entre una característica del PRODUCTO y una característica del EQUIPO. Ahora, como el PRODUCTO es consecuencia del trabajo del EQUIPO, para introducir o modificar características en el PRODUCTO deberemos actuar sobre el EQUIPO, que es la única parte de la ecuación a la que tenemos acceso. &lt;br /&gt;
&lt;br /&gt;
De esta manera, (EQUIPO = PRODUCTO) nos permite analizar de forma pasiva una situación. También es una herramienta activa sumamente poderosa, ya que al modificar al EQUIPO vamos a modificar, inevitablemente, el PRODUCTO que se construye. &lt;br /&gt;
&lt;br /&gt;
== Los procesos y las personas ==&lt;br /&gt;
Son las personas quienes, a través de sus relaciones, crean y sostienen a los procesos. Son las personas quienes usan y aplican las herramientas. Y en definitiva, son las personas quienes trabajan en equipo y crean productos. Por eso buscamos crear los Mejores Equipos que nos permitan desarrollar los Mejores Productos para nuestros clientes. &lt;br /&gt;
&lt;br /&gt;
Los valores que respaldamos y aplicamos en su totalidad nos permiten crear mejores relaciones humanas que, a su vez, generan los mejores equipos de propiedad intelectual posibles. Y allí reside el gran valor que tenemos para ofrecerle a nuestro cliente.&lt;br /&gt;
&lt;br /&gt;
== La conformación de equipos ==&lt;br /&gt;
Teniendo en cuenta que deberemos trabajar sobre el Equipo, estamos hablando de relaciones de personas. &lt;br /&gt;
&lt;br /&gt;
[[Agil]] habla de un cambio en la forma de pensar y encarar el trabajo, basándonos fuertemente en principios y valores humanos. Aquí radica la dificultad de una implementación Ágil verdadera. &lt;br /&gt;
&lt;br /&gt;
Ágil NO es implementar Scrum, XP u otra metodología. Ágil es un cambio cultural que, luego, se acompaña con cambios en las prácticas y métodos de la organización. &lt;br /&gt;
&lt;br /&gt;
Implementar Scrum (o cuaqluier metodología) sin aceptar el desafío del cambio cultural es una invitación al desastre. Es en el cambio cultural donde radica el verdadero valor de negocio que se pretende generar y maximizar, y no en metodologías particulares. Ya lo sabemos: la bala de plata no existe. Sólo el trabajo serio y profesional. &lt;br /&gt;
&lt;br /&gt;
Es por todo esto que la conformación de equipos es un aspecto fundamental en el desarrollo de cualquier creación de propiedad intelectual (como ser el desarrollo de software). Son las personas que, a través de sus conversaciones, generan relaciones y obtienen resultados (como ser, un producto de software).&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Conformaci%C3%B3n_de_equipos&amp;diff=3426</id>
		<title>Conformación de equipos</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Conformaci%C3%B3n_de_equipos&amp;diff=3426"/>
				<updated>2009-10-09T17:58:56Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El desarrollo de software consiste en la creación de Propiedad Intelectual: creamos abstracciones, cosas que no existen en el mundo real. Aplicamos nuestro intelecto para crear productos de software. &lt;br /&gt;
&lt;br /&gt;
Este trabajo intelectual lo hacemos en equipos, esperando lograr armonia y sinergía entre sus integrantes para crear los mejores productos posibles. Lo cierto es, muy pocas veces tenemos ''intención'' de crear Grandes Equipos. Y, sin embargo, recién cuando seamos capaces de crear Grandes Equipos de personas podremos alcanzar un Gran Producto, ese software que exceda las expectativas de nuestro cliente. &lt;br /&gt;
&lt;br /&gt;
La conformación de equipos trata sobre cómo crear Grandes Equipos, en donde los integrantes actuen de forma profesional, íntegra y alineada en pos de un objetivo en común.&lt;br /&gt;
&lt;br /&gt;
== La intención de conformar un equipo ==&lt;br /&gt;
Generalmente, aprendemos a programar &amp;quot;de forma casera&amp;quot;: nos enseña algo la facultad, vemos cómo programa un amigo o colega, y obviamente probamos mucho por nuestra cuenta. No tenemos ''intención'' de programar &amp;quot;bien&amp;quot;, sino simples ganas. Pero más allá de estas ganas, es común que varias personas pasen su tiempo sin hacer algo concreto y probado para programar ''mejor''. Sin embargo, cuando realmente emepezamos a actuar con verdadera intención de mejorar, aprendemos que existen patrones de diseño, prácticas probadas, convenciones, etc. Más aún, entramos en contacto con prácticas como [[Extreme Programming]], que nos guian a través de prácticas para lograr programar de manera profesional. Logramos la intención de programar bien. &lt;br /&gt;
&lt;br /&gt;
Algo similar ocurre con la gestión de proyectos. Es común que los jefes gestionen los proyectos &amp;quot;con la receta de la abuela&amp;quot;: técnicas y prácticas que surgen del día-a-día. Son estos jefes que terminan gestionado &amp;quot;como se hace acá&amp;quot;, usando planillas de excel, mails, pedidos verbales, llamados por teléfono, micro-gestión, ausencia de gestión, y a veces todo esto junto. Gestionamos proyectos sin intención de gestionar bien. Recién cuando cobramos consciencia de nuestra necesidad de tener una ''intención'' por gestionar es que comenzamos a ver lo que ocurre en el mundo. Y allí nos encontramos con técnicas para la gestión de proyectos, como por ejemplo [[Scrum]]. Logramos la intención de gestionar bien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(EQUIPO = PRODUCTO) es uno de los conceptos más importantes del desarrollo de software, y a menudo queda olvidado. El PRODUCTO es consecuencia del trabajo del EQUIPO: todas las características que tiene un PRODUCTO son porque el EQUIPO fue capaz de generarlas. Por otro lado, no puedo agregar algo a un PRODUCTO si en el EQUIPO no existe una característica que lo genere. &lt;br /&gt;
&lt;br /&gt;
Existe una correlación directa (aunque a veces no obvia) entre una característica del PRODUCTO y una característica del EQUIPO. Ahora, como el PRODUCTO es consecuencia del trabajo del EQUIPO, para introducir o modificar características en el PRODUCTO deberemos actuar sobre el EQUIPO, que es la única parte de la ecuación a la que tenemos acceso. &lt;br /&gt;
&lt;br /&gt;
De esta manera, (EQUIPO = PRODUCTO) nos permite analizar de forma pasiva una situación. También es una herramienta activa sumamente poderosa, ya que al modificar al EQUIPO vamos a modificar, inevitablemente, el PRODUCTO que se construye. &lt;br /&gt;
&lt;br /&gt;
== Los procesos y las personas ==&lt;br /&gt;
Son las personas quienes, a través de sus relaciones, crean y sostienen a los procesos. Son las personas quienes usan y aplican las herramientas. Y en definitiva, son las personas quienes trabajan en equipo y crean productos. Por eso buscamos crear los Mejores Equipos que nos permitan desarrollar los Mejores Productos para nuestros clientes. &lt;br /&gt;
&lt;br /&gt;
Los valores que respaldamos y aplicamos en su totalidad nos permiten crear mejores relaciones humanas que, a su vez, generan los mejores equipos de propiedad intelectual posibles. Y allí reside el gran valor que tenemos para ofrecerle a nuestro cliente.&lt;br /&gt;
&lt;br /&gt;
== La conformación de equipos ==&lt;br /&gt;
Teniendo en cuenta que deberemos trabajar sobre el Equipo, estamos hablando de relaciones de personas. &lt;br /&gt;
&lt;br /&gt;
[[Agil]] habla de un cambio en la forma de pensar y encarar el trabajo, basándonos fuertemente en principios y valores humanos. Aquí radica la dificultad de una implementación Ágil verdadera. &lt;br /&gt;
&lt;br /&gt;
Ágil NO es implementar Scrum, XP u otra metodología. Ágil es un cambio cultural que, luego, se acompaña con cambios en las prácticas y métodos de la organización. &lt;br /&gt;
&lt;br /&gt;
Implementar Scrum (o cuaqluier metodología) sin aceptar el desafío del cambio cultural es una invitación al desastre. Es en el cambio cultural donde radica el verdadero valor de negocio que se pretende generar y maximizar, y no en metodologías particulares. Ya lo sabemos: la bala de plata no existe. Sólo el trabajo serio y profesional. &lt;br /&gt;
&lt;br /&gt;
Es por todo esto que la conformación de equipos es un aspecto fundamental en el desarrollo de cualquier creación de propiedad intelectual (como ser el desarrollo de software). Son las personas que, a través de sus conversaciones, generan relaciones y obtienen resultados (como ser, un producto de software).&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Dos_Ideas.:Derechos_de_autor&amp;diff=3425</id>
		<title>Dos Ideas.:Derechos de autor</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Dos_Ideas.:Derechos_de_autor&amp;diff=3425"/>
				<updated>2009-10-09T17:52:30Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El contenido de la wiki de Dos Ideas se publica bajo la licencia [http://creativecommons.org/licenses/by-sa/2.5/ar/ Creative Commons BY-SA].&lt;br /&gt;
&lt;br /&gt;
En pocas palabras, son libres de usar, modificar y distribuir el contenido de esta wiki a gusto, siempre y cuando compartan el nuevo contenido bajo las mismas condiciones.&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Dos_Ideas.:Derechos_de_autor&amp;diff=3424</id>
		<title>Dos Ideas.:Derechos de autor</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Dos_Ideas.:Derechos_de_autor&amp;diff=3424"/>
				<updated>2009-10-09T17:49:33Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Página creada con 'El contenido de la wiki de Dos Ideas se publica bajo la licencia [http://creativecommons.org/licenses/by-sa/2.5/ar/ Creative Commons BY-SA].'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El contenido de la wiki de Dos Ideas se publica bajo la licencia [http://creativecommons.org/licenses/by-sa/2.5/ar/ Creative Commons BY-SA].&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=CLOB_de_Oracle_en_Weblogic&amp;diff=3423</id>
		<title>CLOB de Oracle en Weblogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=CLOB_de_Oracle_en_Weblogic&amp;diff=3423"/>
				<updated>2009-10-09T17:07:56Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Si tenemos una aplicación [[Java]] corriendo en [[WebLogic]] la forma de acceder a un [[CLOB de Oracle]] para escritura se maneja de una forma especial. en nuestro caso utilizamos [[JDBC]] y por consiguiente la clase '''weblogic.jdbc.vendor.oracle.OracleThinClob'''. Aqui dejamos un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;import java.io.IOException;&lt;br /&gt;
import java.io.Writer;&lt;br /&gt;
import java.sql.Clob;&lt;br /&gt;
import java.sql.ResultSet;&lt;br /&gt;
import java.sql.SQLException;&lt;br /&gt;
&lt;br /&gt;
import org.springframework.dao.DataAccessResourceFailureException;&lt;br /&gt;
import org.springframework.jdbc.core.RowMapper;&lt;br /&gt;
import org.springframework.jdbc.core.support.JdbcDaoSupport;&lt;br /&gt;
&lt;br /&gt;
import weblogic.jdbc.vendor.oracle.OracleThinClob;&lt;br /&gt;
&lt;br /&gt;
import com.dosideas.dao.UnDao;&lt;br /&gt;
&lt;br /&gt;
public class UnDaoImpl extends JdbcDaoSupport implements UnDao {&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Query que busca el Clob por id.&lt;br /&gt;
     * SELECT ARCHIVO FROM TABLA_CON_ARCHIVO WHERE ID = ? FOR UPDATE;&lt;br /&gt;
     */&lt;br /&gt;
    private String query;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Obtiene el writer del Clob.&lt;br /&gt;
     */&lt;br /&gt;
    public Writer obtenerWriter(Long id) {&lt;br /&gt;
        Clob clobReporte = (Clob) getJdbcTemplate()&lt;br /&gt;
                               .queryForObject(getQuery(), &lt;br /&gt;
                                 new Object[] {idPeticion }, &lt;br /&gt;
                                 new RowMapper() {&lt;br /&gt;
				     public Object mapRow(ResultSet resultSet, int rowNum) &lt;br /&gt;
                                                                     throws SQLException {&lt;br /&gt;
				         return (Clob) resultSet.getClob(1);&lt;br /&gt;
                                  }&lt;br /&gt;
                            });&lt;br /&gt;
        Writer writerDelClob = null;&lt;br /&gt;
 &lt;br /&gt;
        try {&lt;br /&gt;
            writerDelClob = ((OracleThinClob) clobReporte).getCharacterOutputStream();&lt;br /&gt;
        } catch (SQLException e) {&lt;br /&gt;
            // Tratar el error&lt;br /&gt;
        }&lt;br /&gt;
	&lt;br /&gt;
	return writerDelClob;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [[Oracle]]&lt;br /&gt;
* [[JDBC]]&lt;br /&gt;
* [[CLOB de Oracle]]&lt;br /&gt;
* [http://www.oracle.com/technology/docs/tech/java/sqlj_jdbc/doc_library/javadoc/oracle.sql.CLOB.html Javadoc CLOB]&lt;br /&gt;
*[http://download.oracle.com/docs/cd/E13222_01/wls/docs91/jdbc/thirdparty.html#1045809 Using Third-Party Drivers with WebLogic Server]&lt;br /&gt;
&lt;br /&gt;
[[Category:Oracle]]&lt;br /&gt;
[[Category:WebLogic]]&lt;br /&gt;
[[Category:Java]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Metodologias_De_Desarrollo&amp;diff=3421</id>
		<title>Metodologias De Desarrollo</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Metodologias_De_Desarrollo&amp;diff=3421"/>
				<updated>2009-10-09T12:31:31Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Metodologías */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El desarrollo de software es un proceso que involucra a personas y tecnología para la creación de sistemas informáticos.&lt;br /&gt;
&lt;br /&gt;
Las empresas que se destacan en el negocio del software son aquellas que poseen un proceso de creación e innovación de productos ágil y eficaz. El proceso de desarrollo de productos es el mas crítico para la continuidad del éxito, prosperidad y continuidad de las organizaciones.&lt;br /&gt;
&lt;br /&gt;
==Metodologías==&lt;br /&gt;
Actualmente se puede realizar una distinción entre dos grandes grupos de metodologías para el desarrollo de software:&lt;br /&gt;
* [[Agil]] &lt;br /&gt;
* [[Conformación de equipos]]&lt;br /&gt;
&lt;br /&gt;
==Libros==&lt;br /&gt;
* [[Libros]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Metodologias_De_Desarrollo&amp;diff=3420</id>
		<title>Metodologias De Desarrollo</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Metodologias_De_Desarrollo&amp;diff=3420"/>
				<updated>2009-10-09T12:31:16Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Metodologías */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El desarrollo de software es un proceso que involucra a personas y tecnología para la creación de sistemas informáticos.&lt;br /&gt;
&lt;br /&gt;
Las empresas que se destacan en el negocio del software son aquellas que poseen un proceso de creación e innovación de productos ágil y eficaz. El proceso de desarrollo de productos es el mas crítico para la continuidad del éxito, prosperidad y continuidad de las organizaciones.&lt;br /&gt;
&lt;br /&gt;
==Metodologías==&lt;br /&gt;
Actualmente se puede realizar una distinción entre dos grandes grupos de metodologías para el desarrollo de software:&lt;br /&gt;
* [[Agil]] - Desarrollo ágil de software&lt;br /&gt;
* [[Conformación de equipos]] - Técnicas para la conformación de equipos&lt;br /&gt;
&lt;br /&gt;
==Libros==&lt;br /&gt;
* [[Libros]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Ayuda:Estilo_De_Notas&amp;diff=3419</id>
		<title>Ayuda:Estilo De Notas</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Ayuda:Estilo_De_Notas&amp;diff=3419"/>
				<updated>2009-10-09T12:30:22Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Cantidad de información */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para tener una wiki ordenada y prolija, veremos a continuación una serie de convenciones y consejos a la hora de escribir una página wiki en Dos Ideas.&lt;br /&gt;
&lt;br /&gt;
==Idioma==&lt;br /&gt;
Preferimos el uso de '''castellano''' en la medida de lo posible. Evitamos el uso de inglés u otros idiomas cuando existen términos y expresiones en castellano de uso habitual.&lt;br /&gt;
&lt;br /&gt;
Usamos la terminología en inglés (u otro idioma) cuando no exista una traducción exacta, o la expresión sea más comunmente usada en su idioma original.&lt;br /&gt;
&lt;br /&gt;
==Estilo de escritura==&lt;br /&gt;
En la medida de lo posible usamos un estilo impersonal e informal.&lt;br /&gt;
 Configuro el archivo x.properties para... //NO ESCRIBIR ASI&lt;br /&gt;
 Se configura el archivo x.properties...   //PREFERIBLE&lt;br /&gt;
&lt;br /&gt;
==Nombres de las páginas==&lt;br /&gt;
El nombre de cada página wiki tiene que tener sentido y servir para ubicar el contenido. Ejemplos:&lt;br /&gt;
 Ejemplo de uso            //NO! No está en claro sobre QUE tema se verá el ejemplo&lt;br /&gt;
 EjemploDeUsoDeFoo         //NO! No &amp;quot;pegar&amp;quot; todas las palabras, usar espacios&lt;br /&gt;
 Ejemplo De Uso De Foo     //NO! Solo usar mayúsculas cuando es necesario&lt;br /&gt;
 Ejemplo de uso de Foo     //OK. Viendo el titulo se sabe qué se encontrará en la página&lt;br /&gt;
 Anotaciones               //Uso general de anotaciones, sin referencia a ninguna tecnología en particular&lt;br /&gt;
 Anotaciones con Foo       //Queda claro que se verán anotaciones para la tecnología Foo&lt;br /&gt;
&lt;br /&gt;
Sólo usar mayúsculas para la primer letra de la página, o cuando se hace referencia a un nombre.&lt;br /&gt;
 Ejemplo de uso        //OK&lt;br /&gt;
 Ejemplo De Uso        //NO! no usar mayúsculas innecesariamente&lt;br /&gt;
&lt;br /&gt;
'''Nota sobre las mayúsculas''': varias páginas de la wiki comenzaron siguiendo una convención distinta sobre las mayúsculas. Por favor, para páginas nuevas seguir esta nueva convención.&lt;br /&gt;
&lt;br /&gt;
En el caso de siglas, usar mayúsculas para todas las letras de la sigla. Por ejemplo:&lt;br /&gt;
 Mensajeria con MDB&lt;br /&gt;
 Pruebas ee EJB&lt;br /&gt;
 Desarrollo con TDD&lt;br /&gt;
&lt;br /&gt;
Evitar las páginas con nombres de una sola palabra, a menos que se trate de nombres de tecnologías.&lt;br /&gt;
&lt;br /&gt;
==Cantidad de información==&lt;br /&gt;
Cada página tiene que ser &amp;quot;autocontenida&amp;quot;. Es decir, tiene que aportar algo por sí misma.&lt;br /&gt;
&lt;br /&gt;
== Fin de la nota==&lt;br /&gt;
Terminamos la nota con dos grupos de links: hacia otros temas de la misma wiki, y hacia recursos externos, en este orden.&lt;br /&gt;
Todos estos temas se ubican bajo el título de nivel 2 &amp;quot;Ver también&amp;quot;. Por ejemplo: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 ==Ver también==&lt;br /&gt;
 * [[Una página wiki relacionada]]&lt;br /&gt;
 * [[Otra página wiki relacionada]]&lt;br /&gt;
 * [http://www.foo.org Web oficial de Foo]&lt;br /&gt;
 * [http://www.foo.org/tutorial Tutorial de Foo]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Categorías ==&lt;br /&gt;
Ubicar la página en una o más categorías, para facilitar su búsqueda. En el caso de categorías con sub-categorías, ubicar el artículo en la subcategoría más específica (evitando agregar a la categoría padre). &lt;br /&gt;
&lt;br /&gt;
Escribir los tags de Categoría al final de la página wiki.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, un artículo que habla sobre el uso de Web Services con Spring Framework: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[[Categoría:Spring Framework]]&lt;br /&gt;
[[Categoría:Web Service]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Ayuda:Estilo_De_Notas&amp;diff=3418</id>
		<title>Ayuda:Estilo De Notas</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Ayuda:Estilo_De_Notas&amp;diff=3418"/>
				<updated>2009-10-09T12:29:54Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Categorías */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para tener una wiki ordenada y prolija, veremos a continuación una serie de convenciones y consejos a la hora de escribir una página wiki en Dos Ideas.&lt;br /&gt;
&lt;br /&gt;
==Idioma==&lt;br /&gt;
Preferimos el uso de '''castellano''' en la medida de lo posible. Evitamos el uso de inglés u otros idiomas cuando existen términos y expresiones en castellano de uso habitual.&lt;br /&gt;
&lt;br /&gt;
Usamos la terminología en inglés (u otro idioma) cuando no exista una traducción exacta, o la expresión sea más comunmente usada en su idioma original.&lt;br /&gt;
&lt;br /&gt;
==Estilo de escritura==&lt;br /&gt;
En la medida de lo posible usamos un estilo impersonal e informal.&lt;br /&gt;
 Configuro el archivo x.properties para... //NO ESCRIBIR ASI&lt;br /&gt;
 Se configura el archivo x.properties...   //PREFERIBLE&lt;br /&gt;
&lt;br /&gt;
==Nombres de las páginas==&lt;br /&gt;
El nombre de cada página wiki tiene que tener sentido y servir para ubicar el contenido. Ejemplos:&lt;br /&gt;
 Ejemplo de uso            //NO! No está en claro sobre QUE tema se verá el ejemplo&lt;br /&gt;
 EjemploDeUsoDeFoo         //NO! No &amp;quot;pegar&amp;quot; todas las palabras, usar espacios&lt;br /&gt;
 Ejemplo De Uso De Foo     //NO! Solo usar mayúsculas cuando es necesario&lt;br /&gt;
 Ejemplo de uso de Foo     //OK. Viendo el titulo se sabe qué se encontrará en la página&lt;br /&gt;
 Anotaciones               //Uso general de anotaciones, sin referencia a ninguna tecnología en particular&lt;br /&gt;
 Anotaciones con Foo       //Queda claro que se verán anotaciones para la tecnología Foo&lt;br /&gt;
&lt;br /&gt;
Sólo usar mayúsculas para la primer letra de la página, o cuando se hace referencia a un nombre.&lt;br /&gt;
 Ejemplo de uso        //OK&lt;br /&gt;
 Ejemplo De Uso        //NO! no usar mayúsculas innecesariamente&lt;br /&gt;
&lt;br /&gt;
'''Nota sobre las mayúsculas''': varias páginas de la wiki comenzaron siguiendo una convención distinta sobre las mayúsculas. Por favor, para páginas nuevas seguir esta nueva convención.&lt;br /&gt;
&lt;br /&gt;
En el caso de siglas, usar mayúsculas para todas las letras de la sigla. Por ejemplo:&lt;br /&gt;
 Mensajeria con MDB&lt;br /&gt;
 Pruebas ee EJB&lt;br /&gt;
 Desarrollo con TDD&lt;br /&gt;
&lt;br /&gt;
Evitar las páginas con nombres de una sola palabra, a menos que se trate de nombres de tecnologías.&lt;br /&gt;
&lt;br /&gt;
==Cantidad de información==&lt;br /&gt;
Cada página tiene que ser &amp;quot;autocontenida&amp;quot;. Es decir, tiene que aportar algo por sí misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fin de la nota==&lt;br /&gt;
Terminamos la nota con dos grupos de links: hacia otros temas de la misma wiki, y hacia recursos externos, en este orden.&lt;br /&gt;
Todos estos temas se ubican bajo el título de nivel 2 &amp;quot;Ver también&amp;quot;. Por ejemplo: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 ==Ver también==&lt;br /&gt;
 * [[Una página wiki relacionada]]&lt;br /&gt;
 * [[Otra página wiki relacionada]]&lt;br /&gt;
 * [http://www.foo.org Web oficial de Foo]&lt;br /&gt;
 * [http://www.foo.org/tutorial Tutorial de Foo]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Categorías ==&lt;br /&gt;
Ubicar la página en una o más categorías, para facilitar su búsqueda. En el caso de categorías con sub-categorías, ubicar el artículo en la subcategoría más específica (evitando agregar a la categoría padre). &lt;br /&gt;
&lt;br /&gt;
Escribir los tags de Categoría al final de la página wiki.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, un artículo que habla sobre el uso de Web Services con Spring Framework: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[[Categoría:Spring Framework]]&lt;br /&gt;
[[Categoría:Web Service]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Ayuda:Estilo_De_Notas&amp;diff=3417</id>
		<title>Ayuda:Estilo De Notas</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Ayuda:Estilo_De_Notas&amp;diff=3417"/>
				<updated>2009-10-09T12:29:41Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Fin de la nota */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para tener una wiki ordenada y prolija, veremos a continuación una serie de convenciones y consejos a la hora de escribir una página wiki en Dos Ideas.&lt;br /&gt;
&lt;br /&gt;
==Idioma==&lt;br /&gt;
Preferimos el uso de '''castellano''' en la medida de lo posible. Evitamos el uso de inglés u otros idiomas cuando existen términos y expresiones en castellano de uso habitual.&lt;br /&gt;
&lt;br /&gt;
Usamos la terminología en inglés (u otro idioma) cuando no exista una traducción exacta, o la expresión sea más comunmente usada en su idioma original.&lt;br /&gt;
&lt;br /&gt;
==Estilo de escritura==&lt;br /&gt;
En la medida de lo posible usamos un estilo impersonal e informal.&lt;br /&gt;
 Configuro el archivo x.properties para... //NO ESCRIBIR ASI&lt;br /&gt;
 Se configura el archivo x.properties...   //PREFERIBLE&lt;br /&gt;
&lt;br /&gt;
==Nombres de las páginas==&lt;br /&gt;
El nombre de cada página wiki tiene que tener sentido y servir para ubicar el contenido. Ejemplos:&lt;br /&gt;
 Ejemplo de uso            //NO! No está en claro sobre QUE tema se verá el ejemplo&lt;br /&gt;
 EjemploDeUsoDeFoo         //NO! No &amp;quot;pegar&amp;quot; todas las palabras, usar espacios&lt;br /&gt;
 Ejemplo De Uso De Foo     //NO! Solo usar mayúsculas cuando es necesario&lt;br /&gt;
 Ejemplo de uso de Foo     //OK. Viendo el titulo se sabe qué se encontrará en la página&lt;br /&gt;
 Anotaciones               //Uso general de anotaciones, sin referencia a ninguna tecnología en particular&lt;br /&gt;
 Anotaciones con Foo       //Queda claro que se verán anotaciones para la tecnología Foo&lt;br /&gt;
&lt;br /&gt;
Sólo usar mayúsculas para la primer letra de la página, o cuando se hace referencia a un nombre.&lt;br /&gt;
 Ejemplo de uso        //OK&lt;br /&gt;
 Ejemplo De Uso        //NO! no usar mayúsculas innecesariamente&lt;br /&gt;
&lt;br /&gt;
'''Nota sobre las mayúsculas''': varias páginas de la wiki comenzaron siguiendo una convención distinta sobre las mayúsculas. Por favor, para páginas nuevas seguir esta nueva convención.&lt;br /&gt;
&lt;br /&gt;
En el caso de siglas, usar mayúsculas para todas las letras de la sigla. Por ejemplo:&lt;br /&gt;
 Mensajeria con MDB&lt;br /&gt;
 Pruebas ee EJB&lt;br /&gt;
 Desarrollo con TDD&lt;br /&gt;
&lt;br /&gt;
Evitar las páginas con nombres de una sola palabra, a menos que se trate de nombres de tecnologías.&lt;br /&gt;
&lt;br /&gt;
==Cantidad de información==&lt;br /&gt;
Cada página tiene que ser &amp;quot;autocontenida&amp;quot;. Es decir, tiene que aportar algo por sí misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fin de la nota==&lt;br /&gt;
Terminamos la nota con dos grupos de links: hacia otros temas de la misma wiki, y hacia recursos externos, en este orden.&lt;br /&gt;
Todos estos temas se ubican bajo el título de nivel 2 &amp;quot;Ver también&amp;quot;. Por ejemplo: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 ==Ver también==&lt;br /&gt;
 * [[Una página wiki relacionada]]&lt;br /&gt;
 * [[Otra página wiki relacionada]]&lt;br /&gt;
 * [http://www.foo.org Web oficial de Foo]&lt;br /&gt;
 * [http://www.foo.org/tutorial Tutorial de Foo]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Categorías ==&lt;br /&gt;
Ubicar la página en una o más categorías, para facilitar su búsqueda. En el caso de categorías con sub-categorías, ubicar el artículo en la subcategoría más específica (evitando agregar a la categoría padre). Escribir los tags de Categoría al final de la página wiki.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, un artículo que habla sobre el uso de Web Services con Spring Framework: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[[Categoría:Spring Framework]]&lt;br /&gt;
[[Categoría:Web Service]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Ayuda:Estilo_De_Notas&amp;diff=3416</id>
		<title>Ayuda:Estilo De Notas</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Ayuda:Estilo_De_Notas&amp;diff=3416"/>
				<updated>2009-10-09T12:29:16Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Nombres de las páginas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para tener una wiki ordenada y prolija, veremos a continuación una serie de convenciones y consejos a la hora de escribir una página wiki en Dos Ideas.&lt;br /&gt;
&lt;br /&gt;
==Idioma==&lt;br /&gt;
Preferimos el uso de '''castellano''' en la medida de lo posible. Evitamos el uso de inglés u otros idiomas cuando existen términos y expresiones en castellano de uso habitual.&lt;br /&gt;
&lt;br /&gt;
Usamos la terminología en inglés (u otro idioma) cuando no exista una traducción exacta, o la expresión sea más comunmente usada en su idioma original.&lt;br /&gt;
&lt;br /&gt;
==Estilo de escritura==&lt;br /&gt;
En la medida de lo posible usamos un estilo impersonal e informal.&lt;br /&gt;
 Configuro el archivo x.properties para... //NO ESCRIBIR ASI&lt;br /&gt;
 Se configura el archivo x.properties...   //PREFERIBLE&lt;br /&gt;
&lt;br /&gt;
==Nombres de las páginas==&lt;br /&gt;
El nombre de cada página wiki tiene que tener sentido y servir para ubicar el contenido. Ejemplos:&lt;br /&gt;
 Ejemplo de uso            //NO! No está en claro sobre QUE tema se verá el ejemplo&lt;br /&gt;
 EjemploDeUsoDeFoo         //NO! No &amp;quot;pegar&amp;quot; todas las palabras, usar espacios&lt;br /&gt;
 Ejemplo De Uso De Foo     //NO! Solo usar mayúsculas cuando es necesario&lt;br /&gt;
 Ejemplo de uso de Foo     //OK. Viendo el titulo se sabe qué se encontrará en la página&lt;br /&gt;
 Anotaciones               //Uso general de anotaciones, sin referencia a ninguna tecnología en particular&lt;br /&gt;
 Anotaciones con Foo       //Queda claro que se verán anotaciones para la tecnología Foo&lt;br /&gt;
&lt;br /&gt;
Sólo usar mayúsculas para la primer letra de la página, o cuando se hace referencia a un nombre.&lt;br /&gt;
 Ejemplo de uso        //OK&lt;br /&gt;
 Ejemplo De Uso        //NO! no usar mayúsculas innecesariamente&lt;br /&gt;
&lt;br /&gt;
'''Nota sobre las mayúsculas''': varias páginas de la wiki comenzaron siguiendo una convención distinta sobre las mayúsculas. Por favor, para páginas nuevas seguir esta nueva convención.&lt;br /&gt;
&lt;br /&gt;
En el caso de siglas, usar mayúsculas para todas las letras de la sigla. Por ejemplo:&lt;br /&gt;
 Mensajeria con MDB&lt;br /&gt;
 Pruebas ee EJB&lt;br /&gt;
 Desarrollo con TDD&lt;br /&gt;
&lt;br /&gt;
Evitar las páginas con nombres de una sola palabra, a menos que se trate de nombres de tecnologías.&lt;br /&gt;
&lt;br /&gt;
==Cantidad de información==&lt;br /&gt;
Cada página tiene que ser &amp;quot;autocontenida&amp;quot;. Es decir, tiene que aportar algo por sí misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fin de la nota==&lt;br /&gt;
Terminamos la nota con dos grupos de links: hacia otros temas de la misma wiki, y hacia recursos externos, en este orden.&lt;br /&gt;
Todos estos temas se ubican bajo el título de nivel 2 &amp;quot;Ver también&amp;quot;. Por ejemplo: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 ==Ver también==&lt;br /&gt;
 * [[Una Pagina Wiki Relacionada]]&lt;br /&gt;
 * [[Otra Pagina Wiki Relacionada]]&lt;br /&gt;
 * [http://www.foo.org Web oficial de Foo]&lt;br /&gt;
 * [http://www.foo.org/tutorial Tutorial de Foo]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Categorías ==&lt;br /&gt;
Ubicar la página en una o más categorías, para facilitar su búsqueda. En el caso de categorías con sub-categorías, ubicar el artículo en la subcategoría más específica (evitando agregar a la categoría padre). Escribir los tags de Categoría al final de la página wiki.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, un artículo que habla sobre el uso de Web Services con Spring Framework: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[[Categoría:Spring Framework]]&lt;br /&gt;
[[Categoría:Web Service]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Metodologias_De_Desarrollo&amp;diff=3415</id>
		<title>Metodologias De Desarrollo</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Metodologias_De_Desarrollo&amp;diff=3415"/>
				<updated>2009-10-09T12:26:25Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Metodologías */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El desarrollo de software es un proceso que involucra a personas y tecnología para la creación de sistemas informáticos.&lt;br /&gt;
&lt;br /&gt;
Las empresas que se destacan en el negocio del software son aquellas que poseen un proceso de creación e innovación de productos ágil y eficaz. El proceso de desarrollo de productos es el mas crítico para la continuidad del éxito, prosperidad y continuidad de las organizaciones.&lt;br /&gt;
&lt;br /&gt;
==Metodologías==&lt;br /&gt;
Actualmente se puede realizar una distinción entre dos grandes grupos de metodologías para el desarrollo de software:&lt;br /&gt;
* [[Desarrollo Agil De Software]]&lt;br /&gt;
* [[Conformación de equipos]]&lt;br /&gt;
&lt;br /&gt;
==Libros==&lt;br /&gt;
* [[Libros]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Conformaci%C3%B3n_de_equipos&amp;diff=3413</id>
		<title>Conformación de equipos</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Conformaci%C3%B3n_de_equipos&amp;diff=3413"/>
				<updated>2009-10-09T12:26:07Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Conformación De Equipos trasladada a Conformación de equipos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(EQUIPO = PRODUCTO) es uno de los conceptos más importantes del desarrollo de software, y a menudo queda olvidado. El PRODUCTO es consecuencia del trabajo del EQUIPO: todas las características que tiene un PRODUCTO son porque el EQUIPO fue capaz de generarlas. Por otro lado, no puedo agregar algo a un PRODUCTO si en el EQUIPO no existe una característica que lo genere. &lt;br /&gt;
&lt;br /&gt;
Existe una correlación directa (aunque a veces no obvia) entre una característica del PRODUCTO y una característica del EQUIPO. Ahora, como el PRODUCTO es consecuencia del trabajo del EQUIPO, para introducir o modificar características en el PRODUCTO deberemos actuar sobre el EQUIPO, que es la única parte de la ecuación a la que tenemos acceso. &lt;br /&gt;
&lt;br /&gt;
De esta manera, (EQUIPO = PRODUCTO) nos permite analizar de forma pasiva una situación. También es una herramienta activa sumamente poderosa, ya que al modificar al EQUIPO vamos a modificar, inevitablemente, el PRODUCTO que se construye. &lt;br /&gt;
&lt;br /&gt;
== Los procesos y las personas ==&lt;br /&gt;
Son las personas quienes, a través de sus relaciones, crean y sostienen a los procesos. Son las personas quienes usan y aplican las herramientas. Y en definitiva, son las personas quienes trabajan en equipo y crean productos. Por eso buscamos crear los Mejores Equipos que nos permitan desarrollar los Mejores Productos para nuestros clientes. &lt;br /&gt;
&lt;br /&gt;
Los valores que respaldamos y aplicamos en su totalidad nos permiten crear mejores relaciones humanas que, a su vez, generan los mejores equipos de propiedad intelectual posibles. Y allí reside el gran valor que tenemos para ofrecerle a nuestro cliente.&lt;br /&gt;
&lt;br /&gt;
== La conformación de equipos ==&lt;br /&gt;
Teniendo en cuenta que deberemos trabajar sobre el Equipo, estamos hablando de relaciones de personas. &lt;br /&gt;
&lt;br /&gt;
[[Agil]] habla de un cambio en la forma de pensar y encarar el trabajo, basándonos fuertemente en principios y valores humanos. Aquí radica la dificultad de una implementación Ágil verdadera. &lt;br /&gt;
&lt;br /&gt;
Ágil NO es implementar Scrum, XP u otra metodología. Ágil es un cambio cultural que, luego, se acompaña con cambios en las prácticas y métodos de la organización. &lt;br /&gt;
&lt;br /&gt;
Implementar Scrum (o cuaqluier metodología) sin aceptar el desafío del cambio cultural es una invitación al desastre. Es en el cambio cultural donde radica el verdadero valor de negocio que se pretende generar y maximizar, y no en metodologías particulares. Ya lo sabemos: la bala de plata no existe. Sólo el trabajo serio y profesional. &lt;br /&gt;
&lt;br /&gt;
Es por todo esto que la conformación de equipos es un aspecto fundamental en el desarrollo de cualquier creación de propiedad intelectual (como ser el desarrollo de software). Son las personas que, a través de sus conversaciones, generan relaciones y obtienen resultados (como ser, un producto de software).&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Conformaci%C3%B3n_De_Equipos&amp;diff=3414</id>
		<title>Conformación De Equipos</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Conformaci%C3%B3n_De_Equipos&amp;diff=3414"/>
				<updated>2009-10-09T12:26:07Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Conformación De Equipos trasladada a Conformación de equipos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECCIÓN [[Conformación de equipos]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2828</id>
		<title>Colas De Mensajes Con AquaLogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2828"/>
				<updated>2009-07-20T17:48:12Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vamos a exponer con [[AquaLogic]] un [[Web Service]] que nos permita enviar un mensaje a una cola de mensajería. Partimos de un [[WSDL]] en donde definimos una operación “enviarFactura” que recibe como parámetro un elemento de tipo factura. Los elementos y tipos de dato de una factura se encuentran definidos en el esquema xml asociado al [[WSDL]].&lt;br /&gt;
&lt;br /&gt;
==La definición del servicio==&lt;br /&gt;
===Wsdl===&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;definitions name=&amp;quot;facturaWsdl&amp;quot; targetNamespace=&amp;quot;http://j2ee.netbeans.org/wsdl/facturaWsdl&amp;quot;&lt;br /&gt;
    xmlns=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&lt;br /&gt;
    xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&lt;br /&gt;
    xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; &lt;br /&gt;
    xmlns:tns=&amp;quot;http://j2ee.netbeans.org/wsdl/facturaWsdl&amp;quot; &lt;br /&gt;
    xmlns:ns=&amp;quot;http://xml.netbeans.org/schema/facturaXmlSchema&amp;quot; &lt;br /&gt;
    xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/wsdl/soap/&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;types&amp;gt;&lt;br /&gt;
        &amp;lt;xsd:schema targetNamespace=&amp;quot;http://j2ee.netbeans.org/wsdl/facturaWsdl&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsd:import namespace=&amp;quot;http://xml.netbeans.org/schema/facturaXmlSchema&amp;quot; &lt;br /&gt;
                        schemaLocation=&amp;quot;../schema/facturaXmlSchema.xsd&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsd:schema&amp;gt;&lt;br /&gt;
    &amp;lt;/types&amp;gt;&lt;br /&gt;
    &amp;lt;message name=&amp;quot;enviarFacturaRequest&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;part name=&amp;quot;part1&amp;quot; element=&amp;quot;ns:factura&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message name=&amp;quot;enviarFacturaResponse&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;portType name=&amp;quot;facturaWsdlPortType&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;operation name=&amp;quot;enviarFactura&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;input name=&amp;quot;input1&amp;quot; message=&amp;quot;tns:enviarFacturaRequest&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;output name=&amp;quot;output1&amp;quot; message=&amp;quot;tns:enviarFacturaResponse&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/operation&amp;gt;&lt;br /&gt;
    &amp;lt;/portType&amp;gt;&lt;br /&gt;
    &amp;lt;binding name=&amp;quot;facturaWsdlBinding&amp;quot; type=&amp;quot;tns:facturaWsdlPortType&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;soap:binding style=&amp;quot;document&amp;quot; transport=&amp;quot;http://schemas.xmlsoap.org/soap/http&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;operation name=&amp;quot;enviarFactura&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;soap:operation/&amp;gt;&lt;br /&gt;
            &amp;lt;input name=&amp;quot;input1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;soap:body use=&amp;quot;literal&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/input&amp;gt;&lt;br /&gt;
            &amp;lt;output name=&amp;quot;output1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;soap:body use=&amp;quot;literal&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/output&amp;gt;&lt;br /&gt;
        &amp;lt;/operation&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;service name=&amp;quot;facturaWsdlService&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;port name=&amp;quot;facturaWsdlPort&amp;quot; binding=&amp;quot;tns:facturaWsdlBinding&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;soap:address &lt;br /&gt;
        location=&amp;quot;http://localhost:${HttpDefaultPort}/facturaWsdlService/facturaWsdlPort&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;/service&amp;gt;&lt;br /&gt;
&amp;lt;/definitions&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===El Esquema XML (XSD)===&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xsd:schema xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
    targetNamespace=&amp;quot;http://xml.netbeans.org/schema/facturaXmlSchema&amp;quot;&lt;br /&gt;
    xmlns:tns=&amp;quot;http://xml.netbeans.org/schema/facturaXmlSchema&amp;quot;&lt;br /&gt;
    elementFormDefault=&amp;quot;qualified&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
    &amp;lt;xsd:element name=&amp;quot;factura&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsd:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;xsd:element name=&amp;quot;numeroFactura&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsd:element name=&amp;quot;fecha&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;xsd:element name=&amp;quot;items&amp;quot; type=&amp;quot;tns:listaItemsFactura&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;
    &amp;lt;/xsd:element&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;xsd:complexType name=&amp;quot;itemFactura&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsd:all&amp;gt;&lt;br /&gt;
            &amp;lt;xsd:element name=&amp;quot;codigoArticulo&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsd:element name=&amp;quot;descripcion&amp;quot; minOccurs=&amp;quot;0&amp;quot; type=&amp;quot;xsd:string&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsd:element name=&amp;quot;cantidad&amp;quot; type=&amp;quot;xsd:int&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsd:element name=&amp;quot;precio&amp;quot; type=&amp;quot;xsd:double&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsd:all&amp;gt;&lt;br /&gt;
    &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;xsd:complexType name=&amp;quot;listaItemsFactura&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;
            &amp;lt;xsd:element name=&amp;quot;item&amp;quot; maxOccurs=&amp;quot;unbounded&amp;quot; type=&amp;quot;tns:itemFactura&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/xsd:schema&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creación del proyecto==&lt;br /&gt;
Recordemos que para crear objetos y/o modificarlos en [[AquaLogic]] se debe crear una sesión y luego activar la misma para que los cambios tengan efecto.&lt;br /&gt;
&lt;br /&gt;
Desde la consola de aqualogic, en el Project Explorer creamos un proyecto llamado &lt;br /&gt;
&amp;quot;demoFactura&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_1.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Para ser ordenados, dentro del proyecto demoFactura creamos una carpeta “envío de facturas”, donde crearemos todos los recursos de esta demo.&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_2.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
== Agregamos el Esquema XML (XSD) == &lt;br /&gt;
&lt;br /&gt;
Para subir el esquema XML al AquaLogic, dentro de nuestra carpeta elegimos la opción XML Schema en el combo “Create Resource:”&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_3.jpg ]]&lt;br /&gt;
&lt;br /&gt;
Le ponemos un nombre al recurso que estamos creando y cargamos el archivo de definición de una factura.&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_4.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Después de hacer click en Save vemos que tenemos el archivo xsd cargado correctamente:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_5.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
== Agregamos el WSDL ==&lt;br /&gt;
Para cargar el wsdl seguimos los mismos pasos que en el apartado anterior, eligiendo en el combo “Create Resource:” la opción WSDL.&lt;br /&gt;
&lt;br /&gt;
Después de dar un nombre al recurso, cargar el archivo .wsdl y guardar los cambios tendremos:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_6.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
== Creamos un Business Service ==&lt;br /&gt;
El business service será el responsable de enviar el mensaje a la queue. Si elegimos la opción “Business Service” del combo “Create Resource” ingresamos al wizard para configurar este servicio.&lt;br /&gt;
En el primer paso damos un nombre al servicio e indicamos que es de tipo “Messaging Service”.&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_7.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Seteamos request y response como texto: &lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_8.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Marcamos que se utilizará el protocolo jms y agregamos con el botón Add los destinos del mensaje. El formato de las uri es jms://&amp;lt;host&amp;gt;:&amp;lt;puerto&amp;gt;/&amp;lt;jndi-connection-factory&amp;gt;/&amp;lt;jndi-queue&amp;gt; (Si nuestros jndi contienen “/”, las escapeamos con “.”)&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_9.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Indicamos que el destinatario es una queue y que se enviará un text message.&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_10.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
En el último paso del wizard verificamos toda la información ingresada y guardamos los cambios. Entonces ya podemos probar el bussinessService mediante el ícono de “Launch Test Console”:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_11.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Escribimos el texto que viajará en el mensaje y presionamos el botón Execute:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_12.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
El servicio termina correctamente y podemos ver que nuestra queue ha recibido un mensaje con el texto ingresado.&lt;br /&gt;
&lt;br /&gt;
== Creamos un Proxy Service ==&lt;br /&gt;
El Proxy service nos permitirá exponer el servicio para ser invocado vía http. Ingresamos al wizard de configuración eligiendo la opción “Proxy Service” en el combo “Create Resource”.&lt;br /&gt;
Ponemos un nombre al servicio e indicamos que lo vamos a crear a partir de nuestro wsdl, el cual elegimos mediante el botón Browse:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_13.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Marcamos que podrá ser consumido mediante el protocolo http y definimos la url de invocación:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_14.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Dejamos todas las opciones por defecto hasta que termina el wizard y activamos los cambios.&lt;br /&gt;
&lt;br /&gt;
Ahora hay que asociar el Proxy a nuestro business service. Para eso editamos el flujo del mensaje:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_15.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Y definimos un ruteo:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_16.jpg | 750px ]]&lt;br /&gt;
[[Image:Aqualogic_demoFactura_17.jpg | 750px ]]&lt;br /&gt;
[[Image:Aqualogic_demoFactura_18.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Click en el link &amp;lt;service&amp;gt; para buscar nuestro business service y que nos quede así:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_19.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Guardamos los cambios y probamos nuestro Proxy con el ícono de “Launch Test Console”, como hicimos antes con el business service.&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_20.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Ejecutado ese request podemos ver que el mensaje completo llegó a la queue correctamente.&lt;br /&gt;
&lt;br /&gt;
== Agregamos el JMSType al mensaje ==&lt;br /&gt;
&lt;br /&gt;
Vamos a editar el routeo entre el proxy y el business service para agregar el JMSType del mensaje que se encola:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_21.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Presionamos Add header y seleccionamos en el combo la opción JMSType:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_22.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Editamos el link &amp;lt;Expression&amp;gt; con el jmsType deseado, en este caso ‘facturaType’. Activamos los cambios y si probamos de nuevo el Proxy vemos que el mensaje se encola con el type indicado.&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_23.jpg | 750px ]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2825</id>
		<title>Colas De Mensajes Con AquaLogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2825"/>
				<updated>2009-07-20T17:22:05Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Creación del proyecto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vamos a exponer con [[AquaLogic]] un [[Web Service]] que nos permita enviar un mensaje a una cola de mensajería. Partimos de un [[WSDL]] en donde definimos una operación “enviarFactura” que recibe como parámetro un elemento de tipo factura. Los elementos y tipos de dato de una factura se encuentran definidos en el esquema xml asociado al [[WSDL]].&lt;br /&gt;
&lt;br /&gt;
==El WSDL==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==El Esquema XML (XSD)==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creación del proyecto==&lt;br /&gt;
Recordemos que para crear objetos y/o modificarlos en [[AquaLogic]] se debe crear una sesión y luego activar la misma para que los cambios tengan efecto.&lt;br /&gt;
&lt;br /&gt;
Desde la consola de aqualogic, en el Project Explorer creamos un proyecto llamado &lt;br /&gt;
&amp;quot;demoFactura&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_1.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Para ser ordenados, dentro del proyecto demoFactura creamos una carpeta “envío de facturas”, donde crearemos todos los recursos de esta demo.&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_2.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
=== Agregamos el Esquema XML (XSD) === &lt;br /&gt;
&lt;br /&gt;
Para subir el esquema XML al AquaLogic, dentro de nuestra carpeta elegimos la opción XML Schema en el combo “Create Resource:”&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_3.jpg ]]&lt;br /&gt;
&lt;br /&gt;
Le ponemos un nombre al recurso que estamos creando y cargamos el archivo de definición de una factura.&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_4.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
Después de hacer click en Save vemos que tenemos el archivo xsd cargado correctamente:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_5.jpg | 750px ]]&lt;br /&gt;
&lt;br /&gt;
=== Agregamos el WSDL ===&lt;br /&gt;
Para cargar el wsdl seguimos los mismos pasos que en el apartado anterior, eligiendo en el combo “Create Resource:” la opción WSDL.&lt;br /&gt;
&lt;br /&gt;
Después de dar un nombre al recurso, cargar el archivo .wsdl y guardar los cambios tendremos:&lt;br /&gt;
[[Image:Aqualogic_demoFactura_6.jpg | 750px ]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2824</id>
		<title>Colas De Mensajes Con AquaLogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2824"/>
				<updated>2009-07-20T17:19:16Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Creación del proyecto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vamos a exponer con [[AquaLogic]] un [[Web Service]] que nos permita enviar un mensaje a una cola de mensajería. Partimos de un [[WSDL]] en donde definimos una operación “enviarFactura” que recibe como parámetro un elemento de tipo factura. Los elementos y tipos de dato de una factura se encuentran definidos en el esquema xml asociado al [[WSDL]].&lt;br /&gt;
&lt;br /&gt;
==El WSDL==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==El Esquema XML (XSD)==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creación del proyecto==&lt;br /&gt;
Recordemos que para crear objetos y/o modificarlos en [[AquaLogic]] se debe crear una sesión y luego activar la misma para que los cambios tengan efecto.&lt;br /&gt;
&lt;br /&gt;
Desde la consola de aqualogic, en el Project Explorer creamos un proyecto llamado &lt;br /&gt;
&amp;quot;demoFactura&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_1.jpg | 750px ]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2823</id>
		<title>Colas De Mensajes Con AquaLogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2823"/>
				<updated>2009-07-20T17:18:51Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Creación del proyecto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vamos a exponer con [[AquaLogic]] un [[Web Service]] que nos permita enviar un mensaje a una cola de mensajería. Partimos de un [[WSDL]] en donde definimos una operación “enviarFactura” que recibe como parámetro un elemento de tipo factura. Los elementos y tipos de dato de una factura se encuentran definidos en el esquema xml asociado al [[WSDL]].&lt;br /&gt;
&lt;br /&gt;
==El WSDL==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==El Esquema XML (XSD)==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creación del proyecto==&lt;br /&gt;
Recordemos que para crear objetos y/o modificarlos en [[AquaLogic]] se debe crear una sesión y luego activar la misma para que los cambios tengan efecto.&lt;br /&gt;
&lt;br /&gt;
Desde la consola de aqualogic, en el Project Explorer creamos un proyecto llamado &lt;br /&gt;
&amp;quot;demoFactura&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_1.jpg | 500px ]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2822</id>
		<title>Colas De Mensajes Con AquaLogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2822"/>
				<updated>2009-07-20T16:03:16Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Creación del proyecto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vamos a exponer con [[AquaLogic]] un [[Web Service]] que nos permita enviar un mensaje a una cola de mensajería. Partimos de un [[WSDL]] en donde definimos una operación “enviarFactura” que recibe como parámetro un elemento de tipo factura. Los elementos y tipos de dato de una factura se encuentran definidos en el esquema xml asociado al [[WSDL]].&lt;br /&gt;
&lt;br /&gt;
==El WSDL==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==El Esquema XML (XSD)==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creación del proyecto==&lt;br /&gt;
Recordemos que para crear objetos y/o modificarlos en [[AquaLogic]] se debe crear una sesión y luego activar la misma para que los cambios tengan efecto.&lt;br /&gt;
&lt;br /&gt;
Desde la consola de aqualogic, en el Project Explorer creamos un proyecto llamado &lt;br /&gt;
&amp;quot;demoFactura&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_1.jpg ]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2821</id>
		<title>Colas De Mensajes Con AquaLogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2821"/>
				<updated>2009-07-20T16:03:07Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Creación del proyecto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vamos a exponer con [[AquaLogic]] un [[Web Service]] que nos permita enviar un mensaje a una cola de mensajería. Partimos de un [[WSDL]] en donde definimos una operación “enviarFactura” que recibe como parámetro un elemento de tipo factura. Los elementos y tipos de dato de una factura se encuentran definidos en el esquema xml asociado al [[WSDL]].&lt;br /&gt;
&lt;br /&gt;
==El WSDL==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==El Esquema XML (XSD)==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creación del proyecto==&lt;br /&gt;
Recordemos que para crear objetos y/o modificarlos en [[AquaLogic]] se debe crear una sesión y luego activar la misma para que los cambios tengan efecto.&lt;br /&gt;
&lt;br /&gt;
Desde la consola de aqualogic, en el Project Explorer creamos un proyecto llamado &lt;br /&gt;
&amp;quot;demoFactura&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_1.jpg | width=500px]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2820</id>
		<title>Colas De Mensajes Con AquaLogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2820"/>
				<updated>2009-07-20T16:02:11Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* Creación del proyecto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vamos a exponer con [[AquaLogic]] un [[Web Service]] que nos permita enviar un mensaje a una cola de mensajería. Partimos de un [[WSDL]] en donde definimos una operación “enviarFactura” que recibe como parámetro un elemento de tipo factura. Los elementos y tipos de dato de una factura se encuentran definidos en el esquema xml asociado al [[WSDL]].&lt;br /&gt;
&lt;br /&gt;
==El WSDL==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==El Esquema XML (XSD)==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creación del proyecto==&lt;br /&gt;
Recordemos que para crear objetos y/o modificarlos en [[AquaLogic]] se debe crear una sesión y luego activar la misma para que los cambios tengan efecto.&lt;br /&gt;
&lt;br /&gt;
Desde la consola de aqualogic, en el Project Explorer creamos un proyecto llamado &lt;br /&gt;
&amp;quot;demoFactura&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_1.jpg]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2819</id>
		<title>Colas De Mensajes Con AquaLogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2819"/>
				<updated>2009-07-20T16:01:31Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vamos a exponer con [[AquaLogic]] un [[Web Service]] que nos permita enviar un mensaje a una cola de mensajería. Partimos de un [[WSDL]] en donde definimos una operación “enviarFactura” que recibe como parámetro un elemento de tipo factura. Los elementos y tipos de dato de una factura se encuentran definidos en el esquema xml asociado al [[WSDL]].&lt;br /&gt;
&lt;br /&gt;
==El WSDL==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==El Esquema XML (XSD)==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creación del proyecto==&lt;br /&gt;
Recordemos que para crear objetos y/o modificarlos en [[AquaLogic]] se debe crear una sesión y luego activar la misma para que los cambios tengan efecto.&lt;br /&gt;
&lt;br /&gt;
Desde la consola de aqualogic, en el Project Explorer creamos un proyecto llamado &lt;br /&gt;
&amp;quot;demoFactura&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_23.jpg]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2818</id>
		<title>Colas De Mensajes Con AquaLogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2818"/>
				<updated>2009-07-20T15:58:45Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: /* El WSDL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vamos a exponer con [[AquaLogic]] un [[Servicio Web]] que nos permita enviar un mensaje a una cola de mensajería. Partimos de un [[WSDL]] en donde definimos una operación “enviarFactura” que recibe como parámetro un elemento de tipo factura. Los elementos y tipos de dato de una factura se encuentran definidos en el esquema xml asociado al [[WSDL]].&lt;br /&gt;
&lt;br /&gt;
==El WSDL==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==El Esquema XML (XSD)==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creación del proyecto==&lt;br /&gt;
Recordemos que para crear objetos y/o modificarlos en [[AquaLogic]] se debe crear una sesión y luego activar la misma para que los cambios tengan efecto.&lt;br /&gt;
&lt;br /&gt;
Desde la consola de aqualogic, en el Project Explorer creamos un proyecto llamado &lt;br /&gt;
&amp;quot;demoFactura&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_23.jpg]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2817</id>
		<title>Colas De Mensajes Con AquaLogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2817"/>
				<updated>2009-07-20T15:58:30Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vamos a exponer con [[AquaLogic]] un [[Servicio Web]] que nos permita enviar un mensaje a una cola de mensajería. Partimos de un [[WSDL]] en donde definimos una operación “enviarFactura” que recibe como parámetro un elemento de tipo factura. Los elementos y tipos de dato de una factura se encuentran definidos en el esquema xml asociado al [[WSDL]].&lt;br /&gt;
&lt;br /&gt;
==El WSDL==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==El Esquema XML (XSD)==&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
poner aca el codigo...&lt;br /&gt;
&amp;lt;/code xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creación del proyecto==&lt;br /&gt;
Recordemos que para crear objetos y/o modificarlos en [[AquaLogic]] se debe crear una sesión y luego activar la misma para que los cambios tengan efecto.&lt;br /&gt;
&lt;br /&gt;
Desde la consola de aqualogic, en el Project Explorer creamos un proyecto llamado &lt;br /&gt;
&amp;quot;demoFactura&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_23.jpg]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2816</id>
		<title>Colas De Mensajes Con AquaLogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Colas_De_Mensajes_Con_AquaLogic&amp;diff=2816"/>
				<updated>2009-07-20T15:56:44Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vamos a exponer con [[AquaLogic]] un [[Servicio Web]] que nos permita enviar un mensaje a una cola de mensajería. Partimos de un [[WSDL]] en donde definimos una operación “enviarFactura” que recibe como parámetro un elemento de tipo factura. Los elementos y tipos de dato de una factura se encuentran definidos en el esquema xml asociado al [[WSDL]].&lt;br /&gt;
&lt;br /&gt;
[[Image:Aqualogic_demoFactura_23.jpg]]&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_23.jpg&amp;diff=2815</id>
		<title>Archivo:Aqualogic demoFactura 23.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_23.jpg&amp;diff=2815"/>
				<updated>2009-07-20T15:52:56Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_22.jpg&amp;diff=2814</id>
		<title>Archivo:Aqualogic demoFactura 22.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_22.jpg&amp;diff=2814"/>
				<updated>2009-07-20T15:52:47Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_21.jpg&amp;diff=2813</id>
		<title>Archivo:Aqualogic demoFactura 21.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_21.jpg&amp;diff=2813"/>
				<updated>2009-07-20T15:52:12Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_20.jpg&amp;diff=2812</id>
		<title>Archivo:Aqualogic demoFactura 20.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_20.jpg&amp;diff=2812"/>
				<updated>2009-07-20T15:52:02Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_19.jpg&amp;diff=2811</id>
		<title>Archivo:Aqualogic demoFactura 19.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_19.jpg&amp;diff=2811"/>
				<updated>2009-07-20T15:51:51Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_18.jpg&amp;diff=2810</id>
		<title>Archivo:Aqualogic demoFactura 18.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_18.jpg&amp;diff=2810"/>
				<updated>2009-07-20T15:51:42Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_17.jpg&amp;diff=2809</id>
		<title>Archivo:Aqualogic demoFactura 17.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_17.jpg&amp;diff=2809"/>
				<updated>2009-07-20T15:51:09Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_16.jpg&amp;diff=2808</id>
		<title>Archivo:Aqualogic demoFactura 16.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_16.jpg&amp;diff=2808"/>
				<updated>2009-07-20T15:50:59Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_15.jpg&amp;diff=2807</id>
		<title>Archivo:Aqualogic demoFactura 15.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_15.jpg&amp;diff=2807"/>
				<updated>2009-07-20T15:50:50Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_14.jpg&amp;diff=2806</id>
		<title>Archivo:Aqualogic demoFactura 14.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_14.jpg&amp;diff=2806"/>
				<updated>2009-07-20T15:50:39Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_13.jpg&amp;diff=2805</id>
		<title>Archivo:Aqualogic demoFactura 13.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_13.jpg&amp;diff=2805"/>
				<updated>2009-07-20T15:50:30Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_12.jpg&amp;diff=2804</id>
		<title>Archivo:Aqualogic demoFactura 12.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_12.jpg&amp;diff=2804"/>
				<updated>2009-07-20T15:50:20Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_11.jpg&amp;diff=2803</id>
		<title>Archivo:Aqualogic demoFactura 11.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_11.jpg&amp;diff=2803"/>
				<updated>2009-07-20T15:50:11Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_10.jpg&amp;diff=2802</id>
		<title>Archivo:Aqualogic demoFactura 10.jpg</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Archivo:Aqualogic_demoFactura_10.jpg&amp;diff=2802"/>
				<updated>2009-07-20T15:49:57Z</updated>
		
		<summary type="html">&lt;p&gt;Leito: Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagen para la pagina &amp;quot;Colas De Mensajeria Con AquaLogic&amp;quot;&lt;/div&gt;</summary>
		<author><name>Leito</name></author>	</entry>

	</feed>