0

デプロイする「war」ファイルの次のディレクトリ構造を指定して、「ReadProp.java」クラスからプロパティファイル「MyProperty.properties」を読み取る必要があります。

MyApp.war
 | ----MyProps 
 |     |--MyProperty.properties
 |---WEB-INF |   
     |--classes
          |---ReadProp.java 

この「war」ファイルを「Sunポータルサーバー」にデプロイします。ただし、要件の仕様のため、このディレクトリ構造を変更しないでください。

私はこのファイルを次のように読んでいます

     String path = servletContext.getRealPath("/MyProps/MyProperty.properties");         System.out.println("path: " + path);  
            Properties prop = new Properties();         
    try {           
             prop.load(new FileInputStream(path));
);
         } catch (Exception e) { 

                            e.printStackTrace();      
       }      
       String name= prop.getProperty("name"); 

正常に動作しています。しかし、問題は、アプリケーションのロード後にプロパティファイルを変更すると、変更が反映されないことです。

プロパティファイルはいつでも変更できます。変更を反映させたい場合は、その方法を変更してください。つまり、アプリケーションはexexcutioで毎回プロパティファイルをロードする必要があります

4

4 に答える 4

0

これを行う新しい方法は次のとおりです。

    Path path;
    try {
        path = Paths.get("MyProperty.properties");
        if (Files.exists(path)) {
            props = new Properties();
            props.load(Files.newInputStream(path));
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
于 2016-06-01T13:17:59.997 に答える
0

アプリ サーバーをバウンスしない限り、変更は表示されません。

より適切な選択は、.properties ファイルを /WEB-INF/classes フォルダーに配置し、.properties を使用して CLASSPATH から読み取ることgetResourceAsStream()です。

コードを読んでいる場所は言いません。Timer.properties ファイルを定期的に起動して再ロードするタスクを実装する必要がある場合があります。

WatchServiceJDK 7 を使用している場合は、次のことも試してください。

Java で変更されたファイルを自動リロードする

于 2012-09-21T11:36:15.867 に答える
0

WatchService そのサンプルリンクにはJava 7を使用する必要があります

于 2012-09-21T11:36:55.113 に答える
0

私は答えを得ました:

String path = servletContext.getRealPath("/MyProps/MyProperty.properties");       
System.out.println("path: " + path);      
Properties prop = new Properties();       
try {      
   File f = new File(path);      
   FileInputStream fis = new FileInputStream(f);     
   prop.load(fis);    
}
catch (Exception e) {   
   e.printStackTrace();   
}
于 2012-09-21T13:38:00.307 に答える