- ベストアンサー
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を想定しております。
- みんなの回答 (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(); } } }
その他の回答 (2)
- jakarta
- ベストアンサー率38% (607/1597)
最近触っていないのでうろ覚えですがTomcatのインストール時に Shellの環境変数へ TOMCAT_HOME=/usr/local/bin/jakarta/tomcat3.2 など登録したと思います。 Shellの環境変数から取得できなかった場合はユーザに指定してもらう という方法もできるのではないでしょうか。
お礼
御回答ありがとうございます。 >Shellの環境変数から取得できなかった場合はユーザに指定してもらう >という方法もできるのではないでしょうか。 その環境変数が取得できないのです。 やはり、ユーザに指定してもらうしかなさそうな気がしてきました。 貴重なご意見、有難う御座いました。
- KaZtoYou
- ベストアンサー率73% (11/15)
>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のコードからでなければ取得できません。
お礼
御回答ありがとうございます。 >java.lang.System.getProperty("catalina.home"); そう思われますよね! でも、ダメなんです。 getProperty("tomcat.home")は取得できるのですけどね・・・ >一応、確認しておきますが上記のSystemプロパティを使った取得方法は >servletのコードからでなければ取得できません。 InstallAnywhereでは、インストール時にJavaのAPIを叩くことが出来るので、この件に関しては問題ありません。 色々と有難う御座いました。
お礼
御回答ありがとう御座います。 私、勘違いしておりました。 >tomcat4.0動作中のservletの中で >java.lang.System.getProperty("catalina.home"); >で取得して確認してください。 確かに、Tomcat3.2動作中の環境で確認しておりました。 getProperty()は、単純にシステム環境変数を取得するAPIだと思っていたもので・・・ Tomcat4.0動作環境下で今一度、動作確認してみます。 >1.tomcat付属の専用APIを調査。 >(おそらく取得できるんではないかと。やり方も一番スマート) そうですね! このやり方でも調査してみます。 ご指摘ありがとうござました。