2012-02-01 19 views
1

Guice注入プロジェクトをglassfish上で実行するJava EEプロジェクトに変換しようとしています。EJBへの注入

私は、@Remoteと注釈されたHelloというインターフェースを定義するlibプロジェクトを持っています。次に、beanがあるHelloBeanと、@Statelessと注釈されたimplプロジェクトと、パラメータと@Injectという単一のコンストラクタがあります。

は、その後、私はlibに依存し、それが@EJBでアノテートメンバーとしてWebサービスを作成するためのインタフェース、HelloService@WebServiceで注釈を付け、そしてHelloだプロジェクトだっいます。

これは機能していないようです。 Beanには引数なしのコンストラクタが必要なので、私はHelloBeanをBeanとして作成し、HelloImplをPojoとして作成し、引数を持つ単一の@Injectコンストラクタを作成します。私は、とHelloImplをに@Inject,@Resource@EJBの両方に注射しようとしました。いずれも動作しないようです。

HelloまたはHelloImplHelloBeanに設定すると、NPEが得られます。 @ResourceHelloまたはHelloImplの場合、Lookup failed for delegateとなります。 I @EJBHelloImplの場合、同じエラーが発生します。 @EJBHelloと私は(明らかに)stackoverflowsを取得します。

コンストラクタインジェクションを使用したいのは、クラスを作成するより正しい方法だと感じているからです。しかし、CDIとEJBをどのように組み合わせることが可能かはわかりません。

@Injectコンストラクタを使用してPojoをBeanに取得するにはどうすればよいですか?または私の計画に根本的に欠陥がありますか?

+0

[Glassfish 4.1はear/ejb/webモジュールを使用しているときRestFulサービスを実行できません](http://stackoverflow.com/questions/25879898/glassfish-4-1-cant-run-restful-service) -when-using-ear-ejb-web-module) –

答えて

2

もっと良い方法は、@Injectでアノテーションされた初期化メソッドを定義することです。どのパラメータも注入点であり、CDIを介して供給されるべきである。コンストラクタでもこれを行うことができます。 WEB-INF/beans.xmlも持っていることを確認してください。

+0

ありがとう、beans.xmlファイルが見つかりませんでした。 – Staale

関連する問題