質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
GlassFish

GlassFishは、Java EE準拠のアプリケーションサーバの名称です。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

Q&A

1回答

4977閲覧

Java EE6のManaged Beanって何ですか?

jurin

総合スコア17

GlassFish

GlassFishは、Java EE準拠のアプリケーションサーバの名称です。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

0グッド

2クリップ

投稿2016/03/06 03:27

Java EE6のManaged Beanって何なのかモヤモヤしています。
例えば、下記のようにJAX-RSアノテーション@Pathをつけた
Beanのことでしょうか?

java

1@Path("/book") 2public class BookResource{ 3 ~~ メソッドなどは省略 ~~ 4}

それとも下記のようにCDIのアノテーション
javax.enterprise.context.RequestScopedをつけた
Beanのことでしょうか?

java

1@Path("/book") 2@RequestScoped 3public class BookResource{ 4 ~~ メソッドなどは省略 ~~ 5}

おそらく今回モヤモヤしていることの答えはThe Java EE 6 TutorialJava EE 6 Technologies
記載されてると思い込んでますが見つけることができていません。

質問に至る背景

現在、Java EE6でRest Webサービスを作成しています。
下記2つのチュートリアルを参考にしました。

  1. Integrating JAX-RS with EJB Technology and CDI
  2. Using Interceptors in CDI Applications

上記チュートリアルよりJavaEE6ではJAX-RSとCDIは
組み合わせてつかえると理解しました。
この結果、下記のようなコードになりました。
(@DefaultProcessアノテーションは自作したものです。)

java

1@Path("/book") 2@RequestScoped 3@DefaultProcess 4public class BookResource{ 5 @Inject BookResourceService ts; 6 ~~ メソッドなどは省略 ~~ 7}

上記のコードはBookResourceクラスにたいして下記手順でアノテーション付与し作成しました。
(BookResourceクラスは質問のためのサンプルクラス)

BookResourceクラス作成手順
  1. JAX-RSのアノテーション@PathをつけてBookResourceクラスをJAX-RSのビーンにする。
  2. CDIアノテーション@RequestScopedをつけてCDIビーンにする。これにより、@InjectでコンテナからEJBをインジェクト可能。
  3. 上記のチュートリアル(Using Interceptors in CDI Applications)を参考にInterceptors関連の設定(bean.xml)、Interceptor関連のクラスとアノテーションを作成。ここで作成したアノテーションは@DefaultProcess。
  4. 3で作成したアノテーション@DefaultProcessをBookResourceクラスに付与。
BookResourceクラス動作確認結果

Embedded GlassFish All In One 3.1.1 で動作すること確認できました.

BookResourceクラス動作確認後もモヤモヤしていること

チュートリアル(Using Interceptors in CDI Applications)に記載のIntercepterが
なぜ動作するのかモヤモヤしています。
私の解釈では @RequestScopedアノテーションを付与してBookResourceクラスが
Managed Beanというものになったため、Intercepterの仕組みが動作するように
なったのだと思っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

チュートリアルなど利用されているので、お調べ済みかも知れませんが。
ManagedBeanはJ2EEの頃からJSFとセットで実装されており、CDIはJavaEE6からの実装となる後発の機能です。勉強不足なのでCDIがManagedBeanの完全なサブセットとなるのかは知らないのですが、アノテーションは共通のものが多く、誤り混在してしまう恐れもあるようです。

JavaEE6アノテーションの使い分けについて

過去資産を利用するのでは無く、最新環境で開発を始めるのであればCDIで始められたら良いかと思います。TipsがManagedBeanのものであれば、CDIに読み替えれば通常は使えるのではないかと思います。CDIでもIntercepterは使用できます。

最初の質問の「どちらがManagedBeanか?」に関しては、下段のソースが近いですがインポート部が異なります。

Java

1package beans; 2 3import javax.faces.bean.ManagedBean; 4import javax.faces.bean.RequestScoped; 5 6@ManagedBean 7@RequestScoped 8 9public class NewClass { 10 11}

以上、私見を書いてきましたが以下のサイトが分かり易いかもしれません。

ManagedBeanの行方

ご参考までに。

投稿2016/03/07 02:17

編集2016/03/07 13:03
BlueMoon

総合スコア1339

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問