Pfad zum Konfigurationsfile von Servletanwendung "dynamisieren"

Status
Nicht offen für weitere Antworten.

dflasjjs

Bekanntes Mitglied
Hi,

ich habe ne Servlet-Anwendung. Dazu gehört ein Konfigurationsfile (XML) in dem alle relevanten Daten stehen. Momentan habe ich den Pfad dazu hart codiert: "/var/log/rm.xml". Ich möchte nun gerne realisieren, dass man den Pfad "von außen" anpassen kann. Gerade wenn man den Anwendung auf Windowssystemen laufen lässt würde dies sich ja anbieten. ;-)

Wie realisiere ich das am besten?
 

dflasjjs

Bekanntes Mitglied
Aber für die müsste ich doch auch einen Pfad wählen...

Ne andere Frage, kann ich nicht irgendwie einen relativen Pfad für die XML-Datei wählen, so dass es auf jedem System funktionieren würde, irgendwie im selben Projektverzeichnis?
 

Chumax

Aktives Mitglied
Java:
public String getJarPath() {

		File jar = new File(this.getClass().getProtectionDomain().getCodeSource().getLocation()
				.getPath());
		String jarpath = jar.getAbsoluteFile().toString();
		return jarpath;
	}

Damit bekommste den absoluten path zum programm raus.
 

dflasjjs

Bekanntes Mitglied
Ich bekomme dann sowas wie: /opt/tomcat/webapps/RM/WEB-INF/classes/core/XmlFacade.class
Gibt das auch, damit ich irgendwie nur bis zum WEB-INF-Verzeichnis komme, ohne jetzt irgendwelche Stringoperationen zu machen?

Wenn ich /opt/tomcat/webapps/RM/WEB-INF/ bekäme könnte ich dort ja mein XML-File abspeichern. :)
 

dflasjjs

Bekanntes Mitglied
Mir ist nun gerade aufgefallen, dass
Java:
ServletContext.getRealPath("/WEB-INF/config/myconfig.properties");

Nur im einen Servlet funzt, meine Klasse die die für den Dateiaufruf zuständig ist, ist aber ne ganz normale Klasse. Dort würde ich das gerne einbauen, damit ich inkosistenzen vermeiden kann.
Habe ich da auch irgendeine Chance?
 

Noctarius

Top Contributor
Den ServletContext in dieser Klasse setzen beim aufrufen, instanzieren, was auch immer. Halt den ServletContext innerhalb dieser Klasse zur Verfügung stellen.
 

dflasjjs

Bekanntes Mitglied
Dann hab ich die selben Probleme wie jetzt (momentan setze ich beim Aufrufen den Pfad). Allerdings möchte ich das eigentlich vermeiden. Habe ich keine Möglichkeit das ohne ServletContext zu machen, irgendwie vllt mit getClass oder sowas?
 
M

maki

Gast
Dann hab ich die selben Probleme wie jetzt (momentan setze ich beim Aufrufen den Pfad). Allerdings möchte ich das eigentlich vermeiden. Habe ich keine Möglichkeit das ohne ServletContext zu machen, irgendwie vllt mit getClass oder sowas?
Was willst du denn genau machen?

Laut Servlet Spek. ist die Nutzung von java.io.File etc. nicht erlaubt, Dateien im Classpath bzw. in der WebApp sollten per Stream geladen werden, du solltest dich auch daran halten, alles andere ist meist ein dreckiger & nicht portabler Hack.
 
B

bygones

Gast
und warum bekommt die Klasse die die information braucht nicht einfach den Pfad reingereicht ?
zb im servlet:
Java:
String path = ServletContext.getRealPath("/WEB-INF/config/myconfig.properties"); // ist doch ein String ?
DieKlasse k = new DieKlasse(path);
k.machIrgendwas();
dann kann die Klasse mit dem Pfad machen was sie will ?

oder was versteh ich heir nicht ?
 

dflasjjs

Bekanntes Mitglied
@bygones: So wie du es sagst, ist es momentan implementiert. Allerdings wird die Klasse nicht immer an der selben Stelle initialisiert, sondern u.U. an mehreren (je nach Funktion) und dann müsste ich im Falle einer Pfadänderung durch die ganzen Dateien tingeln und das ändern. Ich hätte den Pfad daher lieber an einer zentralen Stelle (an der, in der ich ihn auch nur brauche) und das war. Vorher wars ja genau so. Ich hatte dort eben einfach einen absoluten Pfad stehen.

@maki: java.io.File habe ich in den Servlets auch nicht drin, sondern nur in einer ganz normalen Klasse die die Dateiarbeit übernimmt, ich hoffe das geht dann i.O..

Ich glaube ich nehme einfach Chumax Vorschlag und säge hinten die paar Unterordner ab. Dann sollte es ja gehen.
 

dflasjjs

Bekanntes Mitglied
Okay, laden kann ich die nun. Funzt super und ist viel einfacher als vorher. Durch welche Methode kann ich den Kram denn abspeichern? Hast du da auch noch sonen Artikel für? :)
 
M

maki

Gast
Was meinst du mit "Abspeichern"? Etwa in eine Jar schreiben?

Gar nicht.

Was genau hast du denn vor...
 

dflasjjs

Bekanntes Mitglied
Ich habe eine XML-Datei. Dort sind alle Daten der Webanwendung abgespeichert. Beim Startes des Webservers soll die XML-Datei geladen werden und alle Objekte werden initialisiert (funktioniert bereits). Beim Beendes des Server sollen natürlich alle Objekte wieder ins XML-File zurück.
 
M

maki

Gast
So wird das nicht gehen...

Um was für Konfig Einstellungen handelt es sich denn?
Werden diese in der WebApp geändert(sonst macht das Speichern wenig Sinn ;)), wenn ja wie?
DB Konfig Daten etc. speichert man in WebApps "traditionell" in der web.xml, diese können dann vom Admin des ServletContainers editiert werden, dadurch muss auch nix in den Jars der Webapp selbst geändert werden (was nicht geht).
 

dflasjjs

Bekanntes Mitglied
Es handelt sich nicht um Konfigurationsdaten, sondern um die Nutzdaten, diese werden natürlich auch in der Applikation verändert. Diese Serialisier/Deserialisiere ich anschließend mit XStream.
 
M

maki

Gast
Es handelt sich nicht um Konfigurationsdaten, sondern um die Nutzdaten, diese werden natürlich auch in der Applikation verändert. Diese Serialisier/Deserialisiere ich anschließend mit XStream.
Tja, ich würde sagen da stimmt etwas mit dem Design an sich nicht ;)

Du würdest ja auch nicht versuchen "Nutzdaten" in eine EXE oder DLL zu speichern, oder? ;)

Dazu kommt, dass Serialisierung kein Ersatz für eine DB ist, Serialisierung hat andere Einsatzgebiete.
Wie wäre es mit einer DB?
Alternativ wäre es möglich, diese XML Dateien ausserhalb der WebApp und des ServletContainers abzulegen, mit java.io.File...
 

dflasjjs

Bekanntes Mitglied
Wieso? XML ist doch extra für Daten... warum soll man das nicht machen? Wenn die Daten so gering sind, dass sich eine DB nicht lohnt, dann ist es doch auch üblich es in Textdateien abzuspeichern, dachte das ist legitim.

Ich brauchte irgendeine Form der persistenten Datenspeicherung. Eine DB ist für die paar Daten (und vor allem die wenigen Zugriffe) viel zu mächtig.

Gibts denn keine Alternative zu java.io.File Daten in eine XML-Datei zu bekommen?
 
M

maki

Gast
Wieso? XML ist doch extra für Daten...
XML schon, aber wie gesagt, Serialisierung hat einen anderen Anwendungsbereich als DBs zu ersetzen.
zB. lassen sich serialisierte Daten nie wieder Deserialisieren wenn sich die Klasse zu sehr geändert hat ;)

Wenn die Daten so gering sind, dass sich eine DB nicht lohnt, dann ist es doch auch üblich es in Textdateien abzuspeichern
Nein, sowas ist nicht üblich, vor allem in Java :) hört sich eher nach Perl an...
Es gibt natürlich die Möglichkeit das zu machen, aber üblich ist es nicht...

Es gibt einige Embedded DBs für Java, zB. HSQL, H2 Derby, etc. pp.

Ansonnsten kannst du ja die Daten ins Filesystem schrieben, ausserhalb der WebApp/Servletcontainers.
 
M

maki

Gast
Mit [c]java.io.File[/c] auf eine Datei zugreifen die zB. unter C:\ liegt.
 
M

maki

Gast
Ich dachte das so ist scheiße und soll man nicht benutzen? Hatte es ja in Post 13 vor...
Ja, aber du hast du ja nicht von deiner Idee Serialisierung zur Datenspeicherung zu nutzen nicht abbringen lassen, und verglichen damit ist java.io.File in WebApps gar nicht soo schlimm
bzw. lässt keine "sauberen" Möglichkeiten mehr zu ;)
 
Zuletzt bearbeitet von einem Moderator:

dflasjjs

Bekanntes Mitglied
Hehe, okay... ich werde es erst mal so machen und wenn das nächste Update dort ansteht werde ich eine DB einbauen :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Dotenv relativer vs absoluter Pfad Java Basics - Anfänger-Themen 2
J Pfad zerlegen Java Basics - Anfänger-Themen 2
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
S Längster Pfad zwischen zwei Vertices in einem Graph Java Basics - Anfänger-Themen 3
C Pfad zu Properties-File bei ResourceBundle Java Basics - Anfänger-Themen 7
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
P Möglichen Pfad überprüfen Java Basics - Anfänger-Themen 5
M Java GUI explorer aufrufen um Pfad zu bekommen Java Basics - Anfänger-Themen 3
R FXMLLoader Pfad falsch`? Java Basics - Anfänger-Themen 4
S Alternativer Pfad Java Basics - Anfänger-Themen 5
R speicherort Mac pfad angeben Java Basics - Anfänger-Themen 3
L Breadth-First Search statt einem Pfad, alle Pfade herausfinden Java Basics - Anfänger-Themen 4
O Best Practice Datei-Pfad zerlegen Java Basics - Anfänger-Themen 4
topi relativer Pfad in einem Runnable JAR file Java Basics - Anfänger-Themen 12
H pfad finden Java Basics - Anfänger-Themen 12
H Pfad Program Files\Common Files\Oracle\Java\javapath Java Basics - Anfänger-Themen 3
L Pfad zum Jar Java Basics - Anfänger-Themen 7
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
J Leerzeichen im Pfad automatisch erkennen Java Basics - Anfänger-Themen 30
B Log4J Pfad des Logfiles definieren Java Basics - Anfänger-Themen 6
D Umgebungsvariable Pfad javaw.exe für Programmstart auf Windows Java Basics - Anfänger-Themen 1
D Pfad Java Basics - Anfänger-Themen 15
H nio Pfad aus Dateinamen extrahieren Java Basics - Anfänger-Themen 4
R Pfad angeben Java Basics - Anfänger-Themen 7
S Pfad für Dateisystem?? Java Basics - Anfänger-Themen 13
P JSON-Konfigurationsdatei verwenden: Probleme mit Pfad Java Basics - Anfänger-Themen 1
T Classpath Problem mit dem auslesen von Text-Dateien (Pfad) Java Basics - Anfänger-Themen 3
M Pfad zu einer Datei in einer exportierten Jar-Datei Java Basics - Anfänger-Themen 5
S ungültiger Pfad bei der Installation von API documentation Java Basics - Anfänger-Themen 0
N .propertiesdatei über Relativen Pfad einlesen lassen Java Basics - Anfänger-Themen 5
I ZIP Archive erstellen - ich möchte aber nur den jeweiligen Ordner zippen, bekomme ganzen Pfad Java Basics - Anfänger-Themen 1
I Bei Umlauten und Leerzeichen im Pfad, wird Datei nicht gefunden Java Basics - Anfänger-Themen 5
O JFileChooser Verhalten -Pfad Java Basics - Anfänger-Themen 15
V java Pfad javac Java Basics - Anfänger-Themen 8
D Ein Icon ohne Pfad sondern mit Package. Java Basics - Anfänger-Themen 4
P Leerzeichen in Pfad... Java Basics - Anfänger-Themen 17
P Datei auf Pfad speichern Java Basics - Anfänger-Themen 7
B Relativer Pfad zwischen zwei Files Java Basics - Anfänger-Themen 2
H Programm zur Ausgabe von Datei und Pfad Java Basics - Anfänger-Themen 7
C Pfad für Bilder angeben Java Basics - Anfänger-Themen 11
L Pfad "zuschneiden" Java Basics - Anfänger-Themen 3
B In welchem (Default) Pfad erstellt Java Dateien? Java Basics - Anfänger-Themen 4
V relativer Pfad geht nicht, absolut schon? Java Basics - Anfänger-Themen 3
J Input/Output Datei auslesen, Pfad eingeben Java Basics - Anfänger-Themen 4
S PATH und Pfad auslesen.... Java Basics - Anfänger-Themen 3
X JDK installieren Pfad wird nicht gefunden Java Basics - Anfänger-Themen 5
B Classpath cmd java mit absolutem Pfad Java Basics - Anfänger-Themen 15
B eingene Klasse in eigenem Prozess starten mit relativem Pfad Java Basics - Anfänger-Themen 5
J FileOutputStream aktuelle Speicher Pfad ausgeben Java Basics - Anfänger-Themen 13
T Erkennen ob ein Pfad lokal oder im Netzwerk ist Java Basics - Anfänger-Themen 13
F Zugriff auf Pfad des gerade ausgeführten Programms? Java Basics - Anfänger-Themen 14
S Pfad auslesen Java Basics - Anfänger-Themen 3
B Externe Libraries fuer Applet ... Pfad eingeben? Java Basics - Anfänger-Themen 23
Helgon Pfad richtig angeben Java Basics - Anfänger-Themen 7
E Input/Output Relativer Bild-Pfad für InputStream Java Basics - Anfänger-Themen 5
M Existiert der gegebene Pfad? Java Basics - Anfänger-Themen 5
G aktueller Pfad Java Basics - Anfänger-Themen 4
F Relativer Pfad auf Datei im Projektordner Java Basics - Anfänger-Themen 11
B Pfad einer .jar im Programm ermitteln Java Basics - Anfänger-Themen 13
T Pfad für Datei neben Jar Java Basics - Anfänger-Themen 9
S File Kopieren Path Pfad Problem Java Basics - Anfänger-Themen 3
I Java-Programmm starten/ Pfad hsql DB Java Basics - Anfänger-Themen 7
D Input/Output Pfad richtig ermitteln Java Basics - Anfänger-Themen 12
T Pfad gültig oder ungültig? Java Basics - Anfänger-Themen 17
T brauche den pfad Name! Java Basics - Anfänger-Themen 2
Z css pfad falsch Java Basics - Anfänger-Themen 7
P ImageIcon/Pfad Java Basics - Anfänger-Themen 3
M externen Pfad in Jar verwenden Java Basics - Anfänger-Themen 3
V pfad.exists() gilt nicht für "//server/a/xyz.jpg"? Java Basics - Anfänger-Themen 12
C Relativer Pfad - Statische Methode Java Basics - Anfänger-Themen 6
C exec Aufruf mit Leerzeilen im Pfad Java Basics - Anfänger-Themen 3
J Pfad bzw. Namen einer Datei auslesen Java Basics - Anfänger-Themen 6
D Pfad zu "Eigenen Dateien" ermitteln Java Basics - Anfänger-Themen 8
A Relativer Pfad zu einem File ermitteln Java Basics - Anfänger-Themen 2
M createImage ungültiger Pfad registrieren Java Basics - Anfänger-Themen 2
S Pfad für Datei falsch - wie richtig angeben? Java Basics - Anfänger-Themen 7
H Wie Projekt-Ordner-Pfad ermitteln? Java Basics - Anfänger-Themen 11
A Aktueller Pfad des Programms (.jar) ermitteln Java Basics - Anfänger-Themen 10
M Problem mit relativen Pfad unter Linux Java Basics - Anfänger-Themen 5
L relativer Pfad Java Basics - Anfänger-Themen 2
S In Eclipse relativen Pfad fuer Tomcat Server erstellen..? Java Basics - Anfänger-Themen 3
E Pfad zu einem gif-Bild wird zur Laufzeit nicht gefunden Java Basics - Anfänger-Themen 5
megachucky FileInputStream findet nur absoluten Pfad, keinen Relativen ?! Java Basics - Anfänger-Themen 7
M Pfad angabe bei getRescource und ImageIO.write Java Basics - Anfänger-Themen 4
E new File macht den Pfad kaputt Java Basics - Anfänger-Themen 15
0 Den Pfad für das Bild angeben Java Basics - Anfänger-Themen 9
H Wie mache ich aus pfad\\unterpfad pfad\unterpfad? Java Basics - Anfänger-Themen 3
L datei speichern untervorgegebenen pfad Java Basics - Anfänger-Themen 3
A relativer Pfad Java Basics - Anfänger-Themen 6
R Properties über statischen Pfad laden Java Basics - Anfänger-Themen 2
L Pfad von Webprojekt auslesen Java Basics - Anfänger-Themen 10
F Datei suchen --> Pfad als String speichern Java Basics - Anfänger-Themen 8
R Pfad relativ eingeben Java Basics - Anfänger-Themen 20
Z Pfad zum Jararchiv Java Basics - Anfänger-Themen 4
S Object Pfad Java Basics - Anfänger-Themen 3
S log4j pfad per umgebungsvariable setzen? Java Basics - Anfänger-Themen 2
G Mit jFileChooser Pfad rauskriegen? Java Basics - Anfänger-Themen 3
G Pfad einer Klasse Java Basics - Anfänger-Themen 6
D Relativer Pfad innerhalb jar Datei Java Basics - Anfänger-Themen 5
C Problem mit einem Pfad Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben