Cloudscape には、システム・プロパティーによって制御される一連の構成オプションがあります。Web アプリケーションでシステム プロパティの設定を調整するのは非常に面倒です。誰かが解決策を思いつきましたか?
さらに、私はそれらを webapp で動作させることができませんでした。
以下は、サーブレット コンテキスト リスナーのコードです。derby.log は、ロギング プロシージャが呼び出されるのではなく、コンテナの cwd に作成されたままです。
/**
* Listener to try to get Derby to behave better.
*/
public class ContextListener implements ServletContextListener {
private static final String TEMP_DIR_ATTRIBUTE = "javax.servlet.context.tempdir";
private static ServletContext context;
private static Writer logWriter;
private class LogWriter extends Writer {
@Override
public void close() throws IOException {
}
@Override
public void flush() throws IOException {
}
@Override
public void write(char[] cbuf, int off, int len) throws IOException {
context.log(new String(cbuf, off, len));
}
}
/** {@inheritDoc}*/
public void contextDestroyed(ServletContextEvent sce) {
}
public static Writer getLogSteam() {
return logWriter;
}
/** {@inheritDoc}*/
public void contextInitialized(ServletContextEvent sce) {
logWriter = new LogWriter();
File tempDirFile = (File)sce.getServletContext().getAttribute(TEMP_DIR_ATTRIBUTE);
context = sce.getServletContext();
System.setProperty("derby.system.home", tempDirFile.getAbsolutePath());
System.setProperty("derby.stream.error.method", "com.basistech.vws.ContextListener.getLogStream");
}
}