アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、Windows2000+Apache1.3.20+TomCATにてAPPサーバを構築したのですが、作成したServletやJSPはどこへ置けばいいのでしょうか?
Apacheのドキュメントルートは
DocumentRoot "D:/Program Files/Apache Group/Apache/htdocs"
でTomCATは
D:\Program Files\jakarta-tomcat-3.2.3\
の中にconfやbin,webappsなどすべてのファイル/フォルダが入っています。
どうやら、サンプルはwebappsに入っているようです。

Apacheを起動しなくても、8080ポートで接続すればTomCATの画面が現れるので、なぜApacheが必要なのかという疑問と、ServletやJSPの置き場所は?という疑問にぶつかってます。

どなたかよろしくお願いします。

A 回答 (3件)

> WEB-INF/classes


> がURLでは
> servlet
> となるんでしょうか?決まりですか?

明示的に定義をしなかった場合の決まりです。ここにしか置けない、ということでは
無いです。

URL と実際のファイルの対応付けは、web.xml で行なえます。例えば、
WEB-INF/classes/test.class という名前で置いてあるサーブレットは、
http://ホスト名/servlet/test という URL でアクセスすることになるのは、
前の回答で書きましたが、それを http://ホスト名/test という URL で
アクセスしたければ、web.xml に

<web-app>
  <servlet>
    <servlet-name>
      test
    </servlet-name>
    <servlet-class>
      test
    </servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>
      test
    </servlet-name>
    <url-pattern>
      /test
    </url-pattern>
  </servlet-mapping>
</web-app>

こんな感じの定義をします。servlet タグで、サーブレットのクラスに名前を
割り当ててあげて、servlet-mapping タグで、その名前に対して URL を割り当てる
という感じです。

web.xml は、conf/ 配下にもありますし、WEB-INF/ 配下にもあります。
サーブレットの URL の定義だったら、WEB-INF/ 配下の方が良いでしょう。


> ApacheのWEBサーバでAliasを作成したわけでもないのになぜこんなことができてしまうのか?

mod_jk を使っているんですね?

conf/mod_jk.conf をベースにした定義ファイルを apache の httpd.conf に
記述するか、インクルードしていると思います。それがポート:80 を使った場合の
動作の定義になります。

mod_jk.conf にある JkMount で定義したパターンに当てはまる URL は tomcat
の方に転送されます。デフォルトのままだとポート:8007 が使われるはず。

ポート:8080 を使った場合には、conf/server.xml の Connector タグでの
記述が使われます。
    • good
    • 0
この回答へのお礼

ありがとうございます。非常によく理解できました。
今後ともよろしくお願いします。

お礼日時:2001/09/03 18:52

>Apacheを起動しなくても、8080ポートで接続すればTomCATの画面が現れるので、


>なぜApacheが必要なのかという疑問

上記の疑問ですが、単純にサーブレットを実行するだけであれば、tomcatが持つ
WEBサーバ機能だけで十分です。
ただし、tomcatが持つWEBサーバ機能はあくまでサーブレットの単体テストを
行う環境を提供する程度の意味しかもたず、実際にインターネット上に公開して
サーブレットを実行できるようなWEBサーバを構築しようと思った場合、tomcat
のWEBサーバ機能は、セキュリティなどの面であまりにも貧弱です。

というわけで、通常はtomcatに限らず、いろんなサーブレットコンテナは
とりあえずWEBサーバ機能は持っているものの、ApacheやIISといった本職の
WEBサーバにアドオンして動作出来るように作られています。

> あと、URLでexamples以下のディレクトリは
> port8080でもport80でも同じ画面が出てきます。
> port80はApacheのWEBサーバ機能
> port8080はTomcatのWEBサーバ機能
> ということはわかっているのですが、ApacheのWEBサーバでAliasを作成した
> わけでもないのになぜこんなことができてしまうのか?ひょっとすると
> ApacheTomcat連携モジュールであるmod_jk.dllをD:\Program Files\Apache
> Group\Apache\modulesにインストールしたからでしょうか?

これは、おっしゃる通り連携モジュールのおかげです。
連携モジュールの中身を見たわけではないので、類推に過ぎませんが、
tomcatのApache連携モジュールは、Apacheへのリクエストを監視して、
それが自分のコンフィグファイル(server.xml)に記述されたURLへの
参照である場合に、ユーザからのリクエストを横取りして処理を行っている
ようです。

なので、Apacheのhttpd.confの中にtomcat用の連携モジュールのロード命令が
あるはずですが、それをコメントアウトすると、ポート80ではexamples配下の
内容は見えなくなるはずです。

# 試したわけではありませんが。。。
    • good
    • 0
この回答へのお礼

ありがとうございます。
簡易WEBサーバとしてなら、Tomcatでも言いということですね。スッキリしました。ありがとうございます

お礼日時:2001/09/03 18:45

> 作成したServletやJSPはどこへ置けばいいのでしょうか?



tomcat のインストールディレクトリの下にある conf ディレクトリの server.xml で
置き場所を定義します。

デフォルトで、以下のような定義があるはずです。

<Context path="/examples"
docBase="webapps/examples"
crossContext="false"
debug="0"
reloadable="true" >
</Context>

これは http://ホスト名/examples/なんとか というリクエストは、(インストール
ディレクトリ配下の)webapps/examples の下を探すよ、という意味です。

基本的に jsp は、html と同じように、配置ディレクトリが URL に対応すると
思って良いです。例えば、webapps/examples/a-kuma/test.html というファイルは
http://ホスト名/examples/a-kuma/test.html という URL に対応します。

servlet は、基本的に配置ディレクトリ配下の WEB-INF/classes に配置します。
何も考えなければ、webapps/examples/WEB-INF/classes/test.class という
servlet は、http://ホスト名/examples/servlet/test という URL に対応します。

ただ、java で言うパッケージや、classpath の通し方、web.xml というファイルの
定義で、ファイルと URL の対応はいろいろバリエーションがあります。
    • good
    • 0
この回答へのお礼

ありがとうございました。
servletだけちょっと変わったところにおく必要があるんですね。でもなんで
WEB-INF/classes
がURLでは
servlet
となるんでしょうか?決まりですか?それともどこかで定義しているんでしょうか?

あと、URLでexamples以下のディレクトリは
port8080でもport80でも同じ画面が出てきます。
port80はApacheのWEBサーバ機能
port8080はTomcatのWEBサーバ機能
ということはわかっているのですが、ApacheのWEBサーバでAliasを作成したわけでもないのになぜこんなことができてしまうのか?ひょっとするとApacheTomcat連携モジュールであるmod_jk.dllをD:\Program Files\Apache Group\Apache\modulesにインストールしたからでしょうか?

お礼日時:2001/08/31 15:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!