Frage

Mein Build-Pfad in Eclipse sieht wie folgt aus:

ProjectName
   -- WEB-INF
      -- classes
         -- myClass.class
      -- configs
         -- myConfig.xml

Meine absoluten Pfad zum Config sieht derzeit wie folgt aus:

C: \ Entwicklung \ Java \ Projektname \ WEB-INF \ configs \ myConfig.xml

Ich bin mit JAXB für die Bindung, und es wird ein Fileinputstream erwartet. Der Fileinputstream muss ein Strom für die XML-Konfigurationsdatei sein. Aber ich kann nicht herausfinden, wie die Fileinputstream für meine Config zu bekommen, und ich halte eine FileNotFoundException bekommen.

Ich möchte diese Config so geladen werden, dass jemand nicht den Pfad der Konfigurations hart codieren muss, weil ich auf die Freigabe der Open-Source-Projekt zu planen. Ich sehe eine Menge von Beispielen, in denen jemand nur Hardcodes den vollen absoluten Pfades, aber ich brauche es etwas flexibler „wie“ diese sein:

new Fileinputstream ( "/ WEB-INF / configs / myConfig.xml");

Danke!

War es hilfreich?

Lösung

Ich würde empfehlen, dass myConfig.xml im WEB-INF / classes stattdessen setzen und über den Klassenlader geladen, da es in der Classpath ist. Der Aufruf getResourceAsStream () auf dem Servlet-Kontext wird ein Inputstream zurück, die Sie verwenden können. Es ist in Bezug auf den Kontext-Root, so können Sie, dass SIND abholen und es überall hinstellen -. Ihr Code wird immer noch funktionieren

Andere Tipps

Sie können den Eingangsstrom von relativen Pfaden unter WEB-INF ziemlich leicht mit ServletContext.getResourceAsStream() Methode (javadoc erhalten hier ) und seine Varianten.

Zum Beispiel in Ihrem selvlet Code Sie können dies tun:

getServletContext().getResourceAsStream("/WEB-INF/configs/myConfig.xml") // your file
getServletContext().getResource("/WEB-INF") // URL to WEB-INF dir
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top