使用Tomcat webapp访问存储在服务器上的文件

时间:2012-02-01 21:06:41

标签: java eclipse gwt tomcat

我目前在带有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;
}

我也愿意接受任何建议的建议。感谢

2 个答案:

答案 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服务器中。如果您不得不让多个人与您一起工作,这也会让您更轻松。按照目前的方式进行操作,如果有人开始帮助您完成项目,那么您必须更改所有绝对路径以指向相应计算机上的正确文件。