Question

Quel est un bon moyen de restituer les données générées par un processus Java dans le navigateur?

J'ai beaucoup utilisé JSP et les divers cadres associés ( JSTL , Struts , Tapestry , etc.), ainsi que des cadres plus complets non liés à JSP ( GWT , OpenLaszlo ). Aucune des solutions n'a jamais été entièrement satisfaisante - dans la plupart des cas, le cadre est trop contraint ou trop complexe pour mes besoins, alors que d'autres nécessiteraient une refactorisation complète du code existant. De plus, la plupart des frameworks semblent avoir des problèmes de performances.

Actuellement, je penche pour la solution consistant à exposer mes données Java via un simple servlet qui renvoie JSON, puis à restituer les données à l'aide de PHP ou de Ruby. Cela présente l’avantage supplémentaire d’exposer instantanément mon service en tant que service Web, mais je me demande si je réinvente la roue ici.

Était-ce utile?

La solution

J'utilise personnellement Tapestry 5 pour la création de pages Web avec Java, mais je conviens que cela peut parfois être un peu excessif. J'envisagerais d'utiliser JAX-RS ( projet java.net , jsr311 ), il est assez simple à utiliser, il prend en charge le marshalling et le démultiplication d'objets vers / depuis XML dès la sortie de la boîte. . Il est possible de l’étendre pour prendre en charge JSON via Jettison .

J'ai essayé deux implémentations:

  • Jersey - l'implémentation de référence pour JAX-RS.
  • Resteasy - la mise en oeuvre que je préfère, un bon support pour la gestion et la dissémination d'une large gamme de formats. Aussi assez stable et a plus de fonctionnalités que Jersey.

Consultez le code suivant pour avoir une idée de ce que JAX-RS peut faire pour vous:

@Path("/")
class TestClass {
    @GET
    @Path("text")
    @Produces("text/plain")
    String getText() {
        return "String value";
    }
}

Cette petite classe va s'exposer à la racine du serveur (@Path sur la classe), puis exposer la méthode getText () à l'URI / texte et en autoriser l'accès via HTTP GET. L'annotation @Produces indique à l'infrastructure JAX-RS d'essayer de transformer le résultat de la méthode en texte brut.

Le moyen le plus simple de connaître les possibilités de JAX-RS consiste à lire le spécification .

Autres conseils

Nous utilisons des Stripes . Il vous donne plus de structure que les servlets simples, mais vous permet de contrôler vos URL via une annotation @UrlBinding. Nous l'utilisons pour streamer xml et json dans le navigateur pour des trucs ajax.

Vous pouvez facilement le consommer avec une autre technologie si vous souhaitez emprunter cette voie, mais vous pouvez réellement aimer développer des rayures.

Découvrez Restlet un bon cadre pour exposer votre modèle de domaine en tant que services REST (y compris JSON et sortie XML triviale). .

Pour restituer vos informations, vous pouvez peut-être utiliser GWT côté client et utiliser vos services de données? Si GWT ne fait pas flotter votre bateau, alors peut-être que JQuery le ferait?

Peut-être pourriez-vous générer les données au format XML et les restituer à l'aide de XSLT?

Je ne suis pas sûr que PHP ou Ruby soient la solution si Java n'est pas assez rapide pour vous!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top