Páginas

domingo, 9 de junio de 2013

Apache CXF - Contract First

Estos días tuve que montar un servicio Web utilizando Apache CXF y la estrategia de Contrato Primero (partimos del WSDL para generar el código Java). Es algo sencillo de montar, sin embargo, me tomó mucho más de lo previsto guiado por ejemplos erróneos y una documentación más que escasa.

Por un lado, la documentación oficial es escasa, como ya he comentado, pero e incluso los ejemplos oficiales son confusos ya que tienen archivos de contexto innecesarios y no se ejecutan tan fácilmente como deberían.

Por otro lado, muchos de los ejemplos que podemos encontrar en Internet no comentan algunos puntos básicos, están equivocados en algunos puntos y para rematar no funcionan.

Así que voy a aportar yo un ejemplo sencillo y ejecutable sin ningún problema. Lo podéis descargar en esta ruta. El ejemplo se puede ejecutar fácilmente con Maven y gracias al plugin de Jetty.

Algunos comentarios:

  • Para generar los artefactos Java, se utiliza el plugin cxf-codegen-plugin que no sólo genera los artefactos Java sino que también genera el interfaz del servicio. Este último punto es muy importante y el algo que olvidan citar casi todos, sino todos los ejemplos que he visto.
  • Al disponer del Interfaz del servicio, sólo necesitamos implementar el servicio y no crear el Interfaz por nuestra cuenta (como intentan muchos ejemplos). Primero, porque es una tarea inneceesaria. Segundo, por que posiblemente entre en conflicto con el interfaz ya generado por el plugin.
  • En la definición del EndPoint, dentro del contexto de Spring, no es necesario añadir el atributo wsdlLocation como parte del enfoque "contrato primero" sin embargo, sí es necesario si queremos que no se genere el WSDL cada vez que demandemos éste o si queremos validar las peticiones sobre el esquema.

sábado, 8 de junio de 2013

La responsabilidad del cliente

Estos días volví a ver una de esas imágenes que recorren Internet y que llegan a tus manos una y otra vez. Hablo de esta imagen:

Está claro que te echas unas risas. En esta ocasión, me paré un poco más a mirar la imagen y vi cómo ésta se cebaba con el proveedor y cómo el cliente queda simplemente como alguien que no supo explicar perfectamente lo que quería. ¿Es esta la realidad? Yo diría que no. No quita que lo que vemos, aunque exagerado, sea lo que los que nos dedicamos a esto de la consultoría vemos casi a diario, pero no se muestra toda la verdad.

Podríamos resumir la viñeta simplemente diciendo que los proveedores no son serios y que esta falta de seriedad es la causante de muchos problemas. ¿Pero por qué no es serio un proveedor? Simplemente, por que el cliente no es serio. Y un cliente puede no ser serio por muchas cosas, pero principalmente por dos motivos: presupuesto y plazos.

¿Qué sucede cuando el proveedor adjudica la oferta al proyecto más barato y con los plazos de entrega más cortos? Todos sabemos lo que sucede.

Cuando un cliente presenta una oferta con un presupuesto que no da ni para la mitad de lo que quiere, con unos plazos imposibles y con unos requisitos que no llegan a media docena y que apenas reflejan una remota idea de lo que quieren, no puede esperar que se presenten a la oferta proveedores serios.

Dicho esto, extiendo las viñetas con más información sobre cliente:

Los proveedores empezarán a ser serios cuando el cliente empieza a serlo.