JAX-RS サービスに EJB を挿入するにはどうすればよいですか?

DDD
リリース: 2024-11-07 07:20:02
オリジナル
315 人が閲覧しました

How to Inject EJBs into JAX-RS Services?

JAX-RS サービスへの EJB の挿入

問題の説明

アノテーションを通じてステートレス EJB を JAX-RS Web サービスに挿入しようとすると、 null EJB 参照により、使用時に NullPointerException が発生します。

解決策

JAX-RS Web サービスに @Stateless としてアノテーションを付けることは直接的な解決策のように見えるかもしれませんが、JAX-RS では実現できません。一人で。次の代替アプローチを検討してください。

オプション 1: インジェクション プロバイダー SPI

EJB のルックアップとインジェクションを実行するインジェクション プロバイダーを実装します。それに応じてプロバイダーを登録します。

オプション 2: BookResource を EJB として埋め込む

BookResource クラスに @Stateless アノテーションを付け、EJB 内でそのライフサイクルを管理します。ただし、このアプローチでは単体テストがより困難になります。

オプション 3: CDI を使用する

提供された例に示すように、依存関係の注入に CDI を使用します。このアプローチは、特にテスト環境でのシンプルさと柔軟性を提供します。

作業例 (オプション 1)

@Path("book")
public class BookResource {

    @Inject
    private BookEJB bookEJB;

    //...
}
ログイン後にコピー
// EJBProvider.java

@Provider
public class EJBProvider implements InjectableProvider<EJB, Type> {
    // ... (Implementation as provided in the answer)
}
ログイン後にコピー

結論

インジェクション プロバイダーを実装するか、 CDI を使用すると、JAX-RS サービスに EJB を挿入できるようになり、2 つのフレームワーク間の統合オプションが拡張されます。

以上がJAX-RS サービスに EJB を挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!