現在、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の置き場所は?という疑問にぶつかってます。
どなたかよろしくお願いします。
No.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 タグでの
記述が使われます。
No.2
- 回答日時:
>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配下の
内容は見えなくなるはずです。
# 試したわけではありませんが。。。
ありがとうございます。
簡易WEBサーバとしてなら、Tomcatでも言いということですね。スッキリしました。ありがとうございます
No.1
- 回答日時:
> 作成した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 の対応はいろいろバリエーションがあります。
ありがとうございました。
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にインストールしたからでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
- Java Javaで個人ブログサイトを作りたい 7 2022/04/03 17:37
- MySQL Mac です。ローカルホストの phpMyAdmin にアクセスできません。 1 2023/06/06 17:14
- オープンソース AWSドメイン名でApacheテスト・ページを表示させる方法を教えて下さい。 1 2023/04/26 15:59
- ソフトウェア 移行PCにDockerがインストールされていても各種開発環境のアプリはインストールが必要? 2 2023/05/21 21:53
- ソフトウェア Webサーバーソフトウェアについて 2 2023/03/20 20:54
- PHP バージョン情報の取得方法について 1 2023/03/15 11:56
- デスクトップパソコン Dell Inspiron 3250でRealtekのドラーバーでのLine outから出力しない 1 2022/07/10 19:15
- UNIX・Linux fessカスタマイズ 1 2022/09/27 17:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPからServletへの遷移
-
【Servletのエラーについて教え...
-
resin.confの設定でご質問です
-
servletでHTTPステータス404エ...
-
Java、HTMLを使って、BBSをつく...
-
WEB開発をはじめたばかりの初心...
-
HTTPステータス404表示されてし...
-
eclipse servlet 404対処方法
-
Servletが動かない
-
DB接続しようと思ったら下記の...
-
Eclipseで、プロジェクト名のと...
-
html上で、バッチやexeファイル...
-
Eclipseのアンインストールの仕方
-
split関数で区切り文字がない場合
-
classファイルについて
-
Eclipse「リフレッシュ」と「ク...
-
Eclipse・プロジェクトで、フォ...
-
Javascriptの値をJava(JSP)へ渡...
-
Eclipse(JAVA)のデバッグで他...
-
Eclipseでパッケージ・エクスプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSPからServletへの遷移
-
servlet (resin) について
-
「javax.servlet.ServletExcept...
-
list<クラス名> とは何でしょう...
-
サーブレットインスタンスを割...
-
servletのコンパイルエラーにつ...
-
JSPからサーブレットを呼び出す...
-
Servletが動かない
-
DB接続しようと思ったら下記の...
-
eclipse でjspからJavaを実行す...
-
WEB開発をはじめたばかりの初心...
-
【Servletのエラーについて教え...
-
tomcatとapacheの連携
-
サーブレットが実行できない
-
servletでHTTPステータス404エ...
-
struts関連 web.xmlに複数の<se...
-
サーブレットが起動しない
-
JSPからクラス(サーブレット)...
-
Tomcat起動時にエラーが発生し...
-
eclipse servlet 404対処方法
おすすめ情報