当前位置: 首页 > 面试题库 >

是否可以定义一个与实现(使用eclipse和jersey分离)的jax-rs服务接口?

萧麒
2023-03-14
问题内容

我不知道标题是否令人困惑,但可以说我有这个界面:

@Produces(MediaType.APPLICATION_JSON)
@Path("/user")
public interface UserService {

    @GET
    @Path("/{userId}")
    public Response getUser(@PathParam("userId") Long userId);

}

为什么当我尝试实现版本时,Eclipse为重写的方法而不是为类重写注解?

class UserServiceImpl implements UserService {

    @Override
    @GET
    @Path("/{userId}")
    public Response getUser(@PathParam("userId") Long userId) {
        // TODO Auto-generated method stub
        return null;
    }

}

我试图为静态Web服务创建一个标准定义,然后使用不同的实现。使用标准jax-rs可能会发生这种情况吗?我是否会使用错误的注释?


问题答案:

只有在实现类上不使用 任何 jax-rs注释时,才可以使用注释继承:JSR-339的3.6节对此进行了说明。

您重新定义,@Path@Produces为方法重新定义,但不为类重新定义 。

因此,Path代码中的注释应该在具体的类上:

public interface UserService {

    @GET
    @Path("/{userId}")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getUser(@PathParam("userId") Long userId);

}


@Path("/user")
class UserServiceImpl implements UserService {

    @Override
    @GET
    @Path("/{userId}")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getUser(@PathParam("userId") Long userId) {
        // TODO Auto-generated method stub
        return null;
    }

}

顺便说一句,规范鼓励我们在具体的类上复制注释:

为了与其他Java EE规范保持一致,建议始终重复注释,而不要依赖注释继承。



 类似资料:
  • 假设我有一个接口,它表示我的重置服务,使用

  • 问题内容: 我正在尝试在JBoss jboss-eap-6.1 AS上运行一个简单的“ Hallo World”应用程序Jersey 2.3.1 REST服务。在web.xml中,我禁用了restEasy库。部署期间出现错误: JBWEB000289:Servlet com.sun.jersey.samples.helloworld.resources.MyApplication抛出load()异

  • 我有一个基本的REST web服务可以工作,但我确实有一个问题。下面是一个简短的代码片段。

  • dagger2是否可以和Guice一样与jersey一起使用? 是否有任何dagger2 servlet或dagger2 jersey项目?

  • 你好,我曾与JAX-WS合作开发基于SOAP的网络服务。现在我想使用REST,因为正如我从这里学习的那样,REST比SOAP有优势。 但从不同的文章中,我知道我们也可以从JAX-WS创建RESTful Web服务。但是大多数人说我们应该使用JAX-RS而不是JAX-WS。 我的问题是JAX-WS RESTful webservice和JAX-RS(泽西)之间有什么区别。JAX-RS相对于JAX-W

  • 问题内容: 我正在努力弄清Java中的一些概念: JSR:描述规格,但不包含实际的实现。例如,http://jsr311.java.net/是“ RESTful Web服务的Java™API”的“主页”。它用作JSR-311的所有实现的通用参考。 可以从http://mvnrepository.com/artifact/javax.ws.rs/jsr311-api下载JSR-311的接口(?),但