Java RESTful web服务端点上的JAX-WS@WebService

Java RESTful web服务端点上的JAX-WS@WebService,java,jax-rs,jax-ws,ejb-3.0,Java,Jax Rs,Jax Ws,Ejb 3.0,不久前,在其中一个项目中,我在一些jersey根(@Path)资源类上找到了@WebService注释。据我当时的理解,这是一些遗留代码,或者只是一个误用的JAX-WS注释。最近,我偶然发现,为了EJB,将JAX-RS服务与@WebService注释混合在一起(顺便说一句,我所从事的项目根本没有使用EJB,所以我仍然认为这是对@WebService的不当使用)。由于所有这些,我现在感到困惑,如果将@WebService和JAX-RS混合在一起总体上是合理的,那么情况是什么呢?除了上面提到的EJB

不久前,在其中一个项目中,我在一些jersey根(@Path)资源类上找到了@WebService注释。据我当时的理解,这是一些遗留代码,或者只是一个误用的JAX-WS注释。最近,我偶然发现,为了EJB,将JAX-RS服务与@WebService注释混合在一起(顺便说一句,我所从事的项目根本没有使用EJB,所以我仍然认为这是对@WebService的不当使用)。由于所有这些,我现在感到困惑,如果将@WebService和JAX-RS混合在一起总体上是合理的,那么情况是什么呢?除了上面提到的EJB特性之外,还有什么吗?

使用
@WebService
将JAX-RSbean公开为SOAP WS的方法在技术上是可能的。它不会导致一个好的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();
}
@GET
@路径(“/foos”)
@生成(“应用程序/json”)
公共响应getFoos(){
//得到所有食物
列出foos=。。。;
返回Response.ok(foos.build();
}
@得到
@路径(“/foos/{id}”)
@生成(“应用程序/json”)
公共响应getSingleFoo(@PathParam(“id”)字符串id){
//得到食物
Foo-Foo=。。。;
返回Response.ok(foo.build();
}
很明显,调用这些方法的URL的结构以及结果是什么

但是使用
@WebService
公开这些方法会导致许多问题:

  • SOAP响应中的
    响应是什么
  • 响应会使用JSON作为表示吗
  • 这些方法是如何调用的
我可以想象,如果同时使用JAX-RS和JAX-WS来公开相同的方法是有意义的,那么没有一个用例是不完全平凡的。它既可以是一种有用的方法,也可以是两种都有用的方法


不要这样做。

所以,这正是我最初的想法。谢谢