• 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/

  • 相关阅读:
    微信公众号开发的经验与坑
    微信公众号开发经验总结
    微信H5中禁止分享好友及分享到朋友圈的方法
    js 实现纯前端将数据导出excel两种方式,亲测有效
    JavaScript数组的一些方法、数学对象、定时器
    几种动态轨迹可视化效果实现方案-echarts、mapv、deck.gl
    前端大牛的博客收集
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/davidwang456/p/4104909.html
Copyright © 2020-2023  润新知