Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
避免Tomcat删除已部署的webapp文件夹_Tomcat_Spring Mvc - Fatal编程技术网

避免Tomcat删除已部署的webapp文件夹

避免Tomcat删除已部署的webapp文件夹,tomcat,spring-mvc,Tomcat,Spring Mvc,我有一个SpringMVC应用程序,它使用嵌入式DB存储用户凭据和设置。我的问题是,我决定将DB文件动态存储在Tomcat部署的webapp文件夹中。今天我意识到每当Tomcat重新启动时(或者我认为是这样),这个文件夹都会被删除。我的问题是,有没有办法避免Tomcat删除文件夹?如果没有,我可以在哪里存储数据库文件?如果应用程序是针对Windows、Linux和MacOS的,那么哪个路径更好?Tomcat在重新启动时从不从webapp中删除文件夹。如果在关闭脚本/启动脚本中配置了任何特殊内容,

我有一个SpringMVC应用程序,它使用嵌入式DB存储用户凭据和设置。我的问题是,我决定将DB文件动态存储在Tomcat部署的webapp文件夹中。今天我意识到每当Tomcat重新启动时(或者我认为是这样),这个文件夹都会被删除。我的问题是,有没有办法避免Tomcat删除文件夹?如果没有,我可以在哪里存储数据库文件?如果应用程序是针对Windows、Linux和MacOS的,那么哪个路径更好?

Tomcat在重新启动时从不从webapp中删除文件夹。如果在关闭脚本/启动脚本中配置了任何特殊内容,则会将其删除。重新启动tomcat只是重新部署webapp中的文件。请检查正在创建数据库文件的程序是否实际存储了相同的文件,这意味着请在关闭后检查这些文件。 如果它们存在,那么在您的启动脚本中会写入一些内容,可能会删除这些文件

另外,在tomcat webapp中存储数据库文件也不是一个好的选择,因为任何后续部署都会删除war并重新部署它,从而删除所有以前的数据


另外,根据数据的大小,您可以选择将数据直接存储到数据库。

Tomcat在重新启动时从不从webapp中删除文件夹。如果在关闭脚本/启动脚本中配置了任何特殊内容,则会将其删除。重新启动tomcat只是重新部署webapp中的文件。请检查正在创建数据库文件的程序是否实际存储了相同的文件,这意味着请在关闭后检查这些文件。 如果它们存在,那么在您的启动脚本中会写入一些内容,可能会删除这些文件

另外,在tomcat webapp中存储数据库文件也不是一个好的选择,因为任何后续部署都会删除war并重新部署它,从而删除所有以前的数据


另外,根据数据的大小,您可以选择将数据直接存储到DB。

最好不要存储在tomcat目录中,在部署期间可能会删除该目录 我建议Redis这样做,或者如果您想存储在嵌入式数据库中,请在同时使用windows和unix的用户的家中创建一个目录文件

System.getProperty("user.home");
或者,如果在环境变量中设置了CATALINA_home,您可能会得到tomcat主目录 借

或者,您可以将绝对路径与使用spring消息包一起使用,这样您就可以添加dir.properties文件并在spring配置中添加:

  <bean id="messageSource"
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="/WEB-INF/dir" />
    <property name="defaultEncoding" value="UTF-8" />
或者,如果您对动态查找操作系统感兴趣,可以使用以下代码获取特定目录:

   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;

}

存储在tomcat目录中不是一个好主意,在部署期间可能会删除该目录 我建议Redis这样做,或者如果您想存储在嵌入式数据库中,请在同时使用windows和unix的用户的家中创建一个目录文件

System.getProperty("user.home");
或者,如果在环境变量中设置了CATALINA_home,您可能会得到tomcat主目录 借

或者,您可以将绝对路径与使用spring消息包一起使用,这样您就可以添加dir.properties文件并在spring配置中添加:

  <bean id="messageSource"
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="/WEB-INF/dir" />
    <property name="defaultEncoding" value="UTF-8" />
或者,如果您对动态查找操作系统感兴趣,可以使用以下代码获取特定目录:

   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;

}

谢谢你的回答。我查一下。是的,我将数据直接存储到数据库中,但它是一个嵌入式数据库,其文件位于该文件夹中(我使用它是因为它很简单。我没有检查权限)。谢谢你的回答。我查一下。是的,我将数据直接存储到数据库中,但它是一个嵌入式数据库,其文件位于该文件夹中(我使用它是因为它很简单,我没有检查权限)。在unix环境中,谁将是用户?雄猫?我之所以问这个问题,是因为tomcat在unix发行版中没有自己的家。在unix环境中,谁会是用户?雄猫?我这样问是因为tomcat在unix发行版中没有家。