我目前在带有Tomcat6的Ubuntu 11.04服务器上运行了一个GWT webapp。该应用程序需要能够读取和写入服务器上特定文件夹中的文件。当通过Eclipse在开发模式下运行应用程序时(我想使用内置的jetty实例),它可以正常工作。但是,当我将应用程序部署到Tomcat服务器时,应用程序无法读取/写入文件。
指向服务器上正确文件夹的正确路径结构是什么?即我如何告诉应用程序访问/ home / username / project文件夹?
我是否需要为Tomcat进行配置设置以允许访问文件?
以下是我当前正在检索文件的方式(String file =“./ project / filename”):
public Project getProjectFromFile(String file) {
Project p = null;
try {
InputStream fis = getResourceAsStream(file);
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
p = (Project) ois.readObject();
ois.close();
} catch (FileNotFoundException e) {
System.err.println("getProjectFromFile FileNotFoundException: "
+ e.getMessage());
} catch (IOException e) {
System.err.println("getProjectFromFile IOException: " + e.getMessage());
} catch (ClassNotFoundException e) {
System.err.println("getProjectFromFile ClassNotFoundException: "
+ e.getMessage());
} catch (Exception e) {
System.err.println("getProjectFromFile Exception: " + e.getMessage());
e.printStackTrace();
}
return p;
}
我也愿意接受任何建议的建议。感谢
答案 0 :(得分:0)
请确保您想要编辑的目录由您用于启动Apache-Tomcat的同一用户拥有(通过catalina.sh我假设),并在这些目录上正确设置权限。
答案 1 :(得分:0)
首先,当您使用servlet时,最好使用相对路径并将您尝试加载的任何文件(xml,png,html,css等)放在war目录中的某个位置。 / p>
完成此操作后,您应该能够使用文件的相对路径。例如,要在代码中加载/home/path/to/your/eclipse/project/war/html/view/a_random_page.html
,只需在尝试加载时使用./html/view/a_random_page.html
作为文件路径。
原因是因为这些文件与您的项目一起打包,因此在部署它时,您不必担心将要使用的文件复制到与部署分开的Web服务器上。
以这种方式执行操作有助于使部署更加轻松,并将安装移动到不同的目录/ Web服务器中。如果您不得不让多个人与您一起工作,这也会让您更轻松。按照目前的方式进行操作,如果有人开始帮助您完成项目,那么您必须更改所有绝对路径以指向相应计算机上的正确文件。