java - 与 Jersey 和 JSR 相关的 JAX-RS

标签 java maven jersey jsr

我正在尝试了解 Java 中的一些概念:

  1. JSR(s):描述规范,但不包含实际实现。例如。 http://jsr311.java.net/是“Java™ API for RESTful Web Services”的“家”。它作为所有 JSR-311 实现的通用引用。
  2. 可以从 http://mvnrepository.com/artifact/javax.ws.rs/jsr311-api 下载 JSR-311 的接口(interface)(?) ,但是,除非您自己实现 JSR-311,否则这些没有特别的值(value)?
  3. JSR(s) 通常/总是有一个引用实现。要找到它,您必须用谷歌搜索“JSR XXX 引用实现”或查看规范主页(例如 http://jsr311.java.net/)
  4. 对于 JSR-311,此引用实现是 Jersey .使用 maven 你可以从 http://mvnrepository.com/artifact/com.sun.jersey/jersey-server/1.9 得到 Jersey 服务器.自从 Jersey 根据 http://mvnrepository.com/artifact/javax.ws.rs/jsr311-api 中的接口(interface)提供了一个实现。 ,您只需要将 Jersey 添加为项目中的依赖项,而不是 jsr311-api 本身。 (这适用于所有 JSR 技术?)
  5. 将两个http://mvnrepository.com/artifact/javax.ws.rs/jsr311-apihttp://mvnrepository.com/artifact/com.sun.jersey/jersey-server/1.9因为项目中的依赖项可能会导致类路径问题?

我是完全离开还是进入某事?

最佳答案

  1. 是的,这不是什么新鲜事。想想JDBC,java提供了 接口(interface)(ConnectionStatementResultSet 等)但它已启动 数据库供应商提供实现。

  2. 如果您使用的是 JSR-311 实现,例如 Jersey 或 Apache CXF 然后您将使用 javax.ws.rs 注释来注释您的类,例如 @Path@GET@Produces 等。这就是为什么您需要明确地将 JSR-311 作为 Maven 依赖项。

  3. 是的,通常。看看 JSR list on wiki .

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

  5. 不,有必要将两者都作为依赖项(参见第 4 点);你不会遇到类路径冲突。

关于java - 与 Jersey 和 JSR 相关的 JAX-RS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8476820/

相关文章:

java - 如何从仅包含整数部分的 BegDecimal 数字生成字符串

maven - Javascript Web 应用程序和 Java 服务器,全部在 Maven 中构建或使用 Grunt for Web 应用程序?

java - "Simple"表达式语言 - 算术运算符?

Java - 扩展似乎正在调用其他类的构造函数

java - Android 解码 PHP 文件编码的 JSON

maven - 如何使用命令行从 Maven 构建中排除某些模块

filtering - 在 Maven 过滤中支持多行属性?

java - MOXy:抛出实体类型与处理程序返回值不同的 WebApplicationException

spring-boot - 使用自定义 Gson 覆盖 Spring-Boot 的 GsonAutoConfiguration

rest - 如何使用 Maven 将 Jersey 与 Tomcat 集成