Java 如何在openshift tomcat 7(JBoss EWS 2.0)服务器上获取真实路径

Java 如何在openshift tomcat 7(JBoss EWS 2.0)服务器上获取真实路径,java,openshift,Java,Openshift,在我的wicket应用程序中,当我想保存一些文件时,我有一个获取路径的方法: public static String getFilesPath() { String path = WebApplication.get().getServletContext().getRealPath("/") + "/"; System.out.println(WebApplication.get().getServletContext() .getRealPath(

在我的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 1
 2
null 3

是否有其他方法获取路径?

您的Java应用程序在OpenShift上的运行方式与在开发系统(内存中)本地运行的稍有不同,因此
getRealPath()
方法无法正常工作。 您应该将文件保存到$OPENSHIFT\u DATA\u DIR(~/app root/DATA)中,您可以使用
System.getenv(“OPENSHIFT\u DATA\u DIR”)
在java中获取该文件。这还可以确保文件存储在永久位置,在重新部署应用程序时不会删除/重新创建该位置。例如,无论何时部署应用程序,都会重新创建~/app root/repo目录,因此不要将上载的文件保存在那里