Question

Considérez la RESTEasy simple suivante (JAX-RS) Service:

@Path("/example-service")
public interface ExampleService {

    @Path("/ping")
    @GET
    public String ping(String message);

}

Je veux définir des détails JAXRS sur l'interface plutôt que la classe je peux utiliser le joli cadre client, à savoir:

ExampleService client = ProxyFactory.create(ExampleService.class, "http://localhost:8080");

Tout fonctionne bien, sauf quand je veux présenter quelques-unes des injections de contexte de RESTEasy, à savoir: @Context. Naïvement, considérer les points suivants:

@Path("/example-service")
public interface ExampleService {

    @Path("/ping")
    @GET
    public String ping(@Context HttpServletRequest request, String message);

}

Cela ne signifie évidemment pas de sens parce que cette injection @Context est orthogonale et ne fait pas partie de l'interface (par ailleurs, même si je peux aller au-delà de la laideur de cette interface du point de vue du client et passe null, il est actuellement un bug empêchant de ce travail: RESTEASY-311 )

Comment puis-je utiliser le balisage de JAXRS d'interface (et donc tirer parti du beau cadre client RESTEasy) et accéder à des injections de @Context orthogonales en même temps?

Était-ce utile?

La solution

Cette question est formulée, cela peut être facilement résolu par une injection de terrain @Context dans la mise en œuvre. Ce qui compliquait cette situation particulière était l'utilisation de « ejb-intégration » de RESTEasy qui récupère la mise en œuvre de JNDI. Cette solution n'a pas (encore) effectuer des injections supplémentaires REST sur la mise en œuvre récupérée à partir du conteneur EJB. Tout cela sera plus facile avec l'intégration à venir JEE6 / JAXRS.

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