OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Servletの置き場所(ディレクトリ)

  • すぐに回答を!
  • 質問No.126984
  • 閲覧数417
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 53% (210/390)

現在、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の置き場所は?という疑問にぶつかってます。

どなたかよろしくお願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル14

ベストアンサー率 50% (1122/2211)

> 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 タグでの
記述が使われます。
お礼コメント
holydevil

お礼率 53% (210/390)

ありがとうございます。非常によく理解できました。
今後ともよろしくお願いします。
投稿日時 - 2001-09-03 18:52:51
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

> 作成したServletやJSPはどこへ置けばいいのでしょうか? tomcat のインストールディレクトリの下にある conf ディレクトリの server.xml で 置き場所を定義します。 デフォルトで、以下のような定義があるはずです。 <Context path="/examples" do ...続きを読む
> 作成した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 の対応はいろいろバリエーションがあります。
お礼コメント
holydevil

お礼率 53% (210/390)

ありがとうございました。
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:30


  • 回答No.2

>Apacheを起動しなくても、8080ポートで接続すればTomCATの画面が現れるので、 >なぜApacheが必要なのかという疑問 上記の疑問ですが、単純にサーブレットを実行するだけであれば、tomcatが持つ WEBサーバ機能だけで十分です。 ただし、tomcatが持つWEBサーバ機能はあくまでサーブレットの単体テストを 行う環境を提供する程度の意味しかもたず、実際にインター ...続きを読む
>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配下の
内容は見えなくなるはずです。

# 試したわけではありませんが。。。
お礼コメント
holydevil

お礼率 53% (210/390)

ありがとうございます。
簡易WEBサーバとしてなら、Tomcatでも言いということですね。スッキリしました。ありがとうございます
投稿日時 - 2001-09-03 18:45:15
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ