2012-08-23 5 views
9

Mit JAX-RS, ist es möglich, mehr als eine Klasse zu einem einzigen Pfad zugewiesen zu haben? Ich versuche, so etwas zu tun:JAX-RS mehrere Klassen mit dem gleichen Pfad

@Path("/foo") 
public class GetHandler { 
    @GET 
    public Response handleGet() { ... 
} 

@Path("/foo") 
public class PostHandler { 
    @POST 
    @Consumes(MediaType.APPLICATION_JSON) 
    public Response handlePost() { ... 
} 

Diese scheinbar nicht erlaubt ist, wie ich:

com.sun.jersey.api.container.ContainerException: A root resource, class PostHandler, has a non-unique URI template /foo 

ich immer eine Klasse Anfragen bearbeiten erstellen und dann an Hilfsklassen delegieren. Ich hatte gehofft, dass es einen Standard gibt.

Antwort

2

Die JAX-RS-Spezifikation verbietet keine solche Zuordnung. Zum Beispiel, Resteasy JAX-RS-Implementierung ermöglicht es. Das Feature sollte Jersey-spezifisch sein.

In Bezug auf:

Ich kann immer eine Klasse erstellen, um Anfragen zu bearbeiten und dann auf Hilfsklassen zu delegieren. Ich hatte gehofft, dass es einen Standard gibt.

Normalerweise haben Sie die Ressourcenklassen mit dem gleichen Namen wie der Pfad:

@Path("/foo") 
public class FooResource { 
    @GET 
    @Path("/{someFooId}") 
    public Response handleGet() { 
     ... 
    } 

    @POST 
    @Consumes(MediaType.APPLICATION_JSON) 
    public Response handlePost() { 
     ... 
    } 
} 
2

Sie nicht mehrere Ressourcen zugeordnet auf den gleichen Weg haben kann. Ich habe das vor ein paar Tagen versucht und bin bei ähnlichen Fehlern gelandet.

Am Ende tat ich Unterpfade wie/api/Kontakte für eine Ressource und/api/Tags für eine andere.

Der einzige andere lange Weg besteht darin, Ressourcen in mehreren Paketen zu erstellen und dann für jede unterschiedliche App zu erstellen.

Verwandte Themen