Java Reference
In-Depth Information
JAX-RS EJB from your
Application.getClasses()
method. For example, let's say we
have this EJB bean class:
@Stateless
@Path
(
"/customers"
)
public
public class
class
CustomerResourceBean
CustomerResourceBean
implements
implements
CustomerResource
{
...
}
If you are manually registering your resources via your
Application
class, you must re-
gister the bean class of the EJB via the
Application.getClasses()
method. For example:
package
package
com
.
restfully
.
shop
.
services
;
import
import
javax.ws.rs.core.Application
javax.ws.rs.core.Application
;
import
import
javax.ws.rs.ApplicationPath
javax.ws.rs.ApplicationPath
;
@ApplicationPath
(
"/root"
)
public
public class
class
ShoppingApplication
ShoppingApplication
extends
extends
Application
{
public
public
Set
<
Class
<?>>
getClasses
() {
HashSet
<
Class
<?>>
set
=
new
new
HashSet
<
Class
<?>>();
set
.
add
(
CustomerResourceBean
.
class
);
return
return
set
;
}
}
Spring Integration
Spring is an open source framework similar to EJB. Like EJB, it provides a great abstraction
for transactions, persistence, and security. Further explanation of Spring is beyond the scope
of this topic. If you want more information on it, check out
Spring: A Developer's Notebook
by Bruce A. Tate and Justin Gehtland (O'Reilly). Most JAX-RS implementations have their
own proprietary support for Spring and allow you to write Spring beans that are JAX-RS
web services. If portability is not an issue for you, I suggest that you use the integration with
Spring provided by your JAX-RS implementation.
There is a simple, portable way to integrate with Spring that we can talk about in this chapter.
What you can do is write an
Application
class that loads your Spring XML files and then
registers your Spring beans with JAX-RS through the
getSingletons()
method. First, let's
define a Spring bean that represents a customer database. It will pretty much look like the
CustomerResource
bean described in
EJB Integration
: