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
525 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!

source:php.cn
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