2015-05-11 28 views
1

前一段時間,我在其中一個項目中發現了一些球衣根(@Path)資源類上的@WebService註釋。據我瞭解,當時它是一些遺留代碼或簡單地被濫用的JAX-WS註釋。最近,我偶然發現了這個post,其中爲了提到EJB而將JAX-RS服務與@WebService註釋混合在一起(作爲附註,我所做的項目根本沒有使用EJB,所以我仍然認爲它是不正確的使用@WebService)。現在我感到困惑的是,如果通常將@WebService和JAX-RS混合在一起是合理的。這是什麼情況?除了提到的EJB特性之外,還有什麼?REST風格的Web服務端點上的JAX-WS @WebService

回答

3

使用@WebService作爲SOAP WS的方法公開JAX-RS bean在技術上可能是可行的。它不會導致一個好的API設計。

考慮一些很常見的JAX-RS方法:

@GET 
@Path("/foos") 
@Produces("application/json") 
public Response getFoos() { 
    // get all Foos 
    List<Foo> foos = ...; 
    return Response.ok(foos).build(); 
} 

@GET 
@Path("/foos/{id}") 
@Produces("application/json") 
public Response getSingleFoo(@PathParam("id") String id) { 
    // get the Foo 
    Foo foo = ...; 
    return Response.ok(foo).build(); 
} 

這是immediatley明顯調用這些方法中的URL將如何構建,結果會是怎樣。

但暴露使用@WebService導致這些方法的許多問題:

  • 什麼是一個SOAP響應Response
  • 響應是否使用JSON作爲表示?
  • 如何調用方法?

我可以想象,沒有使用JAX-RS和JAX-WS公開的相同方法並不完全無關緊要的用例。它可以是一個有用的方法,但不適用於兩者。

不要這樣做。

+0

所以,這正是我最初的想法。謝謝! – yuranos87