Java-泽西岛,JAX RS
Posted
技术标签:
【中文标题】Java-泽西岛,JAX RS【英文标题】:Java- Jersey, JAX RS 【发布时间】:2011-08-26 13:41:52 【问题描述】:我有一些开发 Java 程序的经验。但是,我一直难以理解一些基础知识,例如构成 Java 企业应用程序的所有不同组件。
例如,我实现了从 J2ME 应用程序使用的 RESTful 和基于 SOAP 的 Web 服务,并为我的 MSC 执行了性能和成本测试。
为了开发基于 RESTful/SOAP 的 Web 服务,我使用了 Netbeans 中的向导功能。它使用 JAX-RS 来实现 REST Web 服务。然后我看到其他使用 JAX-RS 和 Jersey 等的教程。我经常迷失在 API、应用程序框架、配置文件、Java 版本等术语中。这里有几个问题
JAX-RS 是一种 API。 API 基本上是用于在 Java 中实现某种形式的功能的库的集合吗?
根据他们的网站“Jersey 是用于构建 RESTful Web 服务的开源、生产质量、JAX-RS (JSR 311) 参考实现。” Jersey 是另一个 API 还是与 JAX-RS 结合使用,两者之间有什么区别?
我如何识别我是否已经实现了此类 API 并知道我是否需要它们?
当我决定实现 RESTful Web 服务时,我只是按照 Netbeans 教程进行操作,向导提供了简单快捷的开发时间。我知道使用向导是因为它们速度快并且可以完成工作。 但是我想知道,当您被赋予编码任务时。您如何知道要使用哪些 API、框架、附加组件等。什么版本的 Java 与库等兼容。 只是我还是你有时会迷路?或者这将来自经验。
感谢您花时间阅读:)
【问题讨论】:
【参考方案1】:JAX-RS 不仅仅是一个 API。这是一个Java Specification Request (JSR)。这些定义了实现者必须支持的 API 和行为。如果您编写代码以使用 JSR 定义的 API,那么您可以选择在运行时使用哪个实现。
Jersey 是提供由 JSR 311 定义的 JAX-RS 规定的行为的代码。将其称为参考实现表明它受到 JSR 的创建者的支持,并且可能与 Oracle 的软件捆绑在一起。 JSR 311 的其他实现还包括Restlet、CXF 和RESTEasy。
通常,您会使用第 3 方库来实现我在上面第 2 点中提到的规范。您可能会考虑自己实现它的唯一原因是不存在合适的实现。
找出哪些 API 和规范可以帮助您的唯一方法是真正通过发现过程。 JSR 旨在成为为一般问题定义解决方案的常用方法,您可以在其中选择最适合您的实现。
【讨论】:
【参考方案2】:为给定任务选择正确的框架是 Java 生态系统中比较困难的事情之一,因为您有大量的选择。
我的策略是首先检查一些知名的解决方案(apache.org 就是其中之一),然后实施一个小的概念证明,看看该框架是否可以足够轻松地完成这项工作。不要使用向导,它们无助于发现新的框架。或者使用它们并尝试发现它们的极限......
【讨论】:
【参考方案3】:如果没有任何数学和物理知识,您就无法进行工程设计。花很多时间学习基础知识。如果您在开发中遇到麻烦,这些向导将无法再为您提供帮助...
-
JAX-RS 只是一个规范,而不是实现。实现有 Jersey、RestEasy 等。
见 1。
只要您不编写自己的 JAX-RS 实现,就不会实现 API。您可以在项目中使用它们。
【讨论】:
【参考方案4】:API 不提供任何实现代码(即执行实际处理的具体类)。 API 仅指定接口、注释、异常。可以有一些具有一些非常基本的核心行为的具体类,但仅此而已。标准 API(如 JAX-RS)的理念是为开发人员提供一些可以编写代码的东西,而不管底层平台和实现如何
Jersey 是实现 - 它包括许多具体的类,这些类实际处理 APIpromised 的业务。在 JAX-RS 案例中 - 它处理请求和响应。
您通常不会实现 API。你用一个。通常 JavaEE 标准 API 使用 javax.包,而实现使用不同的包 - com.sun
、org.apache
等。如果您只使用 javax.
接口而不使用具体类,这是一个好兆头。
【讨论】:
以上是关于Java-泽西岛,JAX RS的主要内容,如果未能解决你的问题,请参考以下文章
使用 JAX-RS Jersey 进行身份验证和授权的简便方法
使用 JAX-RS Jersey 进行身份验证和授权的简便方法
AsyncResponse ConnectionCallback 不会在泽西岛触发
java.lang.NoSuchMethodError: org.glassfish.hk2.api.ServiceLocatorFactory.creat - 泽西岛