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 サイトの他の関連記事を参照してください。