style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Ejemplo de aplicacion web + cliente usando Spring MVC y HttpComponents

Estaba escribiendo en una respuesta aquí en Java México como usar algún framework para hacer una aplicación cliente / servidor usando JSON como formato de transporte y HTTP como protocolo.

Según yo era así de fácil

Ajaaa si, mira usa Spring MVC y HttpClient; aqui esta Google ...

Pero sinceramente jamás he hecho precisamente ese ejercicio y como hacía tiempo que quería hacerlo y andaba insomne hice esto.

//-- App.java
public class App  {
    public static void main( String[] args ) throws Exception {
        Loteria  loteria =  new Loteria();
        Ticket t = loteria.ganador();
        System.out.println( t );
    }
}

// Cliente -- Loteria.java
public class Loteria {
   public String path(String path) {
      return "http://localhost:8080/loteria/"+ path;
   }
   
   public Ticket ganador() throws Exception {
      DefaultHttpClient httpclient = new DefaultHttpClient();
      HttpResponse response = httpclient.execute(new HttpGet(path("/ganador")));
      ObjectMapper mapper = new ObjectMapper();
      return mapper.readValue( EntityUtils.toString(response.getEntity()), Ticket.class);
   }
}

// Controller -- DemoController.java
@Controller
@RequestMapping("/ganador")
public class DemoController {
   private Ticket ganador;
   @RequestMapping(method = RequestMethod.GET)
   public @ResponseBody Ticket showWinner(ModelMap model) {
      if ( ganador == null ) {
         ganador = new Ticket(45678);
      }
      return ganador;
   }
}

// Salida
[INFO] >>> exec-maven-plugin:1.2.1:java (default-cli) @ loteria-client >>>
[INFO]
[INFO] <<< exec-maven-plugin:1.2.1:java (default-cli) @ loteria-client <<<
[INFO]
[INFO] --- exec-maven-plugin:1.2.1:java (default-cli) @ loteria-client ---
(Wed Aug 14 09:20:07 CDT 2013) #45678

//Link updated.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Puedo..

Puedo referenciar tu artículo desde una entrada de Springhispano.org? se puede?

Imagen de paranoid_android

muy bueno

Esta muy bien el ejemplo se simplifica bastante la arquitectura.

Bastante simple

Me gusta, es bastante sencillo e ilustrativo el ejemplo.

Nada más por curiosidad me gustaría saber: ¿Qué tan conveniente sería hacer que el cliente fuese un fatjar?

Lo digo por qué siempre batallo para que los jars que genero desde Maven funcionen sin más, siempre desisto y mejor creo fat(j|w)ars con todas las dependencias, si en el jar pudiera incluir la instalación del jre lo haría :p... ¿Existe una manera de "resolver" esto?

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">