原文: https://howtodoinjava.com/resteasy/resteasy-jboss-7-hello-world-application/

    RESTEasy 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 RESTful Web 服务 和 RESTful Java 应用。 尽管这不仅限于仅在 JBOSS 中使用,您还可以与其他服务器协作。 在本文中,我将在 JBOSS AS7 服务器中构建这样的 HelloWorld 应用。

    使用的环境:

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

    请按照以下步骤构建演示应用。

    1)创建一个 Maven 项目并转换为 Eclipse Web 项目

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

    2)更新pom.xml中的运行时依赖项

    您只需要定义编译时间相关性。 更好的是,如果您可以识别并包含 jboss 分发包中的 jar。

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

    3)创建一个空白的web.xml文件

    JBOSS 的内置支持 RESTeasy 使它成为 RESTFul Web 应用的完美组合。 构建此类应用的最低配置为无。 是的,一个空白的web.xml文件。

    1. <!DOCTYPE web-app PUBLIC
    2. "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    3. "http://java.sun.com/dtd/web-app_2_3.dtd" >
    4. <web-app>
    5. <display-name>Restful Web Application</display-name>
    6. </web-app>

    5)注册应用路径

    您将需要扩展javax.ws.rs.core.Application类并提供@ApplicationPath注解。

    1. <img src="//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;
    2. import java.util.Arrays;
    3. import java.util.HashSet;
    4. import java.util.Set;
    5. import javax.ws.rs.ApplicationPath;
    6. import javax.ws.rs.core.Application;
    7. import com.howtodoinjava.service.UserService;
    8. @ApplicationPath("/")
    9. public class ApplicationConfig extends Application {
    10. @SuppressWarnings("unchecked")
    11. public Set<Class<?>> getClasses() {
    12. return new HashSet<Class<?>>(Arrays.asList(UserService.class));
    13. }
    14. }

    4)编写具有@Path注解的服务类

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

    5)运行应用

    当我们在 jboss 中部署以上构建的应用并单击 URL:“http://localhost:8080/RESTfulDemoApplication/user-management/users”时,以下是响应。

    RESTEasy   JBOSS 7 HelloWorld 应用 - 图1

    JBOSS 7+ RESTEasy 示例应用

    要下载以上示例的源代码,请单击下面的链接。

    下载源代码

    祝您学习愉快!