2016-04-27 11 views
0

Java EEアプリケーションを作成し、EJBプロジェクトにステートレスセッションBeanを追加しました。 EJBプロジェクトはweb/WARプロジェクトに依存しており、EJBプロジェクトで作成したEJBを自分のサーブレットに挿入します。これは正常に動作し、WebアプリケーションプロジェクトのサーブレットにこのEJBのメソッドをデプロイして呼び出すことができます。私は混乱していました。私は、EJBコンテナにはEJBがローカルまたはリモートのいずれかのインターフェイスを持つ必要があると考えました。しかし、私の例では、私はインターフェースを全く必要とせず、EJBを直接呼び出すことができました。少なくとも、ローカルインターフェースを必要と思っていました。EJBエンタープライズアプリケーションはEJBインタフェースを必要としません

答えて

1

EJB 3.1以降、ローカルサービス用のEJBインタフェースはもう必要ありません。 @Stateless@ステートフルまたはで注釈が付けられたPOJOクラス@SingletonはエンタープライズセッションBeanになります。

自然契約に戻るクラスの契約は、すべて の公開メソッドで構成されています。パブリックメソッドは、クライアント によって使用されることを意図しています。 EJB 3.1 仕様(JSR 318)の章3.4.4に次のようにエンタープライズJavaBeans 3.1 豆の無インタフェースビューは、正確に定義されています

「... AセッションBeanの無インタフェースビューは変動ありローカルビュー 個別のビジネスインターフェイスを使用せずにBeanクラスのパブリックメソッドを公開する... "

プライベートメソッドはすべて非表示です。 package-privateと の保護された可視性を持つメソッドは、同じパッケージ内のクラス にのみ表示され、通常はテスト目的でのみアクセスされます。 JUnitテスト クラスは「テスト対象クラス」(CUT)と同じパッケージにあり、 は不都合な参照を取り除き、通常は のパッケージプライベートフィールドまたは保護フィールドに直接アクセスします。

チェック:http://www.oracle.com/technetwork/articles/java/intondemand-1444614.html

+0

おかげで、この変更を認識していませんでした。それでもローカルインターフェイスを作成する方が良いでしょうか?また、インターフェイスのないビューがローカルのインターフェイスと同じように機能する場合、ローカルインターフェイスのポイントは何ですか? – joe

+0

リモートインタフェースを使用すると、セッションBeanをローカルで使用する場合は、ローカルインタフェースを指定する必要があります。あなたが豆を遠隔から露出させないなら、私はあなたが豆を作る必要はないと思う。 – Jaumzera

関連する問題