2012-09-11 2 views
2

Im는 클라이언트 응답에서 Jersey Generic List를 가져 오는 중임을 나타냅니다. 나는 그것을 어떤 이유로 엔티티로 가져와야한다.JERSEY - 응답의 일반 목록에 액세스

@XmlRootElement(name="list") 
@XmlSeeAlso({RESTDomain.class}) 
public class JAXBContainer<T> { 
    private List<T> items = new ArrayList<T>(); 

    public JAXBContainer() { } 

    public JAXBContainer(List<T> items) { 
     this.items = items; 
    } 

    @XmlElementWrapper(name="items") 
    @XmlAnyElement(lax=true) 
    public List<T> getItems() { 
     return items; 
    } 

    public void setItems(List<T> items) { 
     this.items = items; 
    } 

    @XmlAttribute 
    public int getItemsSize() { 
     return this.items.size(); 
    } 

위 genericEntity와 컨테이너를 반환하는 resopnse

@GET 
    @Produces({MediaType.APPLICATION_XML}) 
    public Response getREST(){ 
     RESTDomain domain = new RESTDomain(); 
     domain.setName("Adams"); 
     domain.setPlace("Zurich"); 
     List<RESTDomain> restDomains = new ArrayList<RESTDomain>(); 
     restDomains.add(domain);   
     JAXBContainer<RESTDomain> jAXBContainer= new JAXBContainer<RESTDomain>(restDomains);   
     GenericEntity<JAXBContainer<RESTDomain>> genericEntity = new GenericEntity<JAXBContainer<RESTDomain>>(jAXBContainer){}; 


     return Response.ok(genericEntity).build(); 

    } 

임 내 일반 목록입니다. 내가 알고있는 genericEntity 내 목록 내 클라이언트에서 내 엔터티를 얻을 수 있지만 문제는 내가 어떤 이유로 내 JAXBContainer를 사용해야합니다.

@Test 
      public void restGet() throws JAXBException{  
       ClientConfig cc = new DefaultClientConfig();   
       client = Client.create(cc); 
      String baseURI ="http://localhost:3555/SampleREST/rest/sample"; 
        WebResource webResource = client.resource(baseURI);   
        JAXBContainer<RESTDomain> jAXBContainer= webResource.get(new GenericType<JAXBContainer<RESTDomain>>(){});   
        System.out.println("response:: "+jAXBContainer.getItemsSize()); 
    } 

내 문제는 원하는하지만 컨테이너의 크기가 내가 여기 실종 무엇 0입니다으로 메신저 GenericType와 JAXBContainer로 반응을 얻고있다? 마샬링 및 언 마샬링 메커니즘을 사용해야합니까?

하지만 브라우저에서이 URI를 요청할 때 올바른 형식의 XML을 얻지 만 클라이언트에서 실패하거나 클라이언트에서 엔터티를 추출하는 다른 방법이 있습니다. 미리 감사드립니다.

답변

0

수락 콘텐츠 유형을 클라이언트의 어느 곳에서나 설정하고있는 것은 아닙니다. 시도해보기 : webResource.accept ("application/xml")

관련 문제