実行時にポートレットのプロパティファイルを変更したいと思います。ポートレットはTomcat 7.0.23にデプロイされ、プロパティー・ファイルは「/ WEB-INF/classes/content」にあります。ここから、次のコードを使用してアクセスできます。実際、コードは例外なく実行されますが、新しく追加されたプロパティはプロパティファイルに保存されません。実行時にTomcatのプロパティファイルを変更します。
String fileName = "MyProps.properties";
String relativePath = "/WEB-INF/classes/content/";
String fullPath = "c:/tomcat-7.0.23/webapps/my-portlet/WEB-INF/classes/content/";
try {
String path = relativePath + fileName;
InputStream in = getPortletContext().getResourceAsStream(path);
Properties props = new Properties();
props.load(in);
props.setProperty("test", "test");
File file = new File(fullPath + fileName));
FileOutputStream out = new FileOutputStream(file);
props.store(out, "");
} catch(Exception ex) { // error handling here}
新しいプロパティを追加した後、私はそれが実際に追加されたことを
props.list(System.out);
で確認してください可能性があります。 context.xmlファイルは、次のエントリが含まれています
antiJARLocking="true"
antiResourceLocking="true"
これは、実行中のTomcatインスタンスに/変更のプロパティを追加するか、私は別のアプローチをとるべき正しい道ですか?後者の場合、どのようにして最善を尽くすことができますか?
ご回答いただきありがとうございます。
'FileOutputStream out = new FileOutputStream(file);で' file'を置き換えてみます。 'getPortletContext()。getRealPath(relativePath + fileName)'によって、 ' 'を返します。 –