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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java EE

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

Java

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

Q&A

解決済

2回答

14857閲覧

EJBは何に使うのでしょうか?

jimyo

総合スコア243

Java EE

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

Java

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

2グッド

1クリップ

投稿2016/03/31 13:20

EJBについて調べると「ビジネスロジックに使う」「サーバーサイドのコンポーネント」など抽象的な説明しか見つからず、具体例は「DB処理」か「タイマー処理」しか見たことがありません。

かくいう自分もDB処理にしか使っていないのですが他にどのような使い方があるのでしょうか?
(@Transactionalアノテーションが追加されてからCDIでもトランザクション処理ができるようになりますますEJBの存在価値がわからなくなりました)

よろしかったらステートレス・ステートフル・シングルトンの使い分けも教えていただけると嬉しいです。

matobaa, ikuwow👍を押しています

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

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

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

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

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

guest

回答2

0

EJBの用途はありません。ありません。

じゃ、なんでEJBなんてものが存在しているのか。ざっくりいうと「歴史的理由」です。それ以上の意味はほぼないと思ってよいです。
http://d.hatena.ne.jp/ryoasai/20110528/1306594182 も参照してみてください。

EJBはもともと、ビジネスロジックそのものを分散コンポーネントとして流通可能にしようとする意図で登場しました。ビジネスロジックを提供する「EJBean提供者」EJBeanを動作させる基盤となる「JavaEEサーバ(=EJBコンテナ)」、それらを組み合わせて業務を組み上げる「デプロイヤ」の3者の役割がJavaEE仕様として明確に決められていました。それら3者をつなぎ合わせるのがコンテナ設定ファイルであり、実際のデータベース接続先と論理名との対応をコンテナ設定ファイルに記載しておき、EJBeanからはその論理名だけを使うように実装することで、ビジネスロジックを実装した時点よりずっとあとに、デプロイヤが実際のデータベース名を決定する、といったことを目指したのです。

しかし、そんな仕様は複雑すぎて、設計も大変で、実行もとても重たかったため、狙っていたコンポーネント市場も形成されず、アンチEJBeanとしての「POJO」「依存性の注入」「設定より規約」という概念が登場し、その概念を実装した Spring や Seasar といったフレームワークが生まれ、これら概念がJava仕様に逆輸入された、という道のりを辿ってきました。もともとのEJBのコンセプトはすっかり骨抜きになっているため、すでにEJBの存在価値はないと言ってもよいでしょう。

投稿2016/03/31 14:04

matobaa

総合スコア2493

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

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

BlueMoon

2016/04/01 08:46

ご回答を拝見しました。JavaEEへの評価が厳しすぎるように感じたのですが、これはJavaEE6もしくは7を使用されたうえでのご意見でしょうか?
BlueMoon

2016/04/01 08:47

引用コンテンツのまとめには「Java EEは重くて使えないと信じている人も一度最新のCDIを試してみるとその生産性の高さを実感できると思います」との記載が有りますが、ご承知でしょうか。
matobaa

2016/04/01 09:38 編集

DI初期にアノテーションは少々使っていましたが、CDIは使ったことはありません。BlueMoonさん、鋭いご指摘に感謝します。 なるほど、Qiitaの記事「JavaEEをはじめよう!」によれば、JavaEEのアノテーションを付与するだけで、永続化をはじめ、面倒な何やらかんやらを簡単にJavaEEフレームワーク(EJBコンテナ)に押し付けられる、と解釈しました。なかなかEJBって便利なヤツですね。
BlueMoon

2016/04/01 14:48

自分の解釈にも死角が有るのかと思い、恐る恐る質問させて頂きました。浸透が遅いと感じる背景には、過去のマイナスイメージが残っているせいも有るのでしょうかね。お付き合い頂き有難うございました。
guest

0

ベストアンサー

JavaEE6,7でもJPAによるDataBaseアクセスに使用します。
下記はJavaEEを解説したコンテンツですが、中盤以降にJPAの説明が有りEJBを利用した例が有ります。

JavaEEをはじめよう!

ステートレス、シングルトンについては簡単にしか触れていませんが、コンテンツ紹介の書籍には具体的に書かれていました。ご参考までに。

質問内容を改めて見て、DBアクセスには利用済で他の用法が無いかというご質問でしたのですね。EJBはJavaEEコンテナ(glassfish,weblogic,websphere)の機能をコントロールする為のAPI的役割を持つものです。ですからコンテナ機能を利用したいという要件が無ければ、DBアクセスにしか利用しないのが通常ではないでしょうか。glassfishの利用経験しかないのですが、セキュリティ機能としてレルム認証に使用したことは有ります(学習がてらですが)。アプリケーションロジックとは独立して権限管理を実装できるメリットは有ります。

投稿2016/04/01 00:26

編集2016/04/01 15:03
BlueMoon

総合スコア1339

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問