2012-03-29 4 views
1

Я использую майку. У меня есть остальные-метод:Не удается создать недействительные методы для джерси-клиента из wadl

@PUT 
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 
@Path("/create-profile") 
public void createProfile (Profile profile) throws UnableTransferToEntity { 
    EntityManager em = emf.createEntityManager(); 
    try{ 
     em.getTransaction().begin(); 
     em.persist(EntityConversionUtils.transformReporterProfileToSimpleProfileEntity(profile)); 
     em.getTransaction().commit(); 
    }finally{ 
     em.close(); 
    } 
} 

Часть WADL генерироваться для этого метода:

<resource path="/create-profile"> 
      <method id="createProfile" name="PUT"> 
       <request> 
        <representation mediaType="application/json"/> 
        <representation mediaType="application/xml"/> 
       </request> 
      </method> 
     </resource> 

Я использую Maven-плагин для создания клиента:

<groupId>org.jvnet.ws.wadl</groupId> 
      <artifactId>wadl-maven-plugin</artifactId> 
      <version>1.1-SNAPSHOT</version> 

Проблема заключается в том, что не создаются методы void (putApplicationXml Asvoid), а только методы, которые ожидают ответа. Когда я пытаюсь использовать их даже с ожидаемым Void.class, я получаю исключение (возвращает статус ответа 204 No Content).

Если метод остальное содержит @QueryParam:

@DELETE 
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 
@Path("/remove-profile") 
public void removeProfile (@QueryParam("id") final int id){ 
    EntityManager em = emf.createEntityManager(); 
    SimpleProfileEntity simpleProfileEntity = em.find(SimpleProfileEntity.class, id); 

    new NotificationService().removeProfile(simpleProfileEntity.getNotificationProfile().getId()); 

    try{ 
     em.getTransaction().begin(); 
     em.remove(simpleProfileEntity); 
     em.getTransaction().commit(); 
    }finally{ 
     em.close(); 
    } 
} 

затем WADL выглядит как:

<resource path="/remove-profile"> 
      <method id="removeProfile" name="DELETE"> 
       <request> 
        <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="id" style="query" type="xs:int"/> 
       </request> 
      </method> 
     </resource> 

Как вы можете видеть, что содержит "PARAM" узел. Метод void client для этой записи генерируется хорошо.

Как создать метод void для моего CreateProfile?

ответ

0

Тип ответа 205 является правильным.

Я столкнулся с той же проблемой, что и проблема клиентской части, но не части сервера.

Я использовал resource.type(MediaType.APPLICATION_JSON).put(String.class, datenJson); и получал то же исключение.

Он работал после удаления ожидаемого типа возвращаемого значения (первый paremter из put (String.class)):

resource.type(MediaType.APPLICATION_JSON).put(datenJson); 

Так что не указывать ожидаемый тип ответа, если у вас нет никакого ответа.

Смежные вопросы