2016-04-08 3 views
2

In meiner Wicket Anwendung bekommen ich Methode habe Weg zu bekommen, wenn ich ein paar Dateien gespeichert werden soll:Wie real Weg auf Openshift tomcat 7 (JBoss EWS 2.0) Server

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; 
} 

wenn ich dies auf localhost zu testen bin Anlegesteg Server funktioniert es in Ordnung, aber wenn ich meine Anwendung bereitstellen tomcat 7-Server Openshift bekomme ich nur null:

null 1 
2 
null 3 

gibt es eine andere Art und Weise, wie Pfad zu bekommen?

Antwort

1

Ihre Java-Anwendung läuft auf OpenShift etwas anders als lokal auf Ihrem Entwicklungssystem (im Speicher), so dass die getRealPath() Methode nicht richtig funktioniert. Sie sollten Dateien in Ihrem $ OPENSHIFT_DATA_DIR (~/app-root/data) speichern, die Sie in Java mit System.getenv("OPENSHIFT_DATA_DIR") erhalten können. Dies stellt auch sicher, dass Ihre Dateien an einem dauerhaften Speicherort gespeichert werden, der beim erneuten Bereitstellen der Anwendung nicht gelöscht/neu erstellt wird. Zum Beispiel wird Ihr Verzeichnis ~/app-root/repo bei der Bereitstellung einer Anwendung neu erstellt, also speichern Sie keine hochgeladenen Dateien dort.