Restlet le permite ejecutar sus servicios web en varios servidores "conectores", y es muy fácil cambiar de un servidor a otro. Normalmente ejecutamos nuestros servicios web en un clúster de servidores de aplicaciones Java EE Sun Glassfish, pero para probarlos usamos un conector que se vincula con el servidor HTTP simple para ejecutar los servicios web como una aplicación independiente. También hay conectores de servidor para AsyncWeb, Jetty, Grizzly y un servidor HTTP interno.
En el lado del cliente, debe considerar la biblioteca del cliente de Restlet. Es bastante conciso y está diseñado para encajar bien con los servidores de Restlet. Usamos el conector Apache HTTP Client.
Para las pruebas, hemos creado la clase Fetcher. Esto se implementa utilizando la API del cliente de Restlet. Para usarlo, se llama a más o menos el método fetch():
DTO person = fetch("/employee/1234");
DTO department = fetch("/department/" + person.getDepartment());
Fetch() tachuelas el nombre de recurso dado en el URI base de los servicios web (decir "http://localhost:8182"), utiliza la API del cliente Restlet a obtener una representación XML, luego deserializa el XML recuperado en un objeto de transferencia de datos (un POJO).
Puede ver que esto realmente hace que las pruebas unitarias sean bastante sencillas. Antes de que la unidad realice pruebas, enciende los servicios web en un servidor independiente como Simple o Jetty. Durante las pruebas unitarias, se obtienen DTO, árboles DOM, objetos json.org o lo que sea usando Fetcher, luego se aplican afirmaciones de prueba a lo que se devolvió. Si necesita probar en un nivel más detallado, puede usar el código del cliente de Restlet directamente.
El objetivo de mi pregunta fue descubrir cómo inicializar un servicio/componente web DENTRO del proceso. No quiero/no puedo ejecutarlo en un servidor remoto. Es necesario inicializar el servicio con instancias falsificadas ANTES de que se exponga como un servicio web. ¿Hay alguna manera de exponer una INSTANCIA de una clase/componente como un servicio? – IgorM
alguna respuesta? IgorM: ¿lo has resuelto? – Vatsala