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
HashSet 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 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