Comment déployer une application JAX-RS sur un environnement Java SE?


Je veux coder un service Web RESTful avec JAX-RS, et je veux le publier sur localhost comme http://localhost:[port]. J'ai lu ce qui suit dans cette réponse :

Les spécifications Java SE 7 (JSR 336) et Java SE 8 (JSR 337) n'incorporez pas le composant JAX-RS. Cependant, les applications JAX-RS peut être publié dans des environnements Java SE (en utilisant RuntimeDelegate) et Les implémentations JAX-RS peuvent également prendre en charge la publication via JAX-WS.

Le RuntimeDelegate est mentionné. Comment puis-je l'utiliser? S'il y a de bons exemples sur la façon d'y parvenir, veuillez les partager avec moi.

Author: Community, 2017-04-07

2 answers

Pour déployer une application JAX-RS dans un environnement Java SE, vous pouvez utiliser RuntimeDelegate et un serveur HTTP pris en charge par votre implémentation JAX-RS. Un conteneur de servlet n'est pas requis.

Le JSR 339 indique ce qui suit:

Dans un environnement Java SE, une instance configurée d'une classe de point de terminaison peut être obtenue en utilisant la méthode createEndpoint de RuntimeDelegate. L'application fournit une instance de Application et le type de point de terminaison requise. UNE mise en œuvre PEUT soutenir zéro ou plusieurs types de points de terminaison de tout type souhaité.

La façon dont l'instance de classe de point de terminaison résultante est utilisée pour publier l'application est en dehors de la portée de cette spécification.

Jersey, l'implémentation de référence JAX-RS, prend en charge une plagede serveurs HTTP que vous pouvez utiliser pour déployer des applications JAX-RS en Java SE.

, Par exemple, avec Grizzly et RuntimeDelegate, vous pouvez avoir la suivante:

public class Example {

    public static void main(String[] args) {

        ResourceConfig resourceConfig = new ResourceConfig();
        resourceConfig.register(GreetingsResource.class);

        HttpHandler handler = RuntimeDelegate.getInstance()
                .createEndpoint(resourceConfig, HttpHandler.class);

        HttpServer server = HttpServer.createSimpleServer(null, 8080);
        server.getServerConfiguration().addHttpHandler(handler);

        try {
            server.start();
            System.out.println("Press any key to stop the server...");
            System.in.read();
        } catch (Exception e) {
            System.err.println(e);
        }
    }

    @Path("/greetings")
    public static class GreetingsResource {

        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String getGreeting(){
            return "Hello from the other side.";
        }
    }
}

La demande sera disponible à l'adresse http://localhost:8080/greetings.

Les dépendances suivantes sont requises pour l'exemple ci-dessus:

<dependency>
    <groupId>org.glassfish.grizzly</groupId>
    <artifactId>grizzly-http-server</artifactId>
    <version>2.3.30</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-grizzly2-http</artifactId>
    <version>2.25.1</version>
</dependency>

Les autres implémentations prises en charge incluent:

Maillot de documentation décrit également d'autres modes de déploiement pour un environnement Java SE sans RuntimeDelegate.

 4
Author: Cassio Mazzochi Molin, 2017-04-14 20:09:34

Afin de créer un service Web REST, vous ne pouvez pas seulement utiliser Java SE. Je me trompe, Cassio a mentionné que JAX RS peut être implémenté avec seulement Java SE. Je vous ai suggéré d'en savoir plus sur les différences entre Java SE et Java EE, par exemple sur cette discussion .

Pour répondre à votre question, vous pouvez créer assez facilement un service Web REST en ajoutant simplement une dépendance api javaee 7, puis en déployant votre projet d'archive Web (war) dans un serveur d'applications, par exemple wildfly, payara, ou glashfish et voici un exemple comment construireService Web REST avec Java EE 7 . Une autre façon de construire un service Web REST avec des frameworks Spring et ils fournissent un tutoriel simple et bon sur REST avec Spring.

 -1
Author: Sukma Wardana, 2017-05-23 11:54:16