Jersey实现Rest service(1)
添加时间:2013-6-1 点击量:
本系列的Jersey主如果快速介绍如何应用Jersey建树RESTful service,记录本身在进修过程中应用或碰到的题目。在开端会应用轻量级的Grizzly HTTP server公布RESTful service.
1. 应用Mave创建
在pom.xml文件中参加如下以来的jar, jersey-server是实现service side的RESTful, jersey-grzzly2是用来公布RESTful的轻量级的server。
1 <dependencies>
2 <dependency>
3 <groupId>com.sun.jersey</groupId>
4 <artifactId>jersey-server</artifactId>
5 <version>1.17.1</version>
6 </dependency>
7 <dependency>
8 <groupId>com.sun.jersey</groupId>
9 <artifactId>jersey-grizzly2</artifactId>
10 <version>1.17.1</version>
11 </dependency>
12 </dependencies>
2. 开端Server side的开辟
1) 应用Annotation编写Root Resource Classes, Root resource Classess实际是一个POJO对象,经由过程Annotation将此中的办法公布为RESTful service.
1 package com.study.jersey.server;
2
3 import javax.ws.rs.GET;
4 import javax.ws.rs.Path;
5 import javax.ws.rs.Produces;
6
7 @Path(helloworld)
8 public class HelloWorldResource {
9
10 @GET
11 @Produces(MediaType.TEXT_PLAIN)
12 public String sayHelloWorld(){
13 return Hello World!;
14 }
15 }
@Path:
@Path注释是一个相对的URI路径,在上方的代码中,Java class的资料标识可以经由过程UIR路径/helloworld默示。在此类中因为只有一个办法,所以可以经由过程http://<ip>:<port>/hellowrld接见sayHelloworld办法。
@GET:
该注释是定义资料经由过程Http的Get恳求体式格式可以接见该资料,响应的还有Pot, Put等。
@Produces:
该注释是用于指定被花费的资料返回到客户端所应用的MIME媒体发挥解析体式格式的类型。在这里指定的标示是text/plain,实际就是返回通俗的文本字符串信息。具体的各类类型会在后面介绍。
3. 公布为RESTful service
1 package com.study.jersey.server;
2
3 import java.io.IOException;
4 import java.net.URI;
5
6 import javax.ws.rs.core.UriBuilder;
7
8 import org.glassfish.grizzly.http.server.HttpServer;
9
10 import com.sun.jersey.api.container.grizzly2.GrizzlyServerFactory;
11 import com.sun.jersey.api.core.PackagesResourceConfig;
12 import com.sun.jersey.api.core.ResourceConfig;
13
14 public class PublishService {
15
16 public static URI getBaseURI(){
17 return UriBuilder.Uri(http://localhost/).port(9998).build();
18 }
19
20 public static final URI BASE_URI = getBaseURI();
21
22 protected static HttpServer startServer() throws IllegalArgumentException, NullPointerException, IOException{
23 System.out.println(Start server...);
24 ResourceConfig config = new PackagesResourceConfig(com.study.jersey.server);
25 return GrizzlyServerFactory.createHttpServer(BASE_URI, config);
26 }
27 public static void main(String[] args) {
28 try {
29 HttpServer httpServer = startServer();
30 System.out.println(String.format(Jersey app started with WADL available at + %sapplication.wadl\nTry out %shelloworld\nHit enter to stop it..., BASE_URI, BASE_URI));
31 System.in.read();
32 httpServer.stop();
33 } catch (IllegalArgumentException | NullPointerException | IOException e) {
34 e.printStackTrace();
35 }
36
37 }
38 }
履行上方代码,在console中会提示:
Jersey app started with WADL available athttp://localhost:9998/application.wadl
Try out http://localhost:9998/helloworld
Hit enter to stop it...
打开浏览器输入http://localhost:9998/helloworld,可看到返回信息Hello World!,若是输入 http://localhost:9998/application.wadl,可以看到办事的xml描述. 在这里我们应用Grizzly将办事公布出来。这就实现了第一个简单的RESTful办事。
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
本系列的Jersey主如果快速介绍如何应用Jersey建树RESTful service,记录本身在进修过程中应用或碰到的题目。在开端会应用轻量级的Grizzly HTTP server公布RESTful service.
1. 应用Mave创建
在pom.xml文件中参加如下以来的jar, jersey-server是实现service side的RESTful, jersey-grzzly2是用来公布RESTful的轻量级的server。
1 <dependencies>
2 <dependency>
3 <groupId>com.sun.jersey</groupId>
4 <artifactId>jersey-server</artifactId>
5 <version>1.17.1</version>
6 </dependency>
7 <dependency>
8 <groupId>com.sun.jersey</groupId>
9 <artifactId>jersey-grizzly2</artifactId>
10 <version>1.17.1</version>
11 </dependency>
12 </dependencies>
2. 开端Server side的开辟
1) 应用Annotation编写Root Resource Classes, Root resource Classess实际是一个POJO对象,经由过程Annotation将此中的办法公布为RESTful service.
1 package com.study.jersey.server;
2
3 import javax.ws.rs.GET;
4 import javax.ws.rs.Path;
5 import javax.ws.rs.Produces;
6
7 @Path(helloworld)
8 public class HelloWorldResource {
9
10 @GET
11 @Produces(MediaType.TEXT_PLAIN)
12 public String sayHelloWorld(){
13 return Hello World!;
14 }
15 }
@Path:
@Path注释是一个相对的URI路径,在上方的代码中,Java class的资料标识可以经由过程UIR路径/helloworld默示。在此类中因为只有一个办法,所以可以经由过程http://<ip>:<port>/hellowrld接见sayHelloworld办法。
@GET:
该注释是定义资料经由过程Http的Get恳求体式格式可以接见该资料,响应的还有Pot, Put等。
@Produces:
该注释是用于指定被花费的资料返回到客户端所应用的MIME媒体发挥解析体式格式的类型。在这里指定的标示是text/plain,实际就是返回通俗的文本字符串信息。具体的各类类型会在后面介绍。
3. 公布为RESTful service
1 package com.study.jersey.server;
2
3 import java.io.IOException;
4 import java.net.URI;
5
6 import javax.ws.rs.core.UriBuilder;
7
8 import org.glassfish.grizzly.http.server.HttpServer;
9
10 import com.sun.jersey.api.container.grizzly2.GrizzlyServerFactory;
11 import com.sun.jersey.api.core.PackagesResourceConfig;
12 import com.sun.jersey.api.core.ResourceConfig;
13
14 public class PublishService {
15
16 public static URI getBaseURI(){
17 return UriBuilder.Uri(http://localhost/).port(9998).build();
18 }
19
20 public static final URI BASE_URI = getBaseURI();
21
22 protected static HttpServer startServer() throws IllegalArgumentException, NullPointerException, IOException{
23 System.out.println(Start server...);
24 ResourceConfig config = new PackagesResourceConfig(com.study.jersey.server);
25 return GrizzlyServerFactory.createHttpServer(BASE_URI, config);
26 }
27 public static void main(String[] args) {
28 try {
29 HttpServer httpServer = startServer();
30 System.out.println(String.format(Jersey app started with WADL available at + %sapplication.wadl\nTry out %shelloworld\nHit enter to stop it..., BASE_URI, BASE_URI));
31 System.in.read();
32 httpServer.stop();
33 } catch (IllegalArgumentException | NullPointerException | IOException e) {
34 e.printStackTrace();
35 }
36
37 }
38 }
履行上方代码,在console中会提示:
Jersey app started with WADL available athttp://localhost:9998/application.wadl
Try out http://localhost:9998/helloworld
Hit enter to stop it...
打开浏览器输入http://localhost:9998/helloworld,可看到返回信息Hello World!,若是输入 http://localhost:9998/application.wadl,可以看到办事的xml描述. 在这里我们应用Grizzly将办事公布出来。这就实现了第一个简单的RESTful办事。
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》