ホームページ  >  記事  >  Java  >  ステートレス EJB を JAX-RS Web サービスに挿入するにはどうすればよいですか?

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-07 11:48:03433ブラウズ

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

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

問題の説明:

ステートレス EJB を JAX-RS Web サービスに挿入しようとしました注釈を使用する JAX-RS Web サービスでは、EJB インスタンスはサービス クラスで null のままとなり、使用時に NullPointerException が発生します。

環境の詳細:

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

ソリューション オプション:

オプション 1 : インジェクション プロバイダー SPI を使用してインジェクトします

  • EJB ルックアップとインジェクションを実行するカスタム インジェクション プロバイダーを実装します。
  • たとえば、Jersey 1.17 の場合:
import com.sun.jersey.core.spi.component.ComponentContext;
import ...
public class EJBProvider implements InjectableProvider<EJB, Type> {
    // Implementation details...
}

オプション 2: リソース クラスを EJB に変換する

  • JAX-RS リソース クラスをステートレス EJB 自体にし、独自の管理を可能にします

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

  • コンテキストおよび依存関係の挿入 (CDI) を使用して、JAX-RS リソース クラスに EJB を挿入します。 .

例:

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

追加リソース:

  • [EJB インジェクション]( https://docs.oracle.com/javaee/7/api/javax/ejb/EJB.html)
  • [@EJB インジェクション](https://stackoverflow.com/questions/1130846/ejb-インジェクション)
  • [REST サービスと EJB 3.1 の組み合わせ](https://dzone.com/articles/combining-rest-services-with-ejb-31)
  • [EJB 3.1 と REST - 軽量ハイブリッド](https://weblogs.java.net/blog/emcfarlane/archive/2009/12/10/ejb-31-and-rest-lightweight-hybrid)
  • [EJB の挿入戦争中の jar から jax-rs クラスへ](https://stackoverflow.com/questions/6474811/injecting-an-ejb-from-a-jar-into-a-jax-rs-class-in- a-war)

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。