2010-07-14 6 views
8

J'ai regardé JAX-RS récemment parce que j'aime vraiment la plate-forme Java et un style de développement web RESTful. J'ai beaucoup lu sur l'utilisation de JAX-RS pour créer des services Web RESTful, mais est-il possible d'utiliser JAX-RS pour créer des sites Web RESTful? Je suppose plus précisément, est-il possible d'utiliser JAX-RS en tant que contrôleur (pour récupérer les données requises du serveur), puis transmettre le contrôle à un moteur de vue pour afficher le code HTML approprié?Est-il possible d'utiliser JAX-RS en tant que framework web?

J'ai été googling mais je n'ai trouvé aucune ressource qui vous montre comment faire cela.

Merci pour toute idée/aide.

+0

Je me demandais la même chose. Une partie du problème était de savoir comment poser la question. – craig

+0

J'ai fini par utiliser l'implémentation Jersey de JAX-RS qui vous permet de retourner une réponse "visible". Cela vous permet d'utiliser les JSP pour renvoyer le balisage HTML. Je crois qu'il existe d'autres implémentations qui vous permettent de faire le même genre de chose. Il a fini par fonctionner très bien et vous donne le plein contrôle de la réponse renvoyée au client. –

+0

Je rencontre des difficultés pour connecter les méthodes Viewable aux vues. Pourriez-vous regarder ce que j'ai fait? http://stackoverflow.com/questions/8978200/can-not-connect-jax-rs-service-to-mvc-template – craig

Répondre

6

Je pense que vous rencontrez des difficultés avec vos recherches google, car peu de gens le font. JAX-RS a été conçu pour les services Web, les développeurs ne pensent donc pas à l'utiliser comme contrôleur pour les applications Web. Cependant, il n'y a aucune raison que cela ne fonctionne pas.

Découvrez ce blog: JAX-RS as the one Java web framework to rule them all?

Je pense que c'est exactement le genre de chose que vous recherchez.

3

dbyrne a raison de dire que presque personne ne le fait. Il est plus conventionnel d'utiliser JAX-RS pour exporter des informations vers JSON ou XML. Ensuite, vous avez envie du navigateur web avec un framework RIA (par exemple Ext JS), qui gère la manipulation du DOM et l'injection de données comme récupérées sous forme JSON/XML. Cette approche est puissante. Vous pouvez écrire plusieurs clients, éventuellement sans navigateur, pour le service, tous analysant le même JSON/XML. Vous pouvez écrire "une page" webapps, où tous les échanges d'informations se fait via AJAX après la pageload initiale. Je vous exhorte à enquêter et à considérer ses forces et ses faiblesses dans le contexte de votre problème particulier.

Retour à votre question: la réponse est "en quelque sorte". Cette fonctionnalité n'est pas directement fournie par la spécification JAX-RS (à partir de 1.1). Cependant, est dans l'implémentation de référence JAX-RS, Jersey, via l'objet de réponse Viewable. Voir ce billet de blog si vous voulez enquêter plus loin: http://blogs.oracle.com/sandoz/entry/mvcj. Je tiens à souligner que j'ai aucune expérience avec ce côté de Jersey. Il a été agréable d'écrire des services Web XML/JSON-retour avec Jersey, mais je ne peux pas parler à cette entreprise de modélisation HTML côté serveur.

Modifier: dbyrne a édité sa réponse pour inclure un article de blog qui pointe vers celui mentionné ci-dessus. Je pense que nous avons tous deux convergé vers la même réponse.

3

Si vous voulez vraiment compter uniquement sur JAX-RS pour votre infrastructure web, Jersey pourrait être votre meilleur choix. Gardez à l'esprit les fonctionnalités que vous obtenez de ce qui va être strict minimum et vous n'allez évidemment pas obtenir tous les gadgets comme JSF, Wicket, etc.

Si vous savez que votre application Web va Pour compter sur Spring, vous devriez peut-être envisager d'utiliser Spring MVC 3.0. Il offre des services Web reposants et vous offre de meilleures fonctionnalités, de sorte que vous n'avez pas besoin de les implémenter vous-même. Certes, Spring MVC 3.0 n'est pas une implémentation de JAX-RS et basé sur ce que le développeur Spring a dit, il semble qu'ils ne feront jamais de Spring MVC une implémentation de JAX-RS puisqu'ils sont déjà assez stables. Cependant, la syntaxe est assez similaire à mon avis, ou du moins j'ai pu les comprendre assez rapidement même si j'ai utilisé Jersey pendant un certain temps.