2015-05-11 34 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