- - PR -
WEBサーバとAPサーバの違い
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-02 11:49
WEBサーバとAPサーバの違いがわかりません。
APサーバがJ2EE等JAVAの実行をしてWEBサーバがHTMLの送受信をするという認識なのですが、 APサーバが無くてもJRE等実行環境が入っていればJ2EE等のJAVAの実行はできるのでAPサーバは必要ないのでは? WEBサーバのプロセスにjava.exeへの実行権限さえ与えていればAPサーバは必要ないのでは? と思ってしまいます。 APサーバの役割について説明をお願いします。 | ||||
|
投稿日時: 2007-02-02 11:58
簡単に言えば。
APサーバとかにはきっちりとサービスに必要な トランザクション制御とかコンテキスト制御とか JAVAの実行環境だけでは無く、 様々な制御機能を備えてます。 つまり商用サービスとかを実現する際に必要な機能が 含まれてる訳ですね。 まぁそんな所です。 | ||||
|
投稿日時: 2007-02-02 12:22
JREだけでは「J2EE等のJAVAの実行」はできません。
J2SE、と違い J2EE で規定されているのはほとんどインターフェースです。 実際の実装は AP サーバベンダに任されています。 java のプロセスは長時間稼働して初めて本領発揮します。 java プロセスの初期化は非常に重たい処理ですので CGI として起動させると火傷します。 java.exe の読みこみ、各種ライブラリの読みこみ、コンパイル、main クラスの実行、といった複雑な処理が必要だからです。 また CGI として起動させた場合 JSP や Servlet 等は動作させられません。 まずはフリーで使える Tomcat や WebLogic Server などを動かしてみて感覚を掴んでみることをオススメします。 | ||||
|
投稿日時: 2007-02-26 16:17
APサーバがトランザクション管理も行っているという話ですが、セッションのトランザクション管理などですね。たしかにcgiだと接続ごとのセッションオブジェクトは持つことができませんね。 JREでは、J2EEの実行ができないというのは初耳でした。調べてみたところ、classpathにservlet-api.jarなどのライブラリを読み込ませないとコンパイルができませんでした。 回答ありがとうございました。 | ||||
|
投稿日時: 2007-02-26 20:12
ゆきお的観点からゆきお的解釈で書いてみました。
WEBサーバであるURLにアクセスが来たらJAVAのあるプログラムを起動させると 1000件のアクセスが同時に来たとき1000個のVMが起動されますよね。 1つのJAVA_VMが32MByteの最低メモリを取得するとしたら それだけで32GByteのメモリが必要になる。 インターネット創世記にCGIチャットなんかでサーバがよくダウンしてたのはこのせいです。 (1アクセスに1つperlのプロセスが起動するから凄く重い) でもAPサーバで、あるURLにマッピングされたプログラムってのは APサーバ起動時にそのプログラムが起動され常駐しています。 アクセス内容は引数という形で渡って来るため 1つのインスタンスで何件でも同時に処理可能なため 非常に軽いというのが最大のメリットかな? ※だからサーブレットでフィールド変数を使用するには 注意が必要なんだけど繋がるかな? 【イメージ】 CGI 起動⇒処理⇒終了(任意のタイミング) 起動⇒処理⇒終了(任意のタイミング) 起動⇒処理⇒終了(任意のタイミング) APサーバ 起動(APサーバ起動時) 処理 処理 処理 終了(APサーバシャットダウン時) ※常駐の下りは微妙に間違ってる? けど上記認識で問題ないと思う 間違ってたら指摘をお願いします | ||||
|
投稿日時: 2007-02-26 23:45
APサーバ = J2EE規格実装 + 運用管理 + 独自部分 というところでしょうか。 J2SEとJ2EE規格の区別がよく分からないのならば、 APサーバとWebサーバは違いがないと思います。 APサーバにWebサーバの機能もついてることがありますから。 J2EEというのは、大規模システム開発用規格です。 まぁ、小規模で使ってもいいですが。メッセージングなんて 役にたたん規格に見えます。(見えてました。いまでも、そう見えますけど。。。) | ||||
|
投稿日時: 2007-02-27 11:08
ええっ?! 1台のサーバー内でも非同期処理に便利ですよ。 ロールバックしたらリトライしてくれたりもするので。 | ||||
|
投稿日時: 2007-02-27 11:23
J2EEにはHTTPのセッション管理も含まれていますが、 トランザクション管理はセッション管理ではないです。 二相コミットを実装したTPモニタのことです。 ちなみにTomcatはJ2EEのごく一部(Webコンテナ)だけを実装しています。 |
1