@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

コンテキストについて質問です

1
投稿者投稿内容
KN
会議室デビュー日: 2007/07/19
投稿数: 2
投稿日時: 2007-07-21 12:37
はじめまして、TomcatでServletの勉強をしているのですが、
コンテキストの設置方法について質問があります。

現在、Tomcat5.5とWindowsXPで勉強してます。

appBase以下に配置したWARや仕様に基づいた形式のフォルダを配置すれば、自動的にコンテキストと認識し、URLからは
http://ホスト名:ポート番号/配置したフォルダ名
でアクセスできると認識しています。

また、appBase以外の任意の場所にフォルダを配置した場合、CATALINA_HOME/conf/Catalina/localhostにコンテキスト名.xmlを作成すれば、フォルダ名とはことなった、URLのPATHを指定できると認識しています。
なお、そのXMLのコンテキスト要素のpath属性がURL、docBaseがフォルダの実パスと認識しています。

質問は、以下の3点です。

1.appBase直下に配置した場合、実PAHTとURLPATHを異なるように設定することは可能なのでしょうか?

2.任意の場所にdocBaseを作成した場合、path属性がURLのPATHだと認識していたのですが、コンテキスト名.xmlの「コンテキスト名」の方がURLのPATHとして認識されているようです。つまり、abc.xmlという設定ファイルのPATH属性にfooとした場合、URLは
http://localhost:8080/abc/となります。
PATH属性は必ずコンテクスト名.xmlと同じにするという認識でいいのでしょうか?

3.%appBase%/コンテキスト/MATA-INF/context.xmlでもコンテキストの設定ができるとWeb等で見ましたが、その場合、設定は、必ず、pathだけで、docBaseは記載してはいけないのでしょうか?

4.3の場合のcontext.xmlでdobaBaseが記載できないとしたら、context.xmlはRealm等の設定するためにあって、コンテキストの実PATHとURLPATHの設定のためにあるのではないと考えていいのでしょうか?


以上の4点がわからない点ですが、ご教授、よろしくお願いします。
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-07-21 13:36
1.webapps に フォルダ と conf〜配下にXMLで別名設定は可能なはずです。
が なぜそのようにしたいのかが不明ではありますね。

2.わざわざ別名設定すると関連性がわからなくなるのでする人は余り居ません。



[ メッセージ編集済み 編集者: 杏 編集日時 2007-07-21 14:51 ]
KN
会議室デビュー日: 2007/07/19
投稿数: 2
投稿日時: 2007-07-21 19:14
ご返答ありがとうございます。
>なぜそのようにしたいのかが不明ではありますね。
>関連性がわからなくなるのでする人は余り居ません。

おっしゃるとおりだと思います。ただ、純粋に疑問に思っただけなんです。
あまり実用的な質問でないのはお許しください。

>1.webapps に フォルダ と conf〜配下にXMLで別名設定は可能なはずです。
当方でいろいろ試したのですが、別名設定ができませんでした。
試した内容はこんな感じです。

コンテキストフォルダを%CATALINA_HOME%/webapps/realpathchkに作成し、
%CATALINA_HOME%/conf/Catalina/localhost/にurlpathchk.xmlを以下の内容で作成しました。

内容
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="realpathchk" path="/urlpathchk" debug="0" reloadable="true">
</Context>

しかし、Tomcat起動時に、以下の警告とエラーがでてしまいます。

警告: A docBase C:\\Tomcat5.5\\webapps\\realpathchk inside the host appBase has been
specified, and will be ignored
2007/07/21 18:22:39 org.apache.catalina.core.StandardContext resourcesStart
致命的: 静的リソースの起動中のエラーです
java.lang.IllegalArgumentException: ドキュメントベース C:\\Tomcat5.5\\webapps\\urlpa
thchk が存在しない、又は読めないディレクトリです

また、xmlファイル名をrealpathchk.xmlに変更すると、以下の警告のみとなります。

警告: A docBase C:\\Tomcat5.5\\webapps\\realpathchk inside the host appBase has been
specified, and will be ignored

しかし、http:localhost:8080/urlpathchk/XXXでは、アクセスできず、
http://localhost:8080/realpathchk/XXXでアクセスできるようになってしまいます。

やはり、appBase以下に配置すると別名アクセスはできないのでしょうか?
naoki
会議室デビュー日: 2007/07/25
投稿数: 2
投稿日時: 2007-07-25 18:57
実用的でない質問を答えてくれる人はあまりいないと思いますよ。
それを知ってる人が運良くいない限り。

で、

> 1.appBase直下に配置した場合、実PAHTとURLPATHを異なるように設定することは可能なのでしょうか?

おそらく無理でしょう。
2〜4の質問は、多分Tomcatの開発者にでも聞かないとわからないと思います。
もしくはオープンソースですのでソースを読むことです。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-07-25 23:43
意図的に実際のファイル配備先とURLパスを変えるという
要件は、無いことは無いと思います。ディレクトリのトラバーサル
アクセス的な攻撃を場合は、外部のファイルパス情報を出さずに
済むと思うので。ただ、皆さんが言っているように、コンテキスト
名との直交性が悪くて運用側では扱いづらくなるでしょうけど。

ykSiR
会議室デビュー日: 2006/10/03
投稿数: 16
投稿日時: 2007-07-26 09:38
引用:

1.appBase直下に配置した場合、実PAHTとURLPATHを異なるように設定することは可能なのでしょうか?


過去にそういった運用をしていた者です。(OSはRedHat Enterprise Linux 3)

1つのアプリケーションを複数のコンテキストで参照し、コンテキストXMLのEnvironmentで指定した値により挙動が変わるという要件のもとでの運用でした。

ご質問内容ですが、当方ではTomcat5.5.9を利用していた時期には行えていました。
諸事情があり5.5.9から5.5.23にバージョンアップのですが、その際には行えなくなった記憶があります。

あまり深く追求しなかったので不確かですが、バージョンにより可能だったり不可能だったりするのだと思います。
1

スキルアップ/キャリアアップ(JOB@IT)