Servlet que devuelve XML

02/Nov/2006 Java , , , , , 3 Comentarios

Ahora que los desarrollos se están moviendo a arquitecturas SOA empezamos a ver que nos aparecen servicios por todos los lados. Es cierto que no se habla mucho de cómo se desarrollan dichos servicios, ya que las presentaciones de arquitectura SOA suponen que "estaban ahí".

Supongo que los sistemas legados de hace años ya estaban pensando en SOA y dejando sus interfaces lo más correctos posibles. Que no tenian datos en los interfaces de contrato datos relativos a la pantalla en la que se ejecutaban (esos terminales verde marciano) y que solo devolvían negocio.

Ahora que yo todavía no me he encontrado ningún "servicio del pasado" que solo maneje negocio. Y es por ello que tienes que acabar maleandolo para que deje unos datos lo suficientemente claros cómo para que sean consumidos en un entorno SOA.

En esta evolución nos encontramos que los servicios de los servidores ya no devuelven presentación, sino que ahora, en bastantes casos, devuelven solo negocio. Y qué mejor que utilizar el XML para describir dicho negocio.

Una de las posibilidades en estos casos es ir a un enfoque de Webservices. Posiblemente la más puritna. Si bien, es verdad que, los Webservices todavía no se encuentran en su punto más algido y tienen ciertas cosas que mejorar: velocidad, versionado, transaccionalidad,...

Un enfoque más sencillo es el de montarse un Servlet que nos devuelva un contenido XML.

Para poder hacer esto, lo primero que tenemos que hacer es crearnos una clase que extienda de HttpServlet.

  1. public class RespuestaXML extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {...}

Como todos sabemos los servlets tienen dos métodos para procesar las peticiones, dependiendo de como sean estas (GET o POST). Estos métodos son doGet y doPost. Podemos coger cualquierda de los dos para implementar nuestro ejemplo.

Dentro del método de procesado de la petición lo primero que tenemos que hacer si queremos devolver XML es establecer el tipo de contenido que devolverá elServlet. Para ello utilizamos el método .setContentType del objeto HttpServletResponse.

  1. Response.setContentType("text/xml");

Con esto le estamos diciendo al cliente receptor de la petición que el contenido que le va a llegar en dicha petición es XML.

Una vez tenemos definido el tipo de contenido lo siguiente es volcar contenido XML a la salida. Para ello deberemos de obtener un PrintWriter sobre el objeto HttpServletResponse.

  1. PrintWriter out = response.getWriter();

Y ahora empezar a volcar datos XML sobre la salida...

  1. out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><nombre>Linea de Codigo</nombre>");

En nuestro caso solo estamos devolviendo una etiqueta con el nombre de la web.

Es importante en este punto el recordar que los documentos XML empiezan con la siguiente cabecera:

  1. <?xml version="1.0" ?>

Aunque no extrictamente necesaria es buena práctica incluirla antes de nuestro contenido XML.

Vídeos sobre Java Servlet


3 comentarios en “Servlet que devuelve XML”

Víctor Cuervo

lineadecodigo

@Oscar,

Me alegro que te haya servido. 🙂

Víctor Cuervo

Oscar

Muchas gracias, todo esta muy claro y me fue de gran ayuda.

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*