2

私はJavaEEとEJBを初めて使用します。私はそれを使って最初のいくつかのステップを実行しましたが、基本的な注釈については、グーグルで調べたり電子書籍を読んだりするのにどれだけの時間を費やしても、得られないことがかなりあります。たぶん誰かが私を助けたり、良い説明を紹介したりすることができます。

@ Stateful /@Stateless基本的な考え方は理解できたと思います。しかし、デフォルトで使用されるのはどれですか?

@ ManagedBean / @ Named @Named Annotaionは、カスタム名を持つ@ ManagedBeanと同じですか?

@ Sessionscoped /@Requestscopedこれらは@Stateful/ @ Statelessに干渉しますか?私の理解では、@ Statelessと@Sessionscopedをペアにすることは意味がありません。これは、@ Stateless Beanがサーバー上のこの「Bean-Pool」にあり、単一メソッド呼び出し用であり、永続的なタスク用ではないためです。このロジックに基づいて、@ Requestscoped @Stateful Beanを使用することは意味がないと主張します。これは、最初のHTTPリクエストの後、Beanがクライアントから「切断」されるためです。

プログラムを機能させることができますが、実際に何をしているのかわからない場合、効率的に実行した場合、どうすればよいでしょうか。

4

1 に答える 1

5

AD1.「デフォルト」はありません。EJBはEJBとして宣言する必要があり、それを行うには、、、、で注釈を@Stateless付け@Statefulます。@Singleton@MessageDriven

EJBではない以外にそれらがない場合、「デフォルト」値を定義する方法はありません。

AD 2.@ManagedBean実際には、javax.faces1javax.annotation1の2つがあります。

@ManagedBean率直に言って、 fromjavax.annotationが実際にどこで使用されているのかわかりません。Beanはコンテナによって管理されると宣言されているため、そのライフサイクルは制御されますが、どのコンテナがそれを制御しますか?EJBアノテーションとCDIアノテーションがあるので、どういうわけか時代遅れだと感じています。これらはすべて、アノテーション付きクラスを管理対象として定義していますが、@Namedそれらを管理するコンテナーを明確に定義しています。javax.faces @ManagedBean

@NamedたとえばJSFビュー(UEL式)で使用できるCDIBeanを定義します。@ManagedBeanJSFマネージドBeanを定義します。多くの場合、これらは同じ意味で使用できますが、注意が必要ないくつかの違いがあります。たとえば、使用するBeanは、JSF管理対象Beanにのみ適用できるため、 JSFとして@Named注釈を付けることはできません。@ViewScoped@ViewScoped

AD3.CDIスコープとEJBスコープを混在させるべきではないと思います。これはよく混乱することであり、将来のJavaEEがこの問題に対処できれば素晴らしいと思います。

EJB Bean(@Stateless/ @Stateful)には独自のライフサイクルがあり、CDI Bean(@SessionScoped@RequestScoped)には独自のライフサイクルがあります。
これらのアノテーションを組み合わせて何が得られるかはわかりません。おそらく例外であり、黒魔術のバグであるか、実際には希望どおりに機能する可能性があります。
EJB / CDI仕様で定義されていることを思い出せないので、完全に実装者に依存していると思います。私はそれに依存しません。

于 2012-09-26T14:01:00.837 に答える