2009-08-11 10 views
1

Ich möchte eine XML-Datei zu meinem Java ee-Projekt hinzufügen und sie in meinem Code verwenden, aber wenn ich die Datei aus dem src-Verzeichnis adressiere, versteht sie meine Adresse nicht und sucht nach einer Datei im bin-Verzeichnis von tomcat. Mein Projekt verwendet Wicket Framework und JavaEE. weiß jemand, wie die Datei zu adressieren ist oder wo sollte ich die Datei für den Zugriff aus dem Projekt platzieren?Wie füge ich Java EE-Projekten eine Datei hinzu?

Antwort

1

Wenn Ihre XML-Datei eine Ressource ist, auf die nur serverseitig zugegriffen werden muss, ist es am besten, sie im WEB-INF-Verzeichnis innerhalb Ihres War oder in einem Unterverzeichnis innerhalb des WEB-INF zu platzieren. Auf diese Weise stellen Sie sicher, dass die Ressource nicht über das Internet zugänglich ist.

Dann können Sie es abrufen ServletContext.getResource verwenden, wie von Peter D.

wies darauf hin,

Zum Beispiel in einem Servlet Sie es auf diese Weise abrufen kann (Ausnahme weggelassen Abwicklung):

String path = "/WEB-INF/my.xml"; 
URL url = getServletConfig().getServletContext().getResource(path); 
InputStream in = url.openStream(); 
// read content from input stream... 
0

In Ihrem Servlet können Sie:

this.getServletContext().getResource(path); 

public java.net.URL getResource(java.lang.String path) 
         throws java.net.MalformedURLException 

Gibt eine URL an die Ressource, die auf einen bestimmten Pfad zugeordnet ist. Der Pfad muss mit einem "/" beginnen und wird als relativ zum aktuellen Kontextstamm interpretiert.

Mit dieser Methode kann der Servlet-Container eine Ressource für Servlets aus beliebigen Quellen verfügbar machen. Ressourcen können sich auf einem lokalen oder entfernten Dateisystem, in einer Datenbank oder in einer WAR-Datei befinden.

Der Servlet-Container muss die URL-Handler und URLConnection-Objekte implementieren, die für den Zugriff auf die Ressource erforderlich sind.

Diese Methode gibt null zurück, wenn dem Pfadname keine Ressource zugeordnet ist.

Einige Container können möglicherweise das Schreiben auf die von dieser Methode zurückgegebene URL mit den Methoden der URL-Klasse zulassen.

Der Ressourceninhalt wird direkt zurückgegeben. Beachten Sie daher, dass das Anfordern einer JSP-Seite den JSP-Quellcode zurückgibt. Verwenden Sie stattdessen einen RequestDispatcher, um Ergebnisse einer Ausführung einzuschließen.

Diese Methode hat einen anderen Zweck als java.lang.Class.getResource, der nach Ressourcen auf der Basis eines Klassenladeprogramms sucht. Diese Methode verwendet keine Klassenladeprogramme.

+1

geben Kredit/Link, wo es fällig ist: http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletContext.html # getResource (java.lang.String) –

+0

sein JEE, müssen wir wirklich sagen, woher es kommt? Die Antwort ist hilfreich und relevant, es wird kein Downvote – djna

+0

ausgeführt, aber es wird einfach kopiert und aus der Quelle eingefügt, ohne einen Bezug darauf zu haben. –

0

Normalerweise wird src zur Laufzeit nicht verwendet. Ich benutze keinen Tomcat, aber in meiner Umgebung habe ich Aufgaben erstellt, die Nicht-Java-Dateien von src in das Verzeichnis bin kopieren.

Möglicherweise müssen Sie die Datei öffnen, indem Sie den Klassenlader getResourceAsStream() verwenden, so dass Sie dieselben Verzeichnisse durchsuchen, aus denen Ihre Klassen stammen.

Dies setzt voraus, dass Sie die XML in die Anwendung liefern möchten. Alternativ können Sie es lieber woanders haben. URI-Ressourcenreferenzen helfen möglicherweise

0

Warum platzieren Sie die XML-Datei nicht in Ihrem Ressourcenverzeichnis. Sie können auf jede Klasse zugreifen mit:

MyClass.class.getClassLoader(). GetResourceAsStream (Dateiname);

Verwandte Themen