Java 中的 Jersey Web 服务 Hello World 示例

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(277)   2023-12-06 15:34:57

在 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 服务器组件。

泽西岛 HelloWorld 示例

这是使用 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 和 Jersey2 之间的区别

很容易混淆两个不同版本的 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 服务教程

  • REST 和 SOAP Web 服务之间的区别? (回答
  • 10 大 REST Web 服务面试问题(回答
  • 使用依赖注入的 Spring HelloWorld 示例(教程
  • REST Web 服务中 PUT 和 POST 的区别? (文章
  • 如何使用 Spring 创建 JDBC 连接池? (教程
  • 如何使用 Jackson 解析大型 JSON 响应? (教程
  • Java 开发人员的 20 个 Hibernate 面试问题(文章
  • HTTP 中幂等和安全方法的区别? (回答
  • 如何在 Java 中将 JSON 数组转换为字符串数组? (教程

参考

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

相关阅读

Java HashSet 教程展示了如何使用 Java HashSet 集合。 Java哈希集 HashSet 是一个不包含重复元素的集合。此类为基本操作(添加、删除、包含和大小)提供恒定时间性...
SpringApplicationBuilder 教程展示了如何使用 SpringApplicationBuilder 创建一个简单的 Spring Boot 应用程序。 春天 是用于创建企业应...
通道是继 buffers 之后 java.nio 的第二个主要新增内容,我们在之前的教程中已经详细了解了这一点。通道提供与 I/O 服务的直接连接。 通道是一种在字节缓冲区和通道另一端的实体(通...
课程大纲 Elasticsearch 是一个基于 Lucene 的搜索引擎。它提供了一个分布式的、支持多租户的全文搜索引擎,带有 HTTP Web 界面和无模式的 JSON 文档。 Elasti...
解析器是强大的工具,使用 ANTLR 可以编写可用于多种不同语言的各种解析器。 在这个完整的教程中,我们将: 解释基础:什么是解析器,它可以用来做什么 查看如何设置 ANTLR 以便在 Java...
Java 是用于开发各种桌面应用程序、Web 应用程序和移动应用程序的最流行的编程语言之一。以下文章将帮助您快速熟悉 Java 语言,并迈向 API 和云开发等更复杂的概念。 1. Java语言...
Java中的继承是指子类继承或获取父类的所有非私有属性和行为的能力。继承是面向对象编程的四大支柱之一,用于提高层次结构中类之间的代码可重用性。 在本教程中,我们将了解 Java 支持的继承类型,...
Java Message Service 是一种支持正式通信的 API,称为 网络上计算机之间的消息传递。 JMS 为支持 Java 程序的标准消息协议和消息服务提供了一个通用接口。 JMS 提...
之前,我介绍了spring 3 + hibernate 集成 示例和struts 2 hello world 示例。在本教程中,我将讨论在将 spring 框架与 struts 与 hibern...
Java 项目中的一项常见任务是将日期格式化或解析为字符串,反之亦然。解析日期意味着你有一个代表日期的字符串,例如“2017-08-3”,你想把它转换成一个代表 Java 中日期的对象,例如Ja...