Java EEアプリケーションを作成し、EJBプロジェクトにステートレスセッションBeanを追加しました。 EJBプロジェクトはweb/WARプロジェクトに依存しており、EJBプロジェクトで作成したEJBを自分のサーブレットに挿入します。これは正常に動作し、WebアプリケーションプロジェクトのサーブレットにこのEJBのメソッドをデプロイして呼び出すことができます。私は混乱していました。私は、EJBコンテナにはEJBがローカルまたはリモートのいずれかのインターフェイスを持つ必要があると考えました。しかし、私の例では、私はインターフェースを全く必要とせず、EJBを直接呼び出すことができました。少なくとも、ローカルインターフェースを必要と思っていました。EJBエンタープライズアプリケーションはEJBインタフェースを必要としません
0
A
答えて
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
関連する問題
- 1. EJB:インタフェース
- 2. インタフェースとしてのEJBが注入されていません
- 3. スタートアップejb beanが動作しません
- 4. EJB 2.1 Vs EJB 3.1
- 5. wildfly-9.0.2.Finalの「javax.sql.DataSource」タイプのインタフェースを持つEJBが見つかりません
- 6. Beanを注入しようとしたときに、タイプのインタフェースを持つEJBが見つかりません
- 7. EJB 3.1 - EJB内で@EJBを使用することは可能ですか?
- 8. EJB Beanは複数のインタフェースを実装できますか?
- 9. EJB /ローカルEJBコール間のコールバック
- 10. EJB:
- 11. EJBとWeb Tier
- 12. EJBとFLEX
- 13. EJBとpreparedStatement?
- 14. EJBとSpring + POJO
- 15. EJBと同期
- 16. EJBタイマーはジョブを実行しません。
- 17. EJB Find要素のパラメータManyToOne
- 18. @EJBは外部プロジェクトのServletで動作しませんWFLYEJB0406
- 19. リモートインターフェースはEJBコンテナ
- 20. EJBタイマーはIllegalArgumentException
- 21. EJB 3.1。 @Local注釈は必要ですか?
- 22. コントローラとしてのEJB
- 23. EJBのスレッドとスレッド
- 24. EJBトランザクションとJAX-RS
- 25. EJBとCDIのテストフレーム
- 26. シングルトン起動時のローカルステートレスEJB注入EJB
- 27. EJB 3.1のセキュリティ認証EJBでCDI
- 28. ライブラリ内のEJB - EJBの再利用
- 29. のejb-jar.xml.unfiltered私のEJB Mavenのビルドで
- 30. EJBトランザクション
おかげで、この変更を認識していませんでした。それでもローカルインターフェイスを作成する方が良いでしょうか?また、インターフェイスのないビューがローカルのインターフェイスと同じように機能する場合、ローカルインターフェイスのポイントは何ですか? – joe
リモートインタフェースを使用すると、セッションBeanをローカルで使用する場合は、ローカルインタフェースを指定する必要があります。あなたが豆を遠隔から露出させないなら、私はあなたが豆を作る必要はないと思う。 – Jaumzera