2012-03-29 15 views
1

私はジャージーを使用しています。 私は残り-メソッドを持っている:wadlからjerseyクライアントのvoidメソッドを生成できません

@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が含まれている場合:あなたはそれが "PARAM" のノードが含まれて見ることができるように

<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> 

@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は次のようになります。 このエントリのvoidクライアントメソッドはうまく生成されます。

CreateProfileのvoidメソッドを生成するにはどうすればよいですか?

答えて

0

応答タイプ205は正しいです。

私は同じ問題を抱えていますが、それはクライアント部分の問題ではあるがサーバー部分ではないことを縫い合わせています。

resource.type(MediaType.APPLICATION_JSON).put(String.class, datenJson);を使用しましたが、同じ例外があります。

それが予想される戻り値の型(putの最初paremter(String.class))を除去した後に働いた:

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

をあなたは何の応答を持っていないのであれば、予想される応答のタイプを指定しないでください。

関連する問題