REST Services with RESTEasy + JBOSS 7 Hello world application
Environment
used:
- RESTEasy 2.3.1.GA
- Jboss AS7
- 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
|
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd"> <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> <url>http://maven.apache.org</url> <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> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>2.3.1.GA</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxb-provider</artifactId> <version>2.3.1.GA</version> <scope>compile</scope> </dependency> <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
|
"-//Sun
Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"
><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
|
"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 return
new
HashSetclass)); }} |
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 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.

To download the source code of above example,
click below link.
Happy
Learning !!
No comments:
Post a Comment