2013-07-04 12 views
7

Używam klasy javax.ws.rs.Path w mojej klasie REST w celu skonfigurowania ścieżki. Zachowuje się dziwnie ... Moja konfiguracja jest podobna do tej ... To nie są rzeczywiste pliki, ale pokazałem replikację, aby zrozumieć moje konfiguracje.@ Konfiguracja konfiguracji na poziomie klasy i poziomu metody

Klasa1

@Path("/v2") 
public class BoxResource {   
    @POST 
    @Path("/ie/box") 
    public Response createbox(...) { 
    ... 
    } 
} 

Class2

@Path("/v2/ie") 
public class BagResource {   
    @POST 
    @Path("/bag") 
    public Response createbag(...) { 
     ... 
    }   
} 

Kiedy złożyć żądanie HTTP jak /v2/ie/box, zgłasza błąd konfiguracji serwera. Ale jeśli zmienię Class2 jak poniżej, działa dobrze.

@Path("/v2/ie/bag") 
public class BagResource {    
    @POST 
    public Response createbag(...) { 

    } 
} 

Dlaczego jest podobny ... Czy konfiguracja @path na poziomie klasy i poziomie metody różni się?

Odpowiedz

13

Żądanie /v2/ie/box jest odwzorowywany Class2 bo znaczy ma

@Path("/v2/ie") 

jako adnotacji klasy.

Najdłuższy Path wygrywa w tym przypadku. Class1 nigdy nie jest oglądany, ponieważ ma krótszą adnotację klasy @Path("/v2").

Od Class2 nie ma metody, która mapuje do pozostałej /box, otrzymasz 404 Not Found.

Zalecenie

  1. Zastosowanie @Path adnotacje tylko na metodach: @Path("/v2/ie/bag") i @Path("/v2/ie/box")LUB
  2. użytku jedna klasa zasób z klasy adnotacji @Path("/v2/ie") i sposób adnotacji o @Path("/bag") i @Path("/box").

Edycja

patrz również "3.7 Wnioski Dopasowane do metod zasoby" the JAX-RS 2.0 spec.

+0

Po wprowadzeniu zmian stworzyłem ścieżkę klasową ("/ v2") dla obu klas, nawet wtedy powoduje to ten sam błąd –

+0

Proszę przeczytać specyfikację, którą podłączyłem w mojej odpowiedzi. I proszę dodaj swój * prawdziwy * kod do swojego pytania. –

+0

Nie rozumiem specyfikacji ... I są inne metody w mojej klasie pól, których ścieżka jest jak/v2/ow/... Więc nie można utworzyć jednego zasobu .. Również przepraszam może dodać prawdziwy kod .. jeśli potrzebujesz informacji mogę dostarczysz –

Powiązane problemy