• ベストアンサー

インタフェースについて

現在、EJBにてをWebシステムを開発しようとしている者です。そこでふと気になったことがあります。 それは、EJBにおいてローカルインタフェース、Homeインターフェイス、Remoteインターフェイスは一体それぞれどういう役割があり何の意味があるのか?ということです。普通のJavaBeansではなぜいけないのか? いろいろ、参考書見てもネットで調べてもピンとこないので誰か分かりやすく教えてくれる方いたらアドバイスお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#49664
noname#49664
回答No.1

私もあまりEJBは詳しくないので、概略程度の説明になりますが・・・。 EJBを使うとき、勘違いしてはいけないのは、「EJBは、Webアプリケーション開発のためのものではない」という点だと思います。EJBは本来、Web開発のためのものではありません。あくまで「分散処理」のためのコンポーネント技術です。  分散処理のためのものですので、基本は「分散処理に関する機能を実装したコンポーネントを作り、それを利用する」ということになるかと思います。EJBでは、そのためにRMIのためのインターフェイスを必要とします。これはローカル上とリモート上で異なる処理を行うため、2つの異なるインターフェイスが用意されています。ローカルであればそのままEJBサーバとクライアント間でEJBObjectをやり取りしますが、リモートである場合にはJNDIを介してEJBHomeを登録し、それによりEJBObjectを取得するような仕組みになっていたと思います。こうした違いにより、2つのインターフェイスが用意されていたのだと思います。  「普通のJavaBeansではなぜいけないのか?」ということですが、それではEJBObjectとして扱うことができません。EJBObjectはEJBHomeインターフェイスを内包しており、これによりクライアントがEJBコンテナからEJBを生成し検索することができます。  つまり、EJBコンテナの中でEJBとして機能するオブジェクトとするためには、これらのインターフェイスがないとダメだということです。そういうようにEJBコンテナは作られているわけですから。例えばサーブレットコンテナで動くオブジェクトはHttpServletを継承していないといけませんね。ただのJavaBeansでは動きません。「なぜ、ダメなのか?」といわれれば、「そういうようにサーブレットコンテナが作られているから」としかいいようがありません。それと同じでしょう。  逆に、なぜEJBを使おうと考えるのですか? サーブレットコンテナにApplication Beanなどを常駐させるのではなぜいけないのですか? そこを考えると、「通常のBeanとEJBは何が違うのか」ということが明確になってくるんじゃないでしょうか。ただ、サーバにあるBeanにアクセスするだけならEJBなんて不要です。別にエンティティBeanなんか使わなくてもデータベースアクセスする永続化オブジェクトなんて作れるわけです。私ならEJBなど使わずHibernateですませます。  そうではない何かを実現するためにEJBはあるわけでしょう。それは何なのか?といえば、突き詰めると「分散処理が必要かどうか」という部分にたどり着くと思うのです。 ちなみに、時期EJB 3.0ではDI(Dependency Injection)の手法が大幅に取り入れられ、こうしたやたら重たいインターフェイスを引きずったEJBからおさらばできるようですよ。そのへんもあるので、私は今、EJBに手を出すのはちょっとためらっています。3.0から勉強をしようかな?と思ったりしています。3.0ではかなりEJBは変わりそうですので、そちらの仕様なども確認してみてはいかがでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ひとつのインターフェースで複数のEJBクラスを参照する

    はじめまして、MAKOTOと申します。 EJBを使った開発を行っているのですが、 サーブレットからEJBクラスを呼ぶとき 現在はRemoteインターフェイス、Homeインターフェース、EJBクラス1を1対 にしているのを Remoteインターフェイス1 Homeインターフェース1 EJBクラス1 Remoteインターフェイス2 Homeインターフェース2 EJBクラス2 ↓のように1対Nの関係で呼び出しを行いたい Remoteインターフェイス Homeインターフェース EJBクラス1 EJBクラス2 EJBクラス3 EJBクラス4 EJBクラス5 このようなことは可能なのでしょうか?

    • ベストアンサー
    • Java
  • EJBセッションBeanとEJBエンティティBeanについて

    はじめまして。 質問があります。 参考書によくEJBセッションBeanやEJBエンティティBeanという 用語が出てくるのですが、これらは一体何者なのでしょうか? 自分で作るJavaBeansなのでしょうか?それとも すでに開発現場などで使いそうな機能を実装したコンポーネント で、開発者はただそれを使用するだけのものなのでしょうかつまり 出来あいのコンポーネントなのでしょうか? どうかご教授お願いします。

    • ベストアンサー
    • Java
  • JavaBeans,JSP, Servlet(MVC)のみを使った開発って本当に業務で行われているの?

    こんにちは、私がWeb技術を勉強するときによく使う本として、Sun教科書Web Component Developer(試験310-080の対策本なのですが、おそらく現在売っているものより1バージョン古いです)という本があります。 この本には,webのMVCアーキテクチャは以下のように 設計されると記載されています。 サーブレット:Controller(システム処理の制御) JSP :View (画面) JavaBeans :Model (ビジネスロジック) しかし、実際の業務でビジネスロジックがJavaBeansのみで行われているシステムはあるのでしょうか?JavaBeansの定義としては、getXXXやsetXXXアクセス、またコンストラクタが引数をもたずpublicなどと ありますが、これを無視した普通のJavaクラスもビジネスロジックに使われているのではないでしょうか? EJB, Strutsを使わない開発環境でという条件付で、どなたか業務経験のある方、この疑問に答えていただけないでしょうか?

  • jbossでEJBをネットワーク的に分割して使用するには

    初めまして、最近EJBとjbossの勉強を始めたものです。 あるサーバにあるEJBから、他のサーバにあるEJBをリモートで呼び出して使用したいと思っています。 どの参考書にも分散オブジェクトについてや、リモートインタフェースとローカルインタフェースの違い、JNDIによる名前解決等に関することは書いてあるのですが、実際にEJBをネットワーク的に分散させて配置するとなると、具体的な手法について触れているものは見当たりません。 どなたか御存知の方がおられましたら、教えて戴けませんでしょうか。 具体的な解答ではなくても、関連するドキュメントのURIだけでもかまいません。 どうかよろしくお願いいたします。

  • ユーザーインターフェイスについて

    VBやAccessなどでアプリケーションの開発の仕事をし始めて半年たちました。 よく思うのですが、アプリケーション開発の際にユーザーインターフェイスについては、みなさんは何か参考にされていますか? 使い勝手などはモノによると思いますが、デザインなどの面で参考になるものがほしいのですが、ネット上にはプログラミングのTIPSなどはあっても、アプリケーションの見た目のデザインに関する資料はあまり見当たらない気がします。 何かいいサイトなどを知ってる方がいらっしゃいましたら教えていただけますか?

  • Observerインターフェイスについて

    Javaを勉強中の者です。宜しくお願いします。 JavaのAPIの中で、Observerはインタフェースとなっています。Observerが普通のクラスではなくてインターフェイスとなっているのはなぜなのでしょうか? インターフェイスだと、複数の継承が可能になるからでしょうか?でももしそうなら、あるクラスAがObserverだけを継承している場合は、複数継承ではないので、Observerをインターフェイスにする必要がなくなりますよね。。という事は、他にもこのObserverをインターフェイスにする利点(理由)があるのでしょうか? どなたかご教授をお願いします。 Observerについては、下記のサイトを参考にしました(http://www.fuka.info.waseda.ac.jp/~washi/m_html/node12.html#observer)

    • ベストアンサー
    • Java
  • EJBコンテナ。

    OJT期間中でサーバサイドを勉強中です。 アプリケーションサーバーの使用で組んだEJBをデプロイ(配置ですか)したときのコンテナの動作を知りたいです。 ちなみに基本的にアプリケーションサーバはオートデプロイで、jarファイルを当該ディレクトリに置いたとき、自動的にEJBが認識されます。 そもそも、EJBのコンテナとは、アプリケーションサーバにEJBが認識された時に作られるものなのでしょうか? クライアントからEJBの機能を呼び出そうとしたときにコンテナを意識したことはありませんが、参照の取得の過程でHomeインターフェース、Remoteインターフェース、Beanは一体どのような過程を辿ってインスタンスを生成し、実行可能状態に至るのでしょうか? また、Beanで実装したビジネスメソッドを実行する過程はどのようなものでしょうか?(まぁ、インスタンスが生成されれば普通にメソッドが呼び出されるのですが) 内部の概念の部分で、知る必要がないかも知れませんが、知りたいのでぜひ教えてください。 ちなみに java.sun.com のサイトにあるj2eetutorial を見て勉強中ですが、そこの説明は表層的なもののようでよくわかりません。 それと、余裕がありましたら、複数のサーブレットに渡って一つの EJB インスタンスを使用する方法(Sessionに設定する以外に)を教えてください。 いまいちよく分かっていないので、質問内容が的外れになっているかも知れませんが、よろしくお願いします。 説明するのが面倒くさいという方は解説のあるページを教えていただくだけでも結構です。

    • ベストアンサー
    • Java
  • シンク

    初心者の質問で申し訳ありません。サーブレットとJavaBeansもしくは普通のJavaファイルで作るプログラムを考えているのですが、ふときずいたことがありますので質問してください。 サーブレットはコントローラーの部分をやっていて、基本的には、クライアントのリクエストをまっていてリクエストに応じてif elseで場合わけをして、別々のJavabeansを呼んでいくのだと思います。 ということはサーブレットはJavaBeansに比べて極端に数がすくないのではないのでしょうか?1つのシステムに一個とまではいかなくても、サーブレットは少量で、 実際の開発現場ではサーブレットより量の多いJavaBeans の開発がメインで、時間のかかる部分なのでしょうか?

    • ベストアンサー
    • Java
  • MIDIインターフェースについて

    同じような質問はありましたが、ちょっと違うので新規に質問させていただきます。 当方ワークステーションシンセ(だけの)創作活動からPC上のDAW環境に移転を考えている者です。 SONAR7の説明書やネットで調べて勉強中なのですが、MIDIインターフェースで困ってます。 MIDIインターフェースとは… ”MIDI信号を送受信するための機器である” 漠然としすぎて途方にくれてます…汗 調べたところによると、絶対必要だとか、なければなくてもいいとか、オーディオインターフェースだけでもいいとか、いろいろ意見があって混乱してます。 店舗店員にも「オーディオインターフェースだけでいいよ」と言われました。 質問させていただきたいことは 1. MIDIインターフェースの働きについて教えてください。 (前記のような「信号の送受信」といった定義的なことではなく、「リアルタイム入力をするため」に必要など、具体的なものをお願いします) 2. 「オーディオインターフェースがあればいらない」っていうのはどういう意図なんでしょうか? 3. 私の場合は必要なんでしょうか? ちなみに私のPC環境はWindowsVista Home Premium、メモリ2GB、まだ使ってませんがソフトはSONAR7、オーディオインターフェースはUA-25(MIDI端子あります)です。

  • LinuxのサーバサイドJavaをWindowsで開発できますか

    サーバサイド以外でのJavaアプリと、PHP,MySQLでのWebアプリ開発の 経験があります。 この度、いよいよサーバサイドJavaでWebアプリを開発することにな りました。 与えられた環境はWebサーバにLinux/Apache、 DBサーバにWindows2000Server/SQLServer2000です。 この際勉強の意味合いもあり、EJBも使用したいと思っておりまして、 LinuxサーバでサーブレットコンテナとEJBコンテナを稼動させたいと思 っています。 そこでお伺いしたいのが、このようなWebアプリをWindowsで開発できる かについてです。 普通、開発環境はWindowsでということが多いと思うのです。ネットや 書籍を参照しても、Windowsで間発環境を構築している例が殆どのよう な気がします。 私も、普段開発で使用しているWindowsXPマシンで、 JBoss+Eclipse+Strutsの環境を構築し、開発したいと思っています。 きっとLinuxにも同じようにJbossをインストールということになるのだ と思うのですが、それにしても、開発環境=Windows、本番環境=Linux、 ということになり、開発と本番の環境が全く違うことになってしまうと 思うのです。 Javaはプラットフォームフリーなので気にしない、ということなのか、 そんなことない気がします。 サーバサイドに関しては初心者でして、根本的に的外れなことを言って しまっているかもしれません。 出だしから基本的なところで躓いてしまっていまして、何卒アドバイス をお願いいたします。

友達に遊びに誘われない
このQ&Aのポイント
  • 友達に遊びに誘われない理由は喧嘩の影響と思われる。
  • 自分が喧嘩したことで他の人からは「誘うな」と言われている可能性がある。
  • 彼なりの気遣いかもしれないが、どう対応すれば良いか悩んでいる。
回答を見る

専門家に質問してみよう