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办事。

    我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
    分享到: