2

Tomcat サーバーにデプロイされた Web アプリケーションがあります。私のフォルダー構造は TOMCAT_HOME/webapps/segnalazioni_degrado/config です。

config フォルダーには、いくつかのプロパティ ファイルが含まれています。アプリケーションを開発モード (Eclipse) で実行すると、すべて正常に動作しますが、Tomcat にデプロイしたため、filenotfound 例外が発生します。これは、サーバーに .properties ファイルをロードする方法です。

[...]
Properties props = new Properties();
    try {
        props.load(new FileInputStream("config/DBconfig.properties"));

    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
    url = props.getProperty("url");
    user = props.getProperty("user");
    password = props.getProperty("password");
[...]

私は何か間違ったことをしていますか?

4

2 に答える 2

2

すべての webapp には、Tomcat に独自のクラスローダーがあります。はClassLoader.getSystemResource、ブートストラップと Tomcat アプリケーションのロードに使用されるシステム クラス ローダーを使用します。しかし、システム クラス ローダーは webapp について何も認識せず、それはクラスパスです。適切なクラスローダーを使用することが不可欠です。
正しいクラスローダーにアクセスするための解決策はたくさんあります。1 つの解決策は、 ClassLoader#getResourceを使用することです。

この例を見てください

于 2013-09-09T10:37:58.060 に答える
1

私は何か間違ったことをしていますか?

明らかに、はい。すべてが順調であれば、例外は発生しません。

そのリソースをクラスパスからストリームとしてロードする必要があります。

つまり、WAR は次のようになります。

WEB-INF/classes/config/DBconfig.properties

Tomcat を使用しているため、JNDI データ ソース接続プールの設定方法を学習することをお勧めします。データベース接続情報をそのように外部化します。

于 2013-09-09T10:32:17.873 に答える