如何在openshift tomcat 7(JBoss EWS 2.0)服务器上获得真正的路径

时间:2016-04-08 13:46:48

标签: java openshift

在我的wicket应用程序中,当我想保存一些文件时,我有获取路径的方法:

public static String getFilesPath() {
    String path = WebApplication.get().getServletContext().getRealPath("/") + "/";

    System.out.println(WebApplication.get().getServletContext()
            .getRealPath(RequestCycle.get().getRequest().getContextPath())
            + " 1");
    System.out.println(WebApplication.get().getServletContext().getContextPath() + " 2");
    System.out.println(WebApplication.get().getServletContext().getRealPath("/") + " 3");


    return path;
}

当我在localhost jetty服务器上测试它时,它工作正常但是当我将我的应用程序部署到openshift tomcat 7服务器时,我只是得到null:

null 1
 2
null 3

还有其他一些方法可以获得路径吗?

1 个答案:

答案 0 :(得分:1)

您的Java应用程序在OpenShift上的运行方式与开发系统(在内存中)本地运行方式略有不同,因此getRealPath()方法无法正常运行。 您应该将文件保存到$ OPENSHIFT_DATA_DIR(〜/ app-root / data)中,您可以使用System.getenv("OPENSHIFT_DATA_DIR")在java中获取该文件。这还可以确保您的文件存储在永久位置,在重新部署应用程序时不会删除/重新创建。例如,每当您部署应用程序时,都会重新创建〜/ app-root / repo目录,因此不要在那里保存上传的文件。