Apache CXF运行时JAX RS前端和'javax.ws.rs'(来自Oracle)之间的区别

时间:2015-09-18 07:54:52

标签: web-services rest maven cxf

我正在为一个项目开发Web服务,我应该在'javax.ws.rs'和'javax.ws.rs.core'的pom文件中添加依赖项。因为我使用Apache CXF来实现所需的REST API。我有几个问题:

  1. 这是什么'javax.ws.rs'(from Oracle),这只是JAx-RS API规范吗?如果这是真的,它只有API那么它有用吗?为什么我们不使用apache cxf或jersey并将其作为依赖添加到maven?
  2. 2.要实现我肯定需要使用'Apache CXF Runtime JAX RS Frontend',那么'javax.ws.rs'和'Apache CXF'之间有什么区别。

    请重新解释我的问题,如果没有意义,但它以不同的方式有意义。

1 个答案:

答案 0 :(得分:3)

  1. Object Identifier Types是包含javax.ws.rs的包。它只包含接口,因此要在项目中使用jax-rs,您需要实现这些接口,例如Jersey或CXF。
  2. (我猜1已经回答了这个问题。)
  3. 在其他情况下也会发生同样的情况,例如JAX-WS,你有API规范,你需要一个实现来实际使用它。在这种情况下,JAX-WS参考实现已经包含在jdk中,您不需要提供另一个,但是如果您愿意,可以提供CXF JAX-WS实现。

    Maven依赖

    当您使用CXF或Jersey时,您不需要为<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>${cxf.version}</version> </dependency> 显式包含依赖项,因为它已作为传递依赖项包含在那些中,这意味着它将自动下载。

    在您的情况下,要使用JAX-RS API Specification,您需要在pom文件中添加这些依赖项:

    javax.ws.rs

    这就是全部,您不需要为Build Action添加任何依赖项。