0

ファイルのプロパティから情報を取得するアプリケーションを開発しており、プロパティ ファイルに新しい値を入力するフィールドを作成しています。問題は、変更を送信すると、ファイルが再読み込みされず、アプリケーションを再読み込みした後にのみ変更が考慮されないことです。私はEclipse Indigo、Liferay 6.1、Tomcat 7.0、Vaadin、Spring、Hibernate、Mavenを使用しています

このクラスを使用して、新しい値を textField からファイルに保存しています

public class configurationProperties {

Properties prop = new Properties() ;
File fProp = new File("C:/integrationContinue/src/main/resources/fooMessages_fr_FR.properties") ;
FileInputStream stream = null;
FileOutputStream oStream = null;

public void changeUrlJenkins(String url) throws IOException{


    stream = new FileInputStream(fProp);
    prop.load(stream) ;
    prop.setProperty("jenkins.url",url) ;
    oStream = new FileOutputStream(fProp);
    prop.store(oStream,"test") ;

}

保存ボタンをクリックしても何も起こりませんが、プロパティファイルを開くと

「ファイル '.../fooMessages_fr_FR.properties' がファイル システムで変更されました。エディターの内容をこれらの変更で置き換えますか?」というメッセージが表示されます。

「リロードボタン」をクリックすると、変更が送信され、アプリケーションがリロードされます => Eclipse を使用しているときは問題ありませんが、Web ブラウザでは実行できません。

PS: Liferay に統合された Tomcat の代わりに Tomcat Manager を使用すると動作すると聞きましたが、Liferay を新しいパスで設定しようとすると、Tomcat エラーが表示されます。

変更後にプロパティファイルを自動的にリロードするにはどうすればよいですか

4

2 に答える 2

0

-folder でプロパティを変更しますがsrc、これは間違っています。-folder で変更する必要がありますclasses

ps:これはEclipseで機能します。これは、Eclipseがこれをクラスフォルダーにコピーしたためです。

于 2012-04-26T13:06:17.947 に答える
0

これは、Tomcat がプロパティを正しく読み取らないというよりも、展開の問題のように思えます。

Eclipse を使用して Tomcat にデプロイすると、プロジェクトのファイルがデプロイ ディレクトリ [eclipse workspace]/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/[server] にコピーされます。構成内容によっては、出力ディレクトリにコピーすることもできます。

正しく理解していれば、ワークスペース ファイル /src/main/resources/fooMessages_fr_FR.properties に保存していますか? Eclipse は、このファイルをクリックするまで、このファイルが更新されたことを認識しません。クリックすると、.plugins/blah にコピーされ、すべてが正しく機能します。

ワークスペースからデプロイメント・ディレクトリーへのコピーがないため、Eclipse の外部にデプロイする場合、これはおそらく正しく機能します。

この後も問題が解決しない場合は、apache commons FileChangedReloadingStrategyを参照してください。これにより、プロパティ ファイルが変更されたときに再読み込みできます。

于 2012-04-26T13:07:33.733 に答える