埋め込み DB を使用してユーザーの資格情報と設定を保存する Spring MVC アプリがあります。私の問題は、Tomcat のデプロイされた webapp フォルダー内に DB ファイルを動的に格納することにしたことです。今日、Tomcat を再起動するたびにこのフォルダーが削除されることに気付きました (またはそう思います)。私の質問は、Tomcat がフォルダーを削除しないようにする方法はありますか? そうでない場合、データベース ファイルはどこに保存できますか? アプリが Windows、Linux、および MacOS 向けである場合、どちらがより良い方法でしょうか?
1667 次
2 に答える
1
Tomcat ディレクトリに保存するのは良い考えではありません。デプロイ中に削除する可能性があるため、Redis にそれを行うことをお勧めします http://www.springsource.org/spring-data/redis、または組み込み DB に保存する場合は、ディレクトリ ファイルを作成しますWindows と UNIX の両方を使用しているユーザーの家の中
System.getProperty("user.home");
または、Tomcat のホーム ディレクトリを取得できます。CATALINA_HOME が環境変数に設定されている場合
System.getProperty("catalina.base");
または、Spring Message バンドルを使用して絶対パスを使用できるため、dir.properties ファイルを追加して、Spring config に追加できます。
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/dir" />
<property name="defaultEncoding" value="UTF-8" />
およびファイル dir.properties 内に、パスを追加します。
storage:/var/lib/tomcat6/
または、O を動的に見つけることに興味がある場合は、次のコードを使用して特定のディレクトリを取得できます。
public class FindOS {
private static final boolean osIsMacOsX;
private static final boolean osIsWindows;
private static final boolean osIsWindowsXP;
private static final boolean osIsWindows2003;
private static final boolean osIsWindowsVista;
private static final boolean osIsLinux;
static {
String os = System.getProperty("os.name");
if (os != null)
os = os.toLowerCase();
osIsMacOsX = "mac os x".equals(os);
osIsWindows = os != null && os.indexOf("windows") != -1;
osIsWindowsXP = "windows xp".equals(os);
osIsWindows2003 = "windows 2003".equals(os);
osIsWindowsVista = "windows vista".equals(os);
osIsLinux = os != null && os.indexOf("linux") != -1;
}
public static boolean isMacOSX() {
return osIsMacOsX;
}
public static boolean isWindows() {
return osIsWindows;
}
public static boolean isWindowsXP() {
return osIsWindowsXP;
}
public static boolean isWindows2003() {
return osIsWindows2003;
}
public static boolean isWindowsVista() {
return osIsWindowsVista;
}
public static boolean isLinux() {
return osIsLinux;
}
//TODO
String getHelperDirectory(){
if(isLinux())return "~/";
if(isWindows()) return "c:/";
if(osIsWindowsVista) return "c:/";
return null;
}
于 2013-09-12T08:55:50.613 に答える