Jersey 初体验
任务1,搭建jersey 工程项目
在网上搜索了一圈,发现有一个很简单直接的办法可以搭建一个Jersey体验项目,创建一个maven项目,使用jersey-quickstart-grizzly 原型创建。
但是,我安装的eclipse集成好maven以后,创建maven项目里面就没有jersey-quickstart-grizzly这个选项。
好吧,这里我有两个思路来解决这个问题:
1,继续跟着问题走去寻找 jersey-quickstart-grizzly ,然后添加进来,重新创建项目,来体验Jersey。
2,换条路,直接使用jersey包来自己手动一步一步创建项目。
好吧,现在我选择2,选择突破口,官网https://jersey.java.net/ ,上去看看有没有什么有价值的信息
1, https://jersey.java.net/documentation/latest/getting-started.html 这篇文章看起来貌似有用,先看看
2, 在1中文章获取到有用信息https://maven.java.net/content/repositories/snapshots/archetype-catalog.xml 这里存放有Jersey的maven原型,我选择的是jersey-quickstart-grizzly2 然后根据页面上的信息 手动添加到Eclipse。(这里貌似又回到了思路1了,哎,就是这么奇妙,原本以为找了另外一条路,结果走着走着有回到了最初的路)。
3,添加成功以后,貌似不能立即显示出来,关闭窗口,重新打开一次,然后就可以选择这个原型,记得要勾选,不然显示不错来。
4,创建好项目以后,发现我的项目上有很多红X,红X指向的地方是jersey版本的地方,好吧,我选择了手动指定jersey版本
5,保存,等待项目自动构建,构建成功,项目结构简单直接,有两个demo程序
6,点击Main.java,选择Run As application。
9,结束,jersery初次体验之旅,这里就完成了,下面就看看demo程序,大致了解下应该怎么用这玩意。
任务2, Jersery项目demo程序分析
附上Main.java
1 package com.cc.jersery1; 2 3 import org.glassfish.grizzly.http.server.HttpServer; 4 import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory; 5 import org.glassfish.jersey.server.ResourceConfig; 6 7 import java.io.IOException; 8 import java.net.URI; 9 10 /** 11 * Main class. 12 * 13 */ 14 public class Main { 15 // Base URI the Grizzly HTTP server will listen on 16 public static final String BASE_URI = "http://localhost:8080/myapp/"; 17 18 /** 19 * Starts Grizzly HTTP server exposing JAX-RS resources defined in this application. 20 * @return Grizzly HTTP server. 21 */ 22 public static HttpServer startServer() { 23 // create a resource config that scans for JAX-RS resources and providers 24 // in com.cc.jersery1 package 25 final ResourceConfig rc = new ResourceConfig().packages("com.cc.jersery1"); 26 27 // create and start a new instance of grizzly http server 28 // exposing the Jersey application at BASE_URI 29 return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc); 30 } 31 32 /** 33 * Main method. 34 * @param args 35 * @throws IOException 36 */ 37 public static void main(String[] args) throws IOException { 38 final HttpServer server = startServer(); 39 System.out.println(String.format("Jersey app started with WADL available at " 40 + "%sapplication.wadl\nHit enter to stop it...", BASE_URI)); 41 System.in.read(); 42 server.stop(); 43 } 44 } 45 46
Grizzly 是什么?
暂时把它理解为一个简单的Http Server
从代码里面可以看出来,Main.java里面主要的工作就是初始化了一个Httpserver,并启动它。
附上MyResource.java
1 package com.cc.jersery1; 2 3 import javax.ws.rs.GET; 4 import javax.ws.rs.Path; 5 import javax.ws.rs.Produces; 6 import javax.ws.rs.core.MediaType; 7 8 /** 9 * Root resource (exposed at "myresource" path) 10 */ 11 @Path("myresource") 12 public class MyResource { 13 14 /** 15 * Method handling HTTP GET requests. The returned object will be sent 16 * to the client as "text/plain" media type. 17 * 18 * @return String that will be returned as a text/plain response. 19 */ 20 @GET 21 @Produces(MediaType.TEXT_PLAIN) 22 public String getIt() { 23 return "Got it!"; 24 } 25 }
这里定义了一个Get方法,@path指定路径,即发送Get请求到http://localhost:8080/myapp/myresource 下,那么服务器就返回给客户端一个字符串“Got it!”