什么是JAX-RS实现?

lix*_*ang 20 rest jax-rs jersey resteasy

我一直试图弄清楚如何使用JAX-RS很长一段时间.我从最基本的概念开始,然后逐渐理解注释风格的编程,@ Path,@ Get,@ Post等的含义.

据我所知,对于很多地方提到的内容,JAX-RS是一个专注于将Java注释应用于普通Java对象的框架(第27页,Bill Burke,RESTful Java).

然后我超越了这一点感到困惑.如果JAX-RS本身是一个定义处理注释的API以实现RESTful Web服务的框架,那么"JAX-RS的实现"的含义是什么,例如"Jersey"和"JBoos Resteasy".JAX-RS顶部的另一层?我们为什么需要它们?

有人能为我提供一些见解吗?非常感谢!!!

Hei*_*upp 28

JAX-RS是Java规范请求311(JSR-311)中定义的标准,Jersey/RESTEasy是它的实现.

实现意味着规范说"如果你放@GET("/foo")一个方法(bar()),你可以访问数据X" - 现在在app服务器中,有人需要进入并实际读取你部署的代码,用@GET注释解析字节代码和然后,如果用户实际浏览到例如http:// localhost/foo,则获取此Web请求bar()以及将返回值bar()转换为http答案(例如,以XML或JSON表示).

因此,名为"JAX-RS"的规范仅提供例如@GET的语法和语义,但解析请求,调用正确方法,编组结果值等的工作需要通过实现规格.

该标准的2.0版本已经开始作为JRS-339开始.

另见http://en.wikipedia.org/wiki/Jax-rs

  • 得到它了!!在另一篇文章中,Mike还提到,如果没有所有这些实现,JAX-RS只是一个接口的工作台.谢谢! (3认同)

Rob*_*ond 24

JAX-RS是使用Java的RESTful Web服务的规范.Java EE中包含一个参考实现,但由于它是一个规范,因此可以编写其他框架来实现规范,包括Jersey,Resteasy等.

  • Jersey实际上是在实现javax.ws.rs.*类.如果不使用某些实现,您所拥有的只是接口类,它们无法自行执行任何操作.JAX-RS的所有实现都使用相同的接口. (6认同)
  • 对,就是这样!我知道它们是实现,但我无法理解“JAX-RS 的实现”的含义。看,我创建了一个简单的其余类并导入了命名空间,例如“javax.ws.rs.GET”、“javax.ws.rs.Path”、“javax.ws.rs.Produces”;“javax.ws.rs” .core.MediaType”。然后我使用 Tomcat 服务器部署了这个类,并将所有球衣 jar 放入 lib 中并运行它。球衣用在哪里了??导入的四个命名空间是否属于jersey?我用 Resteasy 方法创建了另一个应用程序,其中仍然使用了四个导入。我很困惑... (2认同)