Home > Java > javaTutorial > body text

How to Inject Stateless EJBs into JAX-RS Web Services?

Susan Sarandon
Release: 2024-11-07 11:48:03
Original
481 people have browsed it

How to Inject Stateless EJBs into JAX-RS Web Services?

Injecting EJBs into JAX-RS Web Services

Issue Description:

In an attempt to inject a Stateless EJB into a JAX-RS web service using annotations, the EJB instance remains null in the service class, resulting in a NullPointerException upon use.

Environment Details:

  • Glassfish 3.1
  • Netbeans 6.9 RC 2
  • Java EE 6

Solution Options:

Option 1: Inject using the Injection Provider SPI

  • Implement a custom injection provider that performs the EJB lookup and injection.
  • For example, in Jersey 1.17:
import com.sun.jersey.core.spi.component.ComponentContext;
import ...
public class EJBProvider implements InjectableProvider<EJB, Type> {
    // Implementation details...
}
Copy after login

Option 2: Convert the Resource Class to an EJB

  • Make the JAX-RS resource class a Stateless EJB itself, allowing it to manage its own dependencies.

Option 3: Leverage CDI

  • Use Context and Dependency Injection (CDI) to inject the EJB into the JAX-RS resource class.

Example:

@Path("book")
@RequestScoped
public class BookResource {
    @Inject
    private BookEJB bookEJB;
    // Implementation details...
}
Copy after login

Additional Resources:

  • [EJB Injection](https://docs.oracle.com/javaee/7/api/javax/ejb/EJB.html)
  • [@EJB Injection](https://stackoverflow.com/questions/1130846/ejb-injection)
  • [Combining REST Services with EJB 3.1](https://dzone.com/articles/combining-rest-services-with-ejb-31)
  • [EJB 3.1 and REST - The Lightweight Hybrid](https://weblogs.java.net/blog/emcfarlane/archive/2009/12/10/ejb-31-and-rest-lightweight-hybrid)
  • [Injecting an EJB from a jar into a jax-rs class in a war](https://stackoverflow.com/questions/6474811/injecting-an-ejb-from-a-jar-into-a-jax-rs-class-in-a-war)

The above is the detailed content of How to Inject Stateless EJBs into JAX-RS Web Services?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template