2011-03-01 4 views
0

나는 오히려 흥미로운하게 발음 오류로 실행했습니다를 주석 JAX-RS 리소스 매개 변수 주석 중 하나로 주석을 달았습니다.) "하게 발음 오류는 서비스

저는 enunciate를 사용하여 XML과 JSON을 지원하는 SOAP 및 REST API를 모두 구축하고 있습니다. Enunciate는 모든 service. * 및 service.impl. * 클래스를 사용하도록 구성됩니다. 각 서비스에는 enunciate 문서의 모든 Javadoc과 [@GET @POST @PUT @ DELETE] 및 @Path 주석이 포함되어 있습니다. 각 서비스 impl에는 클래스 @Path 주석이 포함되어 있습니다.

예 인터페이스 :

public interface myService { 

    @GET 
    @Path("/something") 
    Object doGetAll(); 

    @GET 
    @Path("/something/{id}" 
    Object doGetOne(@PathParam("id") Integer id); 

    @PUT 
    @Path("/something") 
    Object doCreate(/*params*/); 

    @POST 
    @Path("/something/{id}") 
    Object doUpdate(@PathParam("id") Integer id, /*params*/); 

    @DELETE 
    @Path("/something/{id}") 
    Object doDelete(@PathParam("id") Integer id); 
} 

예 구현 : 나는 "@POST"내 서비스 "@PUT"주석을 주석 때

@Path("/base") 
public class myServiceImpl implements myService { 

    Object doGetAll() {/*stuff*/} 

    Object doGetOne(Integer id) {/*stuff*/} 

    Object doCreate(/*params*/) {/*stuff*/} 

    Object doUpdate(Integer id, /*params*/) {/*stuff*/} 

    Object doDelete(Integer id) {/*stuff*/} 
} 

이 잘 실행하게 발음. 그러나 다시 언급하면 ​​위의 메시지와 함께 실패합니다. 이 캐치는 2 ~ 8 가지 모델을 포함하는 서비스를 제공한다는 것입니다 (예 : 내 addressService는 주소, 주 및 국가의 3 가지 개체를 통합 함). 따라서 주소 컨텍스트 (주소 사용)를 다음과 같이 지정했습니다.

IMPL : 방법에

@Path("/address") 
public class myAddressServiceImpl implements myAddressService {} 

: 나는 더 많은 정보를 제공 할 수있는 경우

@GET 
@Path("/{id}") 
findAddressById(); 

@GET 
@Path("/states/{id}") 
findStateById(); 

@GET 
@Path("/countries/{id}") 
findCountryById(); 

, 나는 드리겠습니다. 이것은 오히려 실망스런 문제였습니다. 왜냐하면 필자가 enunciate를 잘못 구성했는지 (의심 스러울 것입니다. 기본 구성입니다) 또는 JAX-RS가 할 수있는 일을 늘리고 있는지 확신 할 수 없기 때문입니다. 자습서를 읽고, Javadoc을 검색하고보고 (enunciate 및 JAX-RS 용) 좋은 시간을 보냈지 만 많은 행운이 없었습니다.

누구든지이 문제를 보았습니까? 내가 그것을 고치기 위해 무엇을 할 수 있을지에 대한 어떤 생각? 나는 이것이 그 "no-duh"수정 중 하나가 될 것 같은 느낌을 얻고있다 ... 단지 그것에 나의 손가락을 넣을 수 없다.

도움을 미리 감사드립니다.

답변

4

"엔티티 매개 변수"는 REST 요청의 본문에 의해 지정된 매개 변수입니다. 즉, 요청 본문을 읽고 해당 매개 변수 유형의 객체로 역 직렬화하려고 시도한 다음 요청이 호출됩니다.

본문은 하나만있을 수 있으므로 하나의 엔티티 매개 변수 만있을 수 있습니다.

다른 매개 변수 등 @QueryParameter, @PathParameter, 주석 수있다

그래서 메시지가 정말 말을하려고이 오류가 @POST 및 @PUT 당신, 주석 모든 방법에 대해 "무엇 일부 주석을 사용하여 주석을 달지 않은 하나의 매개 변수 만 가질 수 있습니다. 다른 모든 매개 변수에는 매개 변수 주석이 있어야합니다. "

+0

오! 그것은 "no duh"타입 거래였습니다. Ryan에게 도움을 주신 것에 대해 너무 고마워, enunciate가 대단했습니다! – MaddHacker