Jersey Web Service Hello World Java示例

在Restlet之后, Jersey是另一个流行的开源框架,可以用Java创建RESTful Web服务 。 Jersey符合JAX-RS规范,实际上它是JAX-RS(JSR 311)(http://jsr311.java.net/nonav/releases/1.1/index.html)规范的参考实现。 在上一篇文章中,我们看到了Restlet HelloWorld示例 ,今天我们看到了Jersey HelloWorld示例 。 通常,当开发人员考虑使用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和Jersey2之间的差异

将两种不同版本的Jersey混淆起来非常容易,在第一个版本中,类属于com.sun.jersey,在第二个版本中,框架类属于org.glassfish.jersey。 本质上,只有软件包是不同的,但是具有各种依赖的JAR,Jersey 1.x中的JAR与Jersey2.x中的JAR混合在一起很容易并令人恐惧。
NoClassDefFoundError及其近亲ClassNotFoundException 。

软件包名称已更改,因为Jersey团队现在是Glassfish的一部分。 以下版本2使用的是com.sun.jersey软件包,但由于该公司与众不同,因此他们使用的是org.glassfish.jersey。 是的,版本1.x和2.x之间在代码方面存在更多差异。 关键要点不会将Jersey 1.x的类和JARS与Jersey 2.x混合在一起,请参阅
这里有关于错误的更多细节。

这就是有关Jersey Hello世界示例的全部内容。 Jersey框架不只是JAX-RS参考实现。 Jersey提供了自己的API,该API用其他功能和实用程序扩展了JAX-RS工具包,以进一步简化RESTful服务和客户端开发。 Jersey还公开了许多扩展SPI,以便开发人员可以扩展Jersey以最适合其需求。

您可能喜欢的其他Java REST Web服务教程

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

参考

https://jersey.java.net/

PS –如果您想了解有关使用Jersey或Restlet在Java中开发RESTful Web服务的更多信息,建议您首先阅读一本有关JAX-RS的好书,这是这些框架背后的标准,例如
RESTful Java with JAX-RS 2.0 ,这是一本学习如何设计和开发分布式Web服务的好书。

PS –如果您想学习如何使用Spring Framework开发RESTful Web服务,请查看Eugen Paraschiv的
REST与Spring课程 。 他最近启动了该课程的认证版本,其中包含许多练习和示例,可以进一步巩固您将从该课程中学到的真实概念。

翻译自: https://www.javacodegeeks.com/2017/06/jersey-web-service-hello-world-example-java.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蔡司三坐标_蔡司三坐标测针的安装指南

1、装配和辅助工具合适的辅助工具可以在组装测针组时有效防止各部件的损坏&#xff0c;确保安装的安全进行。下面是几种最重要的装配和辅助工具。2、正确调整MT/VAST吸盘MT/VAST吸盘可以通过顶部的三个螺丝进行旋转调节。必须使用不超过2Nm的扭力紧固&#xff0c;为了防止螺丝的…

三电平igbt死区时间计算_IGBT基础与运用-2

IGBT基础与运用-1尝试去计算IGBT的开启过程&#xff0c;主要是时间和门电阻的散热情况。C.GE 栅极-发射极电容C.CE 集电极-发射极电容C.GC 门级-集电极电容(米勒电容)Cies CGE CGC 输入电容Cres CGC 反向电容Coes CGC CCE 输出电容根据充电的详细过程&#xff0c;可以下图…

在2017年从Maven工件生成P2存储库

几年前&#xff0c;我写了一篇博客文章&#xff0c;介绍如何基于Maven工件生成P2存储库。 如今&#xff0c;这种描述的方法已经过时了&#xff0c;我想展示一种基于p2-maven-plugin的新方法&#xff0c;该方法是为解决该问题而创建的。 Maven构建生命周期中的P2-Maven-Plugin集…

循环次数几次_圆柱模板循环使用次数是多少呢

对于同一处做同样的工程&#xff0c;如果需要使用的是圆柱模板&#xff0c;用户一定考虑到底该进多少货&#xff0c;备多少料(圆柱模板)呢&#xff1f;这就需要考虑到圆柱模板循环使用次数和错开的程度来进行决定的&#xff1f;建筑圆柱模板能周转几次&#xff1f;这可能是所有…

network 拦截不到东西是怎么做到的?_都说读中职院校学不到东西,中职学生到底是怎么学习的?...

中职院校在社会中的影响一直并不是很好&#xff0c;一直都是负面影响高于正面影响&#xff0c;那么&#xff0c;我们不禁就要问了&#xff0c;一直在喊提升中职院校的教学质量&#xff0c;质量提升到哪里去了呢&#xff01;那些中职院校里的学生到底又是怎么学习的呢&#xff1…

数组中查找並返回数组_java数组查找常见情况

一.最简单的查找元素方法&#xff08;依次比较&#xff09;&#xff1a;给一个数组&#xff0c;在数组里面查找某个元素在数组中的位置&#xff0c;并返回它的位置。public static void main(String[] args) {int arr[] new int[]{12, 4, 54, 57, 87, 3, 41, 1, 3, 4, 1, 3, 4…

阿帕奇跨域_阿帕奇骆驼遇见Redis

阿帕奇跨域键值商店的兰博基尼 Camel是最好的面包集成框架&#xff0c;在本文中&#xff0c;我将向您展示如何通过利用另一个出色的项目Redis使它更加强大。 Camel 2.11即将发布&#xff0c;具有许多新功能&#xff0c;错误修复和组件。 这些新组件中的几个是我创作的&#…

误码率越高越好还是越低越好_ISO永远都是越低越好?不一定!这些情况下要用高 ISO!...

关于摄影中的参数&#xff0c;在说到 ISO(感光度)的时候&#xff0c;大家脑海中肯定都会想到那句摄影中的定律——“使用尽可能低的 ISO ”&#xff0c;这是为什么呢&#xff1f;通过下面这张典型的高 ISO 照片我们能知道原因在图片里&#xff0c;那些不自然的、充斥整个画面的…

如何在Java 8中创建线程安全的ConcurrentHashSet?

在JDK 8之前&#xff0c;还没有办法在Java中创建大型的线程安全的ConcurrentHashSet。 java.util.concurrent包甚至没有一个名为ConcurrentHashSet的类&#xff0c;但是从JDK 8开始&#xff0c;您可以使用新添加的keySet&#xff08;默认值&#xff09;和newKeySet&#xff08;…

rust如何在木板上上传图片_通过编写一个简单的游戏来学习 Rust | Linux 中国

导读&#xff1a;你可以尝试以多种语言编程一个简单的游戏来开始编程之路。本文字数&#xff1a;4068&#xff0c;阅读时长大约&#xff1a; 5分钟https://linux.cn/article-12979-1.html作者&#xff1a;Moshe Zadka译者&#xff1a;Xingyu.Wang当你想学习一门新的编程语言时&…

python神经网络教程16_Python深度学习之神经网络视频

Python深度学习之神经网络视频课程简介该阶段是深度学习的入门课程&#xff0c;主要介绍经典的深度学习框架TensorFlow的使用&#xff0c;IO操作&#xff0c;以及神经网络基础、卷积神经网络的相关知识&#xff0c;并用卷积神经网络原理搭建、设计自己的网络&#xff0c;实现对…

apache camel_REST与Apache Camel

apache camel有许多方法可以在Camel中公开HTTP终结点&#xff1a;jetty&#xff0c;tomcat&#xff0c;servlet&#xff0c;cxfrs和restlet。 其中的两个组件– cxfrs和restlet也仅需几行代码即可支持REST语义。 这个简单的示例演示了如何使用camel-restlet和camel-jdbc进行CRU…

删除 多个表_合并汇总多个工作簿多个工作表,删除修改新增更新内容只需刷新...

要求&#xff1a;1、把多个工作簿的多个工作表内容合并汇总2、后续在任一工作表内删除修改新增内容&#xff0c;无需再重新做表3、后续在任一工作簿中新增一个或多个工作表&#xff0c;无需再重新做表4、后续在文件夹中添加一个或多个Excel工作簿文件&#xff0c;无需再重新做表…

OAuth2,JWT,Open-ID Connect和其他令人困惑的事物

免责声明 如果觉得我必须从一个重要的免责声明开始这篇文章&#xff1a; 不要太相信我要说的话。 我之所以这样说&#xff0c;是因为我们正在讨论安全性。 而且&#xff0c; 当您谈论安全性时&#xff0c;除了100&#xff05;正确的陈述外&#xff0c;还有冒任何其他风险的风险…

go语言查询某个值是否在数组中_go语言中的数组

package main;import ("fmt")func main() {//声明一个数组var a [3]int;a [3]int{1, 2, 3};//声明并赋值var b [3]int [3]int{1, 2, 3};//声明并赋值(省略类型)var c [3]int{1, 2, 3};//声明并赋值简写d : [3]int{1, 2, 3};//GO中将数组长度作为数组类型的一部分/…

ssm集成笔记_SSM整合笔记

SSM一般是分开学的&#xff0c;Spring&#xff0c;SpringMVC&#xff0c;Mybatis。学完之后整合也是需要学习一段时间。下面是一次整合的实践...SSM的整合顺序一般先整合Spring和Mybatis。再整合SpringMVC。Spring整合Mybatis首先把文件放到lib的文件夹下。然后在src目录下新建…

人工智能在建筑运营_打造智能建筑商

人工智能在建筑运营构建API时&#xff0c;您应始终考虑谁将使用它。 当API简单易用时&#xff0c;用户就会感到满意。 当用户满意时&#xff0c;每个人也都会满意。 但是出色的可用性并非总是容易实现的。 有一些模式对此有所帮助&#xff0c;在这篇文章中&#xff0c;我将重点…

mysql删除用户账号和密码_mysql添加、删除用户和授权用户

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):1.新建用户1.1 登录MYSQL&#xff1a;>mysql -u root -p>密码1.2 创建用户&#xff1a;mysql> insert into mysql.user(Host,User,Password) values("localhos…

从GWT开发人员的角度概述Scala.js

该博客严重偏向于GWT&#xff08;和基于GWT的框架&#xff09;&#xff0c;但是我们牢记未来GWT可能会被其他技术所取代&#xff0c;因此我们始终愿意探索其他平台/框架。 正如他们所说&#xff0c;多元化可以降低风险。 每种编程语言&#xff0c;甚至最奇怪的编程语言&#xf…

alinq mysql_ALinq让Mysql变得如此简单_MySQL

当大家已经习惯了使用.net 去操作SQL Server&#xff0c;有多少人曾经尝试过使用.net 去操作Mysql数据库&#xff01;在.net 的光环下&#xff0c;Mysql是显得如此微不足道&#xff01;但是Mysql的开源又是如此具有诱惑。1. ADO.NET 方式连接Mysql数据库经过在网上查找资料&…