Maison > Java > javaDidacticiel > le corps du texte

Comment injecter des EJB dans les services JAX-RS ?

DDD
Libérer: 2024-11-07 07:20:02
original
315 Les gens l'ont consulté

How to Inject EJBs into JAX-RS Services?

Injecter des EJB dans les services JAX-RS

Description du problème

Tenter d'injecter un EJB sans état dans un service Web JAX-RS via des annotations entraîne un Référence EJB null, conduisant à une NullPointerException lors de l'utilisation.

Solution

Bien qu'annoter le service Web JAX-RS comme @Stateless puisse sembler une solution directe, ce n'est pas réalisable avec JAX-RS seul. Envisagez les approches alternatives suivantes :

Option 1 : Fournisseur d'injection SPI

Implémentez un fournisseur d'injection qui effectue la recherche et l'injection de l'EJB. Enregistrez le fournisseur en conséquence.

Option 2 : Intégrer BookResource en tant qu'EJB

Annotez la classe BookResource en tant que @Stateless et gérez son cycle de vie au sein d'un EJB. Cependant, cette approche rend les tests unitaires plus difficiles.

Option 3 : Utiliser CDI

Utiliser CDI pour l'injection de dépendances, comme indiqué dans l'exemple fourni. Cette approche offre simplicité et flexibilité, en particulier dans les environnements de test.

Exemple de travail (option 1)

@Path("book")
public class BookResource {

    @Inject
    private BookEJB bookEJB;

    //...
}
Copier après la connexion
// EJBProvider.java

@Provider
public class EJBProvider implements InjectableProvider<EJB, Type> {
    // ... (Implementation as provided in the answer)
}
Copier après la connexion

Conclusion

En mettant en œuvre un fournisseur d'injection ou en adoptant CDI, il devient possible d'injecter des EJB dans les services JAX-RS, élargissant les options d'intégration entre les deux frameworks.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!