Maison > Java > javaDidacticiel > Comment injecter des EJB sans état dans les services Web JAX-RS ?

Comment injecter des EJB sans état dans les services Web JAX-RS ?

Susan Sarandon
Libérer: 2024-11-07 11:48:03
original
558 Les gens l'ont consulté

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

Injecter des EJB dans les services Web JAX-RS

Description du problème :

Dans une tentative d'injection d'un EJB sans état dans un service Web JAX-RS utilisant des annotations, l'instance EJB reste nulle dans la classe de service, ce qui entraîne une NullPointerException lors de son utilisation.

Détails de l'environnement :

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

Options de solution :

Option 1 : Injectez à l'aide du SPI du fournisseur d'injection

  • Implémentez un fournisseur d'injection personnalisé qui effectue la recherche et l'injection d'EJB.
  • Par exemple, dans Jersey 1.17 :
import com.sun.jersey.core.spi.component.ComponentContext;
import ...
public class EJBProvider implements InjectableProvider<EJB, Type> {
    // Implementation details...
}
Copier après la connexion

Option 2 : Convertir la classe de ressources en un EJB

  • Faire de la classe de ressources JAX-RS un EJB sans état lui-même, lui permettant de gérer le sien dépendances.

Option 3 : exploiter CDI

  • Utiliser l'injection de contexte et de dépendances (CDI) pour injecter l'EJB dans la classe de ressources JAX-RS .

Exemple :

@Path("book")
@RequestScoped
public class BookResource {
    @Inject
    private BookEJB bookEJB;
    // Implementation details...
}
Copier après la connexion

Ressources supplémentaires :

  • [Injection EJB]( https://docs.oracle.com/javaee/7/api/javax/ejb/EJB.html)
  • [@EJB Injection](https://stackoverflow.com/questions/1130846/ejb- injection)
  • [Combiner les services REST avec EJB 3.1](https://dzone.com/articles/combining-rest-services-with-ejb-31)
  • [EJB 3.1 et REST - L'hybride léger](https://weblogs.java.net/blog/emcfarlane/archive/2009/12/10/ejb-31-and-rest-lightweight-hybrid)
  • [Injecter un EJB d'un pot dans une classe jax-rs dans une guerre](https://stackoverflow.com/questions/6474811/injecting-an-ejb-from-a-jar-into-a-jax-rs-class-in- une guerre)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal