2010-07-14 15 views
8

He estado investigando JAX-RS últimamente porque me gusta mucho la plataforma Java y un estilo RESTful de desarrollo web. He leído mucho sobre el uso de JAX-RS para crear servicios web RESTful, pero ¿es posible usar JAX-RS para crear sitios web RESTful? Supongo que, más específicamente, ¿es posible usar JAX-RS como controlador (para recuperar los datos requeridos del servidor) y luego reenviar el control a un motor de visualización para representar el HTML apropiado?¿Es posible usar JAX-RS como un marco web?

He estado buscando en Google pero no he encontrado ningún recurso que te muestre cómo hacerlo.

Gracias por cualquier idea/ayuda.

+0

Me preguntaba lo mismo. Parte del problema fue conocer la forma de hacer la pregunta. – craig

+0

Terminé usando la implementación de Jersey de JAX-RS que le permite devolver una respuesta "Visible". Esto le permite usar JSP para devolver el marcado HTML. Creo que hay otras implementaciones que te permiten hacer el mismo tipo de cosas. Terminó funcionando muy bien y le da un control total de la respuesta que se devuelve al cliente. –

+0

Tengo dificultades para conectar los métodos visibles a las vistas. ¿Te importaría echar un vistazo a lo que he hecho? http://stackoverflow.com/questions/8978200/can-not-connect-jax-rs-service-to-mvc-template – craig

Respuesta

6

Creo que tiene dificultades con sus búsquedas de Google porque no muchas personas lo están haciendo. JAX-RS fue diseñado para servicios web, por lo que los desarrolladores no piensan en usarlo como un controlador para aplicaciones web. Sin embargo, no hay ninguna razón por la que no funcionaría.

Salida esta entrada del blog: JAX-RS as the one Java web framework to rule them all?

creo que es exactamente el tipo de cosa que usted está buscando.

3

dbyrne tiene razón en que casi nadie está haciendo esto. Es más convencional usar JAX-RS para volcar información a JSON o XML. Luego, le apetece el navegador web con un marco RIA (por ejemplo, Ext JS), que maneja la manipulación del DOM y la inyección de datos como se obtiene en formato JSON/XML. Este enfoque es poderoso. Puede escribir múltiples clientes, posiblemente sin navegador para el servicio, todos analizando el mismo JSON/XML. Puede escribir aplicaciones web de "una sola página", donde todo el intercambio de información ocurre a través de AJAX después de la carga de la página inicial. Le insto a investigar y considerar sus fortalezas y debilidades en el contexto de su problema particular.

Volviendo a su pregunta: la respuesta es "más o menos". Esta funcionalidad no es proporcionada directamente por la especificación JAX-RS (a partir de 1.1). Sin embargo, es en la implementación de referencia JAX-RS, Jersey, a través del objeto de respuesta Viewable. Consulte esta publicación en el blog si desea investigar más a fondo: http://blogs.oracle.com/sandoz/entry/mvcj. Quiero señalar que tengo no experiencia con este lado de Jersey. Ha sido agradable escribir servicios web que devuelven XML/JSON con Jersey, pero no puedo hablar con este negocio de plantillas HTML del lado del servidor.

Editar: dbyrne editó su respuesta para incluir una publicación de blog que apunta a la mencionada anteriormente. Creo que ambos hemos convergido aproximadamente en la misma respuesta.

3

Si realmente quieres confiar solo en JAX-RS para tu framework web, Jersey podría ser tu mejor opción. Tenga en cuenta que las características que obtendrá serán mínimas y obviamente no obtendrá todas las características como JSF, Wicket, etc.

Si sabe que su aplicación web va a funcionar para confiar en Spring, quizás debería considerar usar Spring MVC 3.0. Proporciona servicios web relajantes, por igual, y le brinda mejores funciones para que no tenga que implementar la mayoría de ellos por su cuenta. De acuerdo, Spring MVC 3.0 no es una implementación de JAX-RS y, de acuerdo con lo que dijo el desarrollador de Spring, parece que nunca harán de Spring MVC una implementación de JAX-RS, ya que existen bastantes implementaciones estables. Sin embargo, la sintaxis es bastante similar en mi opinión, o al menos pude entenderlos bastante rápido a pesar de que he estado usando Jersey por bastante tiempo.

Cuestiones relacionadas