与Jersey和JSR相关的JAX-RS

Mad*_*bæk 11 java jersey jsr maven

我试图了解Java中的一些概念:

  1. JSR:描述规范,但没有实际实现.例如,http://jsr311.java.net/是"用于RESTful Web服务的Java™API"的"主页".它是JSR-311所有实现的通用参考.
  2. 可以从http://mvnrepository.com/artifact/javax.ws.rs/jsr311-api下载JSR-311的接口(?),但是,除非你自己实现JSR-311,否则它们没有特别的价值?
  3. JSR通常/总是有一个参考实现.要找到它,你必须google"JSR XXX参考实现"或查看规范主页(例如http://jsr311.java.net/)
  4. 对于JSR-311,这个参考实现是Jersey.使用maven,您可以从http://mvnrepository.com/artifact/com.sun.jersey/jersey-server/1.9获取泽西服务器.由于Jersey根据http://mvnrepository.com/artifact/javax.ws.rs/jsr311-api中的接口提供了一个实现,因此您只需要在项目中添加Jersey作为依赖项,而不是jsr311-api本身.(这适用于所有JSR技术?)
  5. http://mvnrepository.com/artifact/javax.ws.rs/jsr311-apihttp://mvnrepository.com/artifact/com.sun.jersey/jersey-server/1.9作为项目中的依赖项放在一起导致类路径问题?

我是完全不喜欢的吗?

Qwe*_*rky 8

  1. 是的,这不是什么新鲜事.想JDBC,Java提供的接口(Connection,Statement,ResultSet等),但它是由数据库供应商来提供实现方式.

  2. 如果您使用的是JSR-311实现类似新泽西州或Apache CXF那么你会用你的注释类javax.ws.rs注释,如@Path,@GET,@Produces为什么你需要明确有JSR-311作为Maven的依赖等,这是.

  3. 是的,通常.看看wiki上的JSR列表.

  4. 您需要JSR和实现.注释在JSR中,实现提供支持类,如com.sun.jersey.spi.container.servlet.ServletContainer.

  5. 不,有必要兼顾两者(见第4点); 你不会得到类路径冲突.