jersey 入门示例
在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
jersey 入门示例