zoukankan      html  css  js  c++  java
  • RESTEasy + JBOSS 7 Hello world application---reference

    RESTEasy is JBOSS provided implementation of JAX-RS specification for building RESTful Web Services and RESTful Java applications. Though this is not limited to be used in JBOSS only, and you can use with other servers also. In this post, I am building such a hello world application in JBOSS AS7 server.

    Environment used:

    1. RESTEasy 2.3.1.GA
    2. Jboss AS7
    3. JDK 1.6

    Follow below steps to build a demo application.

    1) Create a maven project and convert to eclipse web project

    mvn archetype:generate -DgroupId=com.howtodoinjava -DartifactId=RESTfulDemoApplication 
    -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
    
    mvn eclipse:eclipse -Dwtpversion=2.0

    2) Update runtime dependencies in pom.xml

    You need to define only compile time dependencies. Even better, if you can identify and include the jars from jboss distribution package.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.howtodoinjava</groupId>
      <artifactId>RESTfulDemoApplication</artifactId>
      <packaging>war</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>RESTfulDemoApplication Maven Webapp</name>
        <repositories>
            <repository>
              <id>jboss</id>
              <url>http://repository.jboss.org/maven2</url>
            </repository>
        </repositories>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <!-- core library -->
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
             <artifactId>resteasy-jaxrs</artifactId>
            <version>2.3.1.GA</version>
            <scope>compile</scope>
        </dependency>
       <!-- JAXB support -->
       <dependency>
          <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxb-provider</artifactId>
          <version>2.3.1.GA</version>
          <scope>compile</scope>
       </dependency>
       <!-- multipart/form-data and multipart/mixed support -->
       <dependency>
          <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-multipart-provider</artifactId>
          <version>2.3.1.GA</version>
          <scope>compile</scope>
       </dependency>
       <dependency>
            <groupId>net.sf.scannotation</groupId>
            <artifactId>scannotation</artifactId>
            <version>1.0.2</version>
            <scope>compile</scope>
        </dependency>
      </dependencies>
      <build>
        <finalName>RESTfulDemoApplication</finalName>
      </build>
    </project>

    3) Create a blank web.xml file

    JBOSS’s inbuilt support RESTeasy makes it a perfect combo for RESTFul web application. The minimum configuration to build such application is none. Yes, a blank web.xml file.

    1
    2
    3
    4
    5
    6
    7
    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     
    <web-app>
      <display-name>Restful Web Application</display-name>
    </web-app>

    5) Register the application path

    You will need to extend javax.ws.rs.core.Application class and provide @ApplicationPath annotation.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <img src="http://howtodoinjava.com/wp-content/uploads/jboss+resteasy1.png" alt="JBOSS 7+ RESTEasy demo application" width="453" height="225" class="size-full wp-image-2033" /> JBOSS 7+ RESTEasy demo applicationpackage com.howtodoinjava;
     
    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.Set;
     
    import javax.ws.rs.ApplicationPath;
    import javax.ws.rs.core.Application;
     
    import com.howtodoinjava.service.UserService;
     
    @ApplicationPath("/")
    public class ApplicationConfig extends Application {
        @SuppressWarnings("unchecked")
        public Set<Class<?>> getClasses() {
            return new HashSet<Class<?>>(Arrays.asList(UserService.class));
        }
    }

    4) Write a service class having @Path annotations

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    package com.howtodoinjava.service;
     
    import java.net.URI;
    import java.net.URISyntaxException;
    import java.util.ArrayList;
     
    import javax.ws.rs.Consumes;
    import javax.ws.rs.DELETE;
    import javax.ws.rs.DefaultValue;
    import javax.ws.rs.GET;
    import javax.ws.rs.POST;
    import javax.ws.rs.PUT;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.Produces;
    import javax.ws.rs.QueryParam;
    import javax.ws.rs.core.Response;
    import javax.xml.bind.annotation.XmlAccessType;
    import javax.xml.bind.annotation.XmlAccessorType;
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlRootElement;
     
    import com.howtodoinjava.model.User;
    import com.howtodoinjava.model.Users;
     
    @XmlAccessorType(XmlAccessType.NONE)
    @XmlRootElement(name = "user-management")
    @Path("/user-management")
    public class UserService {
        @XmlElement(name = "users")
        private String uri1 = "/user-management/users";
     
        @XmlElement(name = "report")
        private String uri2 = "/user-managemet/generate-report";
     
        public String getUri1() {
            return uri1;
        }
     
        public void setUri1(String uri1) {
            this.uri1 = uri1;
        }
     
        public String getUri2() {
            return uri2;
        }
     
        public void setUri2(String uri2) {
            this.uri2 = uri2;
        }
     
        @GET
        @Path("/")
        @Produces("application/vnd.com.demo.user-management+xml;charset=UTF-8;version=1")
        public UserService getServiceInfo() {
            return new UserService();
        }
     
        @GET
        @Path("/users")
        @Produces("application/vnd.com.demo.user-management.users+xml;charset=UTF-8;version=1")
        public Users getAllUsers() {
            User user1 = new User();
            user1.setId(1);
            user1.setFirstName("demo");
            user1.setLastName("user");
            user1.setUri("/user-management/users/1");
     
            User user2 = new User();
            user2.setId(2);
            user2.setFirstName("demo");
            user2.setLastName("user");
            user2.setUri("/user-management/users/2");
     
            Users users = new Users();
            users.setUsers(new ArrayList<User>());
            users.getUsers().add(user1);
            users.getUsers().add(user2);
     
            return users;
        }
     
        @GET
        @Path("/users/{id}")
        @Produces("application/vnd.com.demo.user-management.user+xml;charset=UTF-8;version=1")
        public User getUserById(@PathParam("id"int id) {
            User user = new User();
            user.setId(id);
            user.setFirstName("demo");
            user.setLastName("user");
            user.setUri("/user-management/users/" + id);
            return user;
        }
     
        @POST
        @Path("/users")
        @Consumes("application/vnd.com.demo.user-management.user+xml;charset=UTF-8;version=1")
        public Response createUser(User user,
                @DefaultValue("false"@QueryParam("allow-admin"boolean allowAdmin)
                throws URISyntaxException {
            System.out.println(user.getFirstName());
            System.out.println(user.getLastName());
            return Response.status(201)
                    .contentLocation(new URI("/user-management/users/123")).build();
        }
     
        @PUT
        // @Path("/users/{id: [0-9]*}")
        @Path("/users/{id}")
        @Consumes("application/vnd.com.demo.user-management.user+xml;charset=UTF-8;version=1")
        @Produces("application/vnd.com.demo.user-management.user+xml;charset=UTF-8;version=1")
        public User updateUser(@PathParam("id"int id, User user)
                throws URISyntaxException {
            user.setId(id);
            user.setFirstName(user.getFirstName() + "updated");
            return user;
        }
     
        @DELETE
        @Path("/users/{id}")
        public Response deleteUser(@PathParam("id"int id)
                throws URISyntaxException {
            return Response.status(200).build();
        }
    }

    5) Run the application

    When we deploy above built application in jboss and hit the URL: ” http://localhost:8080/RESTfulDemoApplication/user-management/users”, below is the response.

    JBOSS 7+ RESTEasy demo application

    reference from:http://howtodoinjava.com/2013/05/12/resteasy-jboss-7-hello-world-application/

  • 相关阅读:
    bash编程2
    bash简介1
    grep文本处理工具
    用户的环境变量
    用户,组,权限
    yum与rmp
    逻辑卷管理
    磁盘配额
    磁盘创建
    创建计划任务
  • 原文地址:https://www.cnblogs.com/davidwang456/p/4104909.html
Copyright © 2011-2022 走看看