• ベストアンサー

CATALINA_HOMEの取得方法について

Webアプリケーション(Javaサーブレットベース)のインストーラ作成に関して、質問がございます。 Tomcat4.0のホームディレクトリ(CATALINA_HOME)を取得し、その情報をもとにWebアプリケーションの自動インストールを考えております。 しかし、現状CATALINA_HOMEの取得方法が見つからないため苦労しております。 ちなみに、Tomcat3.2の場合(TOMCAT_HOME)は、java.lang.System.getPropertyメソッドで取得することができます。 質問の内容は、以下の3項目です。 1.CATALINA_HOMEを取得する方法はあるでしょうか? 2.Tomcat4.0の導入時に、CATALINA_HOMEって必ず設定されているもの   なのでしょうか? 3.何か参考にできる既存のインストーラはありませんでしょうか? 以上の結果、CATALINA_HOMEを取得できないと判った場合には、Tomcatのホームディレクトリをインストール時にユーザに指定させる方向で考えております。 ちなみに、インストーラは、InstallAnywhere 4.5 Enterprise で WWWサーバ環境は、Win2000、WinNT、Linuxを想定しております。

  • Java
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • KaZtoYou
  • ベストアンサー率73% (11/15)
回答No.3

ちょっと話が伝わってなさそうなので補足です。 >java.lang.System.getProperty("tomcat.home"); >java.lang.System.getProperty("catalina.home"); >servletのコードからでなければ取得できません。 tomcat3.2動作中のWebアプリケーション(servletのコード) の中でjava.lang.System.getProperty("tomcat.home"); を使うことでtomcat3.2のホームディレクトリを取得できた のではありませんか? 同じように tomcat4.0動作中のservletの中で java.lang.System.getProperty("catalina.home"); で取得して確認してください。 私の環境下では何の問題もなく取得できています。 windows2000 tomcat 3.2.4 tomcat 4.0.3 >InstallAnywhereでは、インストール時にJavaのAPIを >叩くことが出来るので、この件に関しては問題ありません。 勝手な想像ですか、ここで確認しようとしてませんか? tomcat3.2やtomcat4.0に関わらず取得できないと思われますが。 方法は私の思いつく限りで三通り。 1.tomcat付属の専用APIを調査。 (おそらく取得できるんではないかと。やり方も一番スマート) 2.Webアプリケーションの中で"catalina.home"の値だけ返す servletを用意してjava API(URL classかな?)で接続して取得する。 (一番楽ではないかと) 3.プロセス起動(Process class)。 たとえばwindowsなら"SET CATALINA_HOME"ですね。 (OS依存が激しい。はじめに"os.name"取得しなきゃいけませんね) SystemプロパティはOSの環境変数を反映しているわけではありません。 全部見ましたか? import java.util.*; public class sys { public static void main( String[] params ) { Properties pro=System.getProperties(); for( Enumeration e = pro.propertyNames() ; e.hasMoreElements(); ) { String header = (String)e.nextElement(); System.out.println( header ); System.out.println( pro.getProperty(header) ); System.out.println(); } } }

sougou
質問者

お礼

御回答ありがとう御座います。 私、勘違いしておりました。 >tomcat4.0動作中のservletの中で >java.lang.System.getProperty("catalina.home"); >で取得して確認してください。 確かに、Tomcat3.2動作中の環境で確認しておりました。 getProperty()は、単純にシステム環境変数を取得するAPIだと思っていたもので・・・ Tomcat4.0動作環境下で今一度、動作確認してみます。 >1.tomcat付属の専用APIを調査。 >(おそらく取得できるんではないかと。やり方も一番スマート) そうですね! このやり方でも調査してみます。 ご指摘ありがとうござました。

その他の回答 (2)

  • jakarta
  • ベストアンサー率38% (607/1597)
回答No.2

最近触っていないのでうろ覚えですがTomcatのインストール時に Shellの環境変数へ TOMCAT_HOME=/usr/local/bin/jakarta/tomcat3.2 など登録したと思います。 Shellの環境変数から取得できなかった場合はユーザに指定してもらう という方法もできるのではないでしょうか。

sougou
質問者

お礼

御回答ありがとうございます。 >Shellの環境変数から取得できなかった場合はユーザに指定してもらう >という方法もできるのではないでしょうか。 その環境変数が取得できないのです。 やはり、ユーザに指定してもらうしかなさそうな気がしてきました。 貴重なご意見、有難う御座いました。

  • KaZtoYou
  • ベストアンサー率73% (11/15)
回答No.1

>1.CATALINA_HOMEを取得する方法はあるでしょうか? tomcat3.2でのTOMCAT_HOMEの取得の仕方が java.lang.System.getProperty("tomcat.home"); を指しているでしたら java.lang.System.getProperty("catalina.home"); で取得できますよ。 >2.Tomcat4.0の導入時に、CATALINA_HOMEって必ず設定されているもの >  なのでしょうか? 少なくともtomcat4.0を起動時には必ず設定さています。 それは".."であるかもしれませんがね。 一応、確認しておきますが上記のSystemプロパティを使った取得方法は servletのコードからでなければ取得できません。

sougou
質問者

お礼

御回答ありがとうございます。 >java.lang.System.getProperty("catalina.home"); そう思われますよね! でも、ダメなんです。 getProperty("tomcat.home")は取得できるのですけどね・・・ >一応、確認しておきますが上記のSystemプロパティを使った取得方法は >servletのコードからでなければ取得できません。 InstallAnywhereでは、インストール時にJavaのAPIを叩くことが出来るので、この件に関しては問題ありません。 色々と有難う御座いました。

関連するQ&A

  • tomcatの「CATALINA_HOME」と「TOMCAT_HOME」って・・・

    tomcat4.1.24をインストールしたのですが 環境変数PATHは「TOMCAT_HOME」でいいのでしょうか? それとも「CATALINA_HOME」でしょうか? Tomcat4.0b1では「CATALINA_HOME」だそうですが、 これは、Tomcat4.0b1だけで、他のヴァージョンは全部 TOMCAT_HOMEで設定していいのですか?? すみませんが、もし分かる方いたら教えて下さい。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Tomcat5.5の設定で困っています。

    はじめまして。Javaの初心者です。 質問をさせてください。 現在jdk1.5.0_06とTomcat 5.5.17をインストールして いるのですが、Tomcat5.5でサーブレットが実行されな いし、%CATALINA_HOME%\webappsの下に、自分のアプリケーション用ディレクトリを作成してもブラウザで表示されません。サーブレットファイル(*.java)は コンパイルができたので、クラスパスのミスでは ないと思うのですが、Tomcatの諸設定をネット で探して試してもダメでした。どうしたら利用できる ようになるのでしょうか?教えてください。よろしく お願いします。

    • ベストアンサー
    • Java
  • 【TomcatプラグインでTomcatが起動しません。】

    【TomcatプラグインでTomcatが起動しません。】 今、サーバサイドJavaの勉強をしようと思い、TomcatとeclipseのTomcatプラグイン を入れました。 eclipseのUIにTomcatプラグインの表示がでているので、プラグインのインストール そのものは上手く行ってると思います。 環境変数など、色々触ってみたのですが状況に変化なしです。 環境変数については、色々webで調べてみたのですが、JAVA_HOMEとCATALINA_HOMEを設定 するようにとあったので、それを設定してみたのですがだめでした。 JAVA_HOMEはJDKのインストールディレクトリ、CATALINA_HOMEはTomcatのホームディレクトリ でいいと思うのですが・・・・ 当方の環境 OS:windowsXP pro Tomcatのバージョン:6.0 JDKバージョン:1.6.0_17 何かアドバイスなどありましたらお願いいたします。

  • FedoraCoreLinuxではCATLINA_HOME

    はどのディレクトリになるのでしょうか? /usr/share/tomcat5 /var/lib/tomcat5 /etc/tomcat5 などtomcat5ディレクトリはいっぱいあるのですが どれをCATALINA_HOMEとすべきか困っています

    • ベストアンサー
    • Java
  • サーブレットのクラスパス追加について

    Tomcatを用いたWebアプリケーション作成についてご質問させてください。 Webアプリケーション実行時に読み込まれるクラスパスを任意に追加することは可能でしょうか。標準では{CONTEXT_ROOT}/WEB-INF/classesと{CONTEXT_ROOT}/WEB-INF/libにあるクラスがサーブレット上で実行されるクラスとして読み込まれますよね。これ以外に任意のディレクトリをクラスパスとして追加し、そのディレクトリにあるクラスをサーブレット上で実行したいのですが、可能でしょうか。 環境変数にクラスパスを設定してみたり、{TOMCAT_HOME}/bin/setclaspass.shにクラスパスを追加してみたりもしたのですが、結果は両方ともNoClassFoundExceptionでした。 ご教示お願いいたします。

    • ベストアンサー
    • Java
  • catalina.policyのFilePermissionの設定について。

    Webアプリケーションがデプロイされているディレクトリ外にあるディレクトリおよびファイルを読み書きする方法としてcatalina.policyファイルにFilePermissionを設定することにしました。 環境説明: webサーバ: Apache2 Tomcat5 os: CentOS4.4 webアプリのデプロイディレクトリ:/usr/local/tomcat/webapps/myapp 参照したいディレクトリ:/var/local/myapp catalina.policyの設定: SYSTEM CODEパーミッションとCATALINA CODEパーミッションの設定はそのまま。 WEB APPLICATION パーミッションの一番最後に grant codeBase "file:/usr/local/tomcat/webapps/myapp/-" { permission java.io.FilePermission "/var/local/myapp","read,write,execute,delete" }; と入力しました。これによりmyappディレクトリ以下のclassファイルが/var/local/myappディレクトリ内にアクセスできるようになると思うのですが、/usr/local/tomcat/bin/catalina.sh start -securityとしてTomcatを起動。またApacheも起動して実行すると以下のエラーが発生してしまいます。 java.security.AccessControlException: access denied (java.io.FilePermission /var/local/myapp read) java.security.AccessControlContext.checkPermission(AccessControlContext.java:264) java.security.AccessController.checkPermission(AccessController.java:427) java.lang.SecurityManager.checkPermission(SecurityManager.java:532) java.lang.SecurityManager.checkRead(SecurityManager.java:871) java.io.File.canRead(File.java:658) ShowFile.doGet(ShowFile.java:17) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:585) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:517) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) 何か指定が違っているのでしょうか?あるいは、catalina.policyファイル内で何か設定するものがほかにあるのでしょうか?ご教授願えればと思います。よろしくお願いいたします。  

  • OSXにTomcatをインストールする方法

    OSXserverを買うお金がないのでOSXをサーバー用OSに仕立てたいのですが、tomcatがインストール出来ません。 TomcatをDLしてフォルダ名をtomcatにしてUser直下に置いて Terminalからrootになり 下記のようにコマンドを打ってインストールしようとするのですが、 setenv JAVA_HOME /Library/Java/Home setenv CATALINA_HOME /usr/local/tomcat ここまではうまくいき tomcatを起動するコマンド $CATALINA_HOME/bin/startup.sh を打つと /usr/local/tomcat/bin/startup.sh: Command not found. と出て起動出来ません。 これはやっぱりコマンドが間違ってるのでしょうか? UNIXの知識は0に等しいので誰かご教授願います。

    • ベストアンサー
    • Mac
  • Tomcat-ROOTのディレクトリの内容について

    Tomcat6.0.32をインストールすると、以下のディレクトリにbuild.xmlとtomcat.svgがあります。 $CATALINA_HOME/webapps/ROOT/ これ等はどのように使用されるのでしょうか? 問題無ければ、これ等のファイルは削除しようと考えています。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • Tomcatのエラーページをカスタマイズする方法【すべてのWebアプリケーションに適用させたい】

    こんにちは。 各種サイトを見ても詰まってしまったため、質問させていただきます。 Tomcat 5.0.28を使用しています。 HTTPのエラーコードを受け取ったときに、独自のエラーページを 表示させるには、web.xmlを編集すればよいことまではわかっています。 個々のWebアプリの設定であれば、(アプリケーションルート)/WEB-INF/web.xml を編集することでカスタムエラーページを表示できました。 今回、Tomcatに配備しているすべてのWebアプリに対して、同じエラーページを表示させるつもりです。 この場合、$CATALINA_HOME/conf/web.xmlに同じような編集を 行えばよいということが下記サイトに書かれていました。 http://www.atmarkit.co.jp/fjava/javatips/064container011.html ここで問題なのが、web.xmlで <error-page> <error-code>404</error-code> <lcoation>/error/404.html<location> </error-page> とした場合、404.htmlはどこにおけばよいかがわからず、適切に 表示されません。 各アプリごとの場合は、アプリケーションルートの直下に errorディレクトリを作ればよいのですが・・・ conf/web.xmlに記述をした場合は、ルートはどこに おいたらよいのでしょうか。 ちなみに 1.$CATALINA_HOME/webapps/error/404/html 2.$CATALINA_HOME/webapps/ROOT/error/404.html 3.$CATALINA_HOME/error/404.html を試しましたが、いずれもうまくいきませんでした。 また1.の設定の場合、server.xmlに記述を追加して errorコンテクストを配備しています。 <Context path="/error" docBase="error" ....> 基本的な質問かもしれませんが、何卒よろしくお願いします。

  • Tomcat で ポート8080 が使えない

    Linux初心者です。 サーバサイドJAVAの勉強を目的として、 Fedora Core 4 に、下記の Tomcat をインストールしました。 apache-tomcat-5.5.23.tar.gz インストール(解凍)は、下記のディレクトリです。 /usr/local/apache-tomcat-5.5.23 環境変数 CATALINA_HOME の設定も間違いなく行いました。 環境変数 PATH への $CATALINA_HOME/bin の追加も行いました。 Tomcat の起動コマンド startup.sh は正常に動作しているように見えます。 ps aux | grep -i tomcat してみたところ、動作しているようでした。 にもかかわらず、Webブラウザにて http://localhost:8080/ が接続拒否をくらってしまいます。ブラウズできません。 原因として、どのようなことが考えられるでしょうか。 すみませんが、Linux初心者にも理解できるよう、平易な回答や アドバイスをいただけると、たいへん助かります。 どうぞよろしくお願いいたします。