在 Restlet 之后,Jersey 是另一个流行的开源框架,用于在 Java 中创建 RESTful web 服务。 Jersey 符合 JAX-RS 规范,实际上它是 JAX-RS (JSR 311)(http://jsr311.java.net/nonav/releases/1.1/index.html) 规范的参考实现。在上一篇文章中,我们看到了 Restlet HelloWorld Example,今天我们将看到 Jersey HelloWorld Example。通常,当开发人员考虑使用 Java 创建 RESTful Web 服务时,他们假设使用 Java EE 应用程序服务器是创建此类应用程序的唯一方法。但是,有更简单、轻量级的替代方法可以使用 Java SE 创建可用的 RESTful 应用程序。本教程演示了一种使用 Grizzly Web 服务器和 Jersey REST 框架的替代方案。 Grizzly 的主要用例是 GlassFish 应用服务器的 Web 服务器组件。
这是使用 Jersey REST 框架创建的简单 RESTful Web 服务。当 GET 请求发送到“/hello”URL 时,此服务会返回一条消息。如果请求还包含请求参数,则在响应消息中使用它。
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; @Path(value = "/hello") public class JerseyHelloWorldRESTService { @GET @Path(value="/{param}") public String hello(@PathParam(value = "param") String name){ return "Hello " + name + ", Welcome to Jersy world of RESTful web service"; } }
先发球衣灰熊…
Jun 01, 2016 3:57:19 PM com.sun.jersey.api.core.PackagesResourceConfig init INFO: Scanning for root resource and provider classes in the packages: Jun 01, 2016 3:57:19 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses INFO: Root resource classes found: class JerseyHelloWorldRESTService Jun 01, 2016 3:57:19 PM com.sun.jersey.api.core.ScanningResourceConfig init INFO: No provider classes found. Exception in thread "main" java.lang.IllegalArgumentException: No container provider supports the type class org.glassfish.grizzly.http.server.HttpHandler at com.sun.jersey.api.container.ContainerFactory.createContainer(ContainerFactory.java:196) at com.sun.jersey.api.container.ContainerFactory.createContainer(ContainerFactory.java:134) at com.sun.jersey.api.container.grizzly2.GrizzlyServerFactory.createHttpServer(GrizzlyServerFactory.java:242) at JerseyServer.startServer(JerseyServer.java:24) at JerseyServer.main(JerseyServer.java:28)
如果出现上述错误,则可以添加以下 Maven 依赖项(org.glassfish.jersey.containers jersey-container-jdk-http )来解决问题:com.sun.net.httpserver.HttpHandler”):
<dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-jdk-http</artifactId> <version>2.18</version> </dependency>
您可以根据您的环境更改版本。请记住异常的错误消息是“没有容器提供程序支持类型接口”。此依赖项提供了运行 Jersey 所需的容器。
很容易混淆两个不同版本的 Jersey,在第一个版本中,类属于 com.sun.jersey,在第二个版本中,框架类属于 org.glassfish.jersey。本质上只有包不同但有各种依赖的 JAR,Jersey 1.x 的 JAR 很容易与 Jersey2.x 的 JAR 混合并引发可怕的 NoClassDefFoundError 并且它是近亲 ClassNotFoundException。
包名称更改是因为 Jersey team 现在是 Glassfish 的一部分。 2 以下的版本使用的是 com.sun.jersey 包,但现在由于公司不同,他们使用的是 org.glassfish.jersey。是的,1.x 版和 2.x 版之间的代码有更多差异。关键要点没有将 Jersey 1.x 中的类和 JARS 与 Jersey 2.x 混合,有关错误的更多详细信息,请参见此处。
这就是关于 Jersey Hello world 示例 的全部内容。 Jersey 框架不仅仅是 JAX-RS 参考实现。 Jersey 提供了自己的 API,它使用附加功能和实用程序扩展 JAX-RS 工具包,以进一步简化 RESTful 服务和客户端开发。 Jersey 还公开了许多扩展 SPI,以便开发人员可以扩展 Jersey 以最好地满足他们的需求。
您可能喜欢的其他 Java REST Web 服务教程
参考
https://jersey.java.net/
P.S. – 如果您想了解更多有关使用 Jersey 或 Restlet 在 Java 中开发 RESTful Web 服务的信息,我建议您先阅读一本关于 JAX-RS 的好书,它是这些框架背后的标准,例如RESTful Java with JAX-RS 2.0,一本学习设计和开发分布式网络服务的好书。
附言– 如果您想了解如何使用 Spring Framework 开发 RESTful Web 服务,请查看 Eugen Paraschiv 的REST with Spring 课程。他最近推出了课程的认证版本,其中充满了练习和示例,以进一步巩固您将从课程中学到的现实世界概念。
标签2: Java教程地址:https://www.cundage.com/article/jcg-jersey-web-service-hello-world-example-java.html