プロが教えるわが家の防犯対策術!

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を想定しております。

A 回答 (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();
}
}
}
    • good
    • 0
この回答へのお礼

御回答ありがとう御座います。

私、勘違いしておりました。

>tomcat4.0動作中のservletの中で
>java.lang.System.getProperty("catalina.home");
>で取得して確認してください。

確かに、Tomcat3.2動作中の環境で確認しておりました。
getProperty()は、単純にシステム環境変数を取得するAPIだと思っていたもので・・・
Tomcat4.0動作環境下で今一度、動作確認してみます。

>1.tomcat付属の専用APIを調査。
>(おそらく取得できるんではないかと。やり方も一番スマート)

そうですね!
このやり方でも調査してみます。

ご指摘ありがとうござました。

お礼日時:2002/04/21 18:24

最近触っていないのでうろ覚えですがTomcatのインストール時に


Shellの環境変数へ
TOMCAT_HOME=/usr/local/bin/jakarta/tomcat3.2
など登録したと思います。
Shellの環境変数から取得できなかった場合はユーザに指定してもらう
という方法もできるのではないでしょうか。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

>Shellの環境変数から取得できなかった場合はユーザに指定してもらう
>という方法もできるのではないでしょうか。

その環境変数が取得できないのです。
やはり、ユーザに指定してもらうしかなさそうな気がしてきました。

貴重なご意見、有難う御座いました。

お礼日時:2002/04/21 00:12

>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のコードからでなければ取得できません。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

>java.lang.System.getProperty("catalina.home");

そう思われますよね!
でも、ダメなんです。
getProperty("tomcat.home")は取得できるのですけどね・・・

>一応、確認しておきますが上記のSystemプロパティを使った取得方法は
>servletのコードからでなければ取得できません。

InstallAnywhereでは、インストール時にJavaのAPIを叩くことが出来るので、この件に関しては問題ありません。

色々と有難う御座いました。

お礼日時:2002/04/21 00:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!