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