• ベストアンサー

EJBコンテナ。

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

  • Java
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • Harry_
  • ベストアンサー率55% (36/65)
回答No.2

たとえ1冊だけでも、隅々まで繰り返し読めば、 相当な知識を得ることができると思います。 O'Reilly の Enterprise JavaBeans 第3版 がお勧めです。 知る限り、これらの書籍から得ることのできるほどの 深く系統的な知識はWEBでは手に入りません。

その他の回答 (1)

  • yuji
  • ベストアンサー率37% (64/169)
回答No.1

最近はEJBについての解説本がいろいろ出ています。 それをまずお読みになることをお勧めします。 分厚い&ちょっと高いですが、自分への投資と思ってください。

Doraemonster
質問者

補足

アドバイスありがとうございます。 私も解説本や教材などを吟味して購入したいのはやまやまなのですが、お恥ずかしい話、経済的な問題が生活にのしかかっていましておいそれと購入できる身分ではないのです。 それで会社でサイトを中心に調べていましたが、はっきりとした説明をしているサイトが見つからないのです。 基本的に調べるサイトとしては稚内北星学園大学のHPや、質問文にもありますようにjava.sun.comです。@ITを見ることもあります。 今後の勉強にも役立つと思うので、こんなサイトがありますよ、このサイトを見たら色々のっているのでもしかしたら解説しているかも知れませんよという提示だけでも良いので教えていただけたら幸いです。

関連するQ&A

  • インターフェイスと抽象クラス

    なかなか理解が難しくて苦しんでいます。 で自分なりに理解したのですが、 抽象クラス→内容に決まっているメソッドと決まっていないメソッドがある場合に決まっていないメソッドを あとからオーバーライドするだけでスーパークラスで定義したすべてのメソッドを利用できる。 これでただしいでしょうか? で、インターフェイスなのですが、この抽象クラスとそっくりなんですが、 (1)変数は定数になる(強制static)(2)メソッドは名前のみの宣言(内容は記述できない) と言うことで、かなり???なのです。 何のために・・・???記述するんでしょうか?? ただひとつメリットがあるとしたら、インターフェイスを実装すると、インターフェイスの配列でインスタンスを 生成出来るということぐらいでしょうか。 そこでちょっとお門違いの疑問かもしれないんですが、 Runnable、やMouselistenerはメソッドの内容が書かれていないのに、 なぜ機能を持たせることが出来るのでしょう??? 認識違い、間違い等ありましたら、教えてください よろしくお願いいたします。

    • ベストアンサー
    • Java
  • doGetの引数に「入るモノ」について

    サーブレットにおけるクラスのdoGetメソッドについて 質問です(Tomcat3.2.1 + JDK1.3)。 public void doGet(HttpServletRequest request, HttpServletResponse response) 理屈で考えると、このdoGetメソッドの2つの仮引数 (request, response)には、 「インターフェースHttpServletRequestをimplements したクラス」のインスタンス ‥‥と、 「インターフェースHttpServletRequestをimplements したクラス」のインスタンス の2つのインスタンスが入れられるハズですよね。 そこで疑問なのが、 1. それら2つのクラスの名前はなんというのでしょう? (というのはインターフェースHttpServletRequestや インターフェースHttpServletResponseを 実装したクラスのメソッドの処理内容の定義を 見たいのです‥) 2. 誰がそのクラスをインスタンス化しているのでしょう? (サーブレットコンテナのTomcat? JRE? JVM?‥ いったい誰が?‥‥用語の区別も曖昧なのですが) 補足すると、 Javaアプリケーションのmainメソッドでは、 public static void main(String[] args) として、コマンドラインの引数がそのまま仮引数argsに 入る。じゃあ、サーブレットの場合はどうなのか? といった感じです。 2.のほうはトンチンカンな質問かもしれませんが、 1.の質問は切実です。 ご存知の方、教えてください。

    • ベストアンサー
    • Java
  • サーブレットコンテナのメモリ解放について

    お世話になっております。 今回質問させていただきたいのはサーブレットコンテナ上のメモリ解放についてです。サーブレットの動作フローとしては、 (1)クライアントからHTTPリクエストが投げられる。 (2)Webサーバがリクエストを受け取り、コンテナへリクエストを委譲する。 (3)サーブレットコンテナは、リクエストとレスポンスのラッパーオブジェクトを生成し、リクエストへリクエスト情報をマッピングする。 (4)(3)で生成したリクエスト/レスポンスオブジェクトをサーブレットへ参照渡しする。 (5)サーブレットが処理を実行する (6)レスポンスを生成し、クライアントへ返す。 という流れかと思いますが、この際に(3)で生成されるラッパーオブジェクトや、ロードされたサーブレットが解放されるのは、レスポンスを返した後なのでしょうか。それとも次のリクエストに備え、オブジェクト本体は確保されたまま、次のマッピングに備えるのでしょうか。(サーブレットの解放はコンテナが終了した際?) はたまた、やはりJava特有のガベージコレクションが働き、メモリ解放はガベージコレクションのタイミングで行われるのでしょうか、、 よろしくお願い致します。。m(._.)m

    • ベストアンサー
    • Java
  • Javaのstaticメソッドの意味を教えて下さい

    Javaのstaticメソッドの意味を教えて下さい。 現在の解釈では、staticなメソッドとはインスタンスの生成に依存せず呼び出せる処理のことだと認識しています。逆にstaticでないメソッドは、生成後のインスタンスにしか使えない処理だと理解しています。 しかし、コンストラクタがstaticでないことに気がつき、疑問が生まれました。コンストラクタはstaticではないので、コンストラクタを呼び出す時にはそのクラスのインスタンスが必要になるはずです。しかしこのインスタンスを作るのにもコンストラクタが必要です。コンストラクタを使うためにインスタンスが必要で、インスタンスを作るためにコンストラクタが必要という無限ループになってしまいました。 そこで改めて、staticメソッドの意味を教えて頂きたいです。

  • C#にてクラス・メソッドを文字列で指定

    お世話になります。このカテゴリーで良いか微妙ですが。。。 C#で、以下のようにインスタンス生成+メソッド起動を行う処理について、クラス名とメソッド名を文字列で指定し、実行することはできないでしょうか? 尚、メソッドの引数は常に「ref strdata」の固定であるという前提で構いません。 ご教授、お願いします。 --------------------------------------------------- //引数(参照渡し)用の変数 strring strdata = string.Empty; //クラスcsTestのインスタンス生成 csTest insTest = new csTest(); //メソッドmsTestを実行 insTest.msTest(ref strdata);

  • WEB系業務アプリケーションのJAVAでの開発について

    WEB系業務アプリケーションのJAVAでの開発について j2eeプログラマー初心者です。 まだ経験が浅く、下記内容について、ネット、書籍で調べたのですが今一理解しずらいので 経験豊富な方いらっしゃいましたら、ご教授の程お願い致します。 【質問内容】 (1)JDBCデータソースについて そもそも、データソースって概念的にどの様なものなんでしょうか? 今一イメージがつかめないのです。 JAVAからDBを操作するインターフェイスっていわれても・・・ 具体的にどの様な物なのか理解できないのです。 (2)ear,warファイルについて war : WEB-INF以下全ての圧縮ファイル ear : webappsの各アプリ毎のフォルダ以下全ての圧縮ファイル という認識で正しいでしょうか? (3)サーブレットインスタンスについて APサーバーでサーブレットのインスタンスを生成する場合に 1リクエストごとにそれぞれインスタンスを新規作成するのでしょうか。 それとも1発目のロード時のみインスタンスを作成し、1つのインスタンスを使いまわしているのでしょうか。 また、マルチスレッド対応とはどういう意味なのでしょうか。 (4)デプロイについて デプロイ対象のファイルは必ずearファイルでなければいけないのでしょうか? 以前携わった案件ではwar形式でデプロイしていたのですが APサーバーによって違うんでしょうか。 何か設定方法とかってあるんでしょうか。 (5)undo機能の設計について 現在、UNDO機能を下記仕様でつくりの設計から考えています。 仕様:UNDO機能を実行する1つ前の処理を元に戻し 2つ前の処理の完了時点の状態まで復元する。 今回作成する当機能は全画面で使用できるように 汎用的に作成する必要があります。 どなたか同じような機能を作成された経験がある方いらっしゃいましたら どの様な設計にしたか、ご教授くださいませ。 (6)ページ移動機能の設計について 下記仕様でつくりの設計から考えています。 仕様:一覧表示系画面で、20件までをひとまず表示し、21件め以降は 「次ページ」ボタンを押下し、40件目までを表示する・・・・ 以降取得件数分続く 当機能も汎用的に作成する必要があります。 どなたか同じような機能を作成された経験がある方いらっしゃいましたら どの様な設計にしたか、ご教授くださいませ。 以上、ご教授宜しくお願い致します

  • Java 静的メソッドとインスタンスメソッド

    静的メソッドとインスタンスメソッドの使い分けがよくわかりません。 私の認識は 静的メソッド:インスタンスメンバ変数を参照する必要がない処理 インスタンスメソッド:インスタンスメンバ変数を参照して行う処理 と思っています。 よって、例えばDAOを作成する場合、select、update、insertを実行するメソッドを作成しますが、これらはクラスのインスタンスメンバ変数を参照する必要がないので静的メソッドにするべきだと思っています。 しかし、本やネットのDAOのサンプルプログラムはインスタンスメソッドで作成されています。 これらは、private static String の変数(SQL文が記述されている)を参照していますが、インスタンスメンバ変数は参照していません。 なぜselect、update、insertのメソッドをインスタンスメソッドにする必要があるのかわかりません。 静的メソッドとインスタンスメソッドの使い分けの基準を教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 【C++】静的リンクと動的リンクの違い

    静的リンクと動的リンクの違いについて教えてください。 ググって、wikiにて確認したところ、 動的リンクは、実行時にプログラムの結合を行う。 静的リンクは、コンパイル直後の実行ファイル生成時に、ライブラリ等を全てリンクし、必要なコードが全て揃った実行ファイルを生成する。 というのはわかりました。 それを踏まえて、  (1)-(1)libファイルで静的リンクさせるケース   メソッドやプロパティのインデックスというかインタフェース仕様のみ書かれている。   そして、そのインデックスを元にコンパイルチェックを行っている。  (1)-(2)objファイルで静的リンクさせるケース   objには、.cppと、.h に書かれている処理のうち、そのソース本体(そのクラス自身のモノとして持っている処理)のプロパティやメソッドのことが機械語で書かれている。   プロパティやメソッドが書かれているため、当然インタフェース仕様もわかる。 であろうと捉えていますが、この認識で大雑把には合っていますでしょうか? また、DLLを使う場合、動的リンクとは呼ばれているものの、 「DLLでは、objに加え、必要なリンクの情報まで持っている」と思われるので、 結局、リンカによるリンク実行時に、インタフェースで不整合が起きていないかはチェックされているという認識なのですが、合っていますでしょうか?  (だとすると、なぜ、ある意味、DLLを使っていても静的リンクなのかなと感じ、動的リンクと呼ぶことに不自然さを感じます) 宜しくお願いいたします。 .

  • フレームワークによくあるインターフェースについて

    たとえばSpringだとInitializingBeanインターフェースを 実装してafterPropertiesSetメソッドに処理を書くことによって Beanを初期化したときにその処理が実行されるようですが、 これはどのような仕組みでそのインターフェースを実装しているか どうかを判断しているのでしょうか? getInterfacesメソッドを使うとそのクラスが実装している インターフェースを調べることができるようですが、 これは親クラスのインターフェースまでは調べられないようですし、 フレームワークはどのようにしてそのクラスが実装している インターフェイスを判定しているのか不思議です。

    • ベストアンサー
    • Java
  • GlassFish v3 VS Tomcat6

    現在、Javaを動作させるサーバ(コンテナ)として、主にTomcat6を使用しています。 他にも、GlassFish/JBoss/Geronimo などがあると思うのですが、その中でも、GlassFish(特にv3 prelude) を使用するメリット・デメリットはありますでしょうか。 Tomcatと比べてココがいい!という点はありますでしょうか。 EJBに関する部分は現在は特に必要ないため省いてください。 「起動が早い」や「デプロイが楽」など、基本的な開発に影響する部分でのメリット・デメリットを知りたいです。 ちなみに、FWの構成としては、  (1)SAStruts + S2Container + S2JDBC  (2)Struts2 + Spring2.5 + DBFlute0.9.5 or iBatis を使用しています。 追記:GlassFish だけでなく、他サーバに関する情報もあればコメントいただければありがたいです。今後のサーバ選択の参考にさせていただきたいです。 以上、よろしくお願いいたします。