Lors de l'utilisation de Netbeans et de l'écriture d'un point de terminaison REST arbitraire, NetBeans affiche toujours un avertissement indiquant que la méthode peut être convertie en asynchrone.Est-ce que chaque point de terminaison REST doit être asynchrone dans Java EE?
Par exemple, je crée la méthode suivante:
@GET
@Path("/test")
public String hello() {
return "Hello World!";
}
NetBeans montre alors un avertissement, voir ci-dessous:
En cliquant sur l'info-bulle génère ce code:
private final ExecutorService executorService = java.util.concurrent.Executors.newCachedThreadPool();
@GET
@Path(value = "/test")
public void hello(@Suspended final AsyncResponse asyncResponse) {
executorService.submit(new Runnable() {
@Override
public void run() {
asyncResponse.resume(doHello());
}
});
}
private String doHello() {
return "Hello World!";
}
La même chose est vraie lors de la création d'un PUT ou méthode POST. Étant donné que NetBeans affiche toujours un avertissement lorsqu'un noeud final REST est implémenté, cela indique que l'écriture de points de terminaison synchrones est considérée comme incorrecte/mauvaise pratique. Donc, chaque point de terminaison REST devrait-il être asynchrone? Pourquoi?
ce qui se passerait si deux les utilisateurs demandent un accès simultané à la même ressource? –
Pour autant que j'ai compris, le serveur a un certain nombre de threads disponibles dans son pool de threads. Chaque fois qu'une nouvelle requête arrive, le serveur assigne l'un de ses threads à cette requête et libère le thread dans le pool une fois la requête traitée (quelle que soit la ressource à laquelle on accède). Cela signifie également que JAX-RS est thread-safe par défaut. – Jakob
Quelle est votre version de Netbeans? – user7294900