[J2EE] global resouces

Pagina: 1
Acties:

  • Ybox
  • Registratie: Juni 2000
  • Laatst online: 03-03 16:30
Ik ben bezig met een Java J2EE projectje.
Hiervoor moet ik wat tekst bestanden inlezen maar deze staan buiten de ear.
Heb hiervoor een JBoss AS draaien (daarin bevindt zich wel een data directory voor files die na een reboot nog bewaard moeten blijven).

Files inlezen vanuit de ear lukt gewoon goed. Ik heb alleen niet echt een idee hoe nu in die data directory te komen. Ik heb ook al "ClassLoader.getResources()" e.d gebruikt maar het is mij niet compleet helder waar die nu precies beginnen. (start path)
Iemand een pointer naar wat heldere info ? of waar die "ClassLoader getResources()" naar verwijst ?

  • Standeman
  • Registratie: November 2000
  • Laatst online: 01-12 20:13

Standeman

Prutser 1e klasse

Staan die bestanden toevallig in de working of user dir. Wat die zijn gewoon te vinden in de system properties. Anders kan je altijd nog met absolute paden werken.

The ships hung in the sky in much the same way that bricks don’t.


  • momania
  • Registratie: Mei 2000
  • Laatst online: 05:21

momania

iPhone 30! Bam!

Anders heb je nog de properties-services.xml file in je deploy directory staan. Daarin kan je system env. variabelen inzetten. Per app maak ik er 1 die verwijst naar een .properties file voor de app waar de app specifieke zaken in staan. :)

Neem je whisky mee, is het te weinig... *zucht*


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Ybox schreef op dinsdag 01 mei 2007 @ 21:57:
Ik heb ook al "ClassLoader.getResources()" e.d gebruikt maar het is mij niet compleet helder waar die nu precies beginnen. (start path)
Iemand een pointer naar wat heldere info ? of waar die "ClassLoader getResources()" naar verwijst ?
Deze zoekt naar bestanden in de volgorde zoals de paden staat ingesteld in de classpath van de running environment. Je kunt gewoon
Java:
1
InputStream input = ClassLoader.getResourceAsStream("filename.properties");
gebruiken om een verwerkbare InputStream van het gegeven bestand te krijgen dat in de classpath staat.

En je kunt
Java:
1
InputStream input = ClassLoader.getSystemResourceAsStream("filename.properties");
gebruiken om een verwerkbare InputStream van het gegeven bestand te krijgen dat in de systeem classpath staat.

Aangezien je het over J2EE hebt, is het handiger om
Java:
1
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("filename.properties");
te gebruiken om een bestand te inlezen dat in de classpath van de web (servlet) container staat.

Zie ook de ClassLoader API.

[ Voor 14% gewijzigd door BalusC op 02-05-2007 06:31 ]


  • Ybox
  • Registratie: Juni 2000
  • Laatst online: 03-03 16:30
BalusC schreef op woensdag 02 mei 2007 @ 06:24:
[...]

Deze zoekt naar bestanden in de volgorde zoals de paden staat ingesteld in de classpath van de running environment. Je kunt gewoon
Java:
1
InputStream input = ClassLoader.getResourceAsStream("filename.properties");
gebruiken om een verwerkbare InputStream van het gegeven bestand te krijgen dat in de classpath staat.

En je kunt
Java:
1
InputStream input = ClassLoader.getSystemResourceAsStream("filename.properties");
gebruiken om een verwerkbare InputStream van het gegeven bestand te krijgen dat in de systeem classpath staat.

Aangezien je het over J2EE hebt, is het handiger om
Java:
1
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("filename.properties");
te gebruiken om een bestand te inlezen dat in de classpath van de web (servlet) container staat.

Zie ook de ClassLoader API.
Ja die laatste gebruik ik al met succes :) Maar hoe kom ik er nu achter waar die system classpath naar verwijst ?

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Dit hangt gewoon af van de running environment. Voor een lijstje moet je gewoon even ClassLoader.getSystemResources("") aanroepen.
Java:
1
2
3
4
List<URL> urls = Collections.list(ClassLoader.getSystemResources(""));
for (URL url : urls) {
    System.out.println(url);
}

  • Ybox
  • Registratie: Juni 2000
  • Laatst online: 03-03 16:30
BalusC schreef op woensdag 02 mei 2007 @ 09:24:
Dit hangt gewoon af van de running environment. Voor een lijstje moet je gewoon even ClassLoader.getSystemResources("") aanroepen.
Java:
1
2
3
4
List<URL> urls = Collections.list(ClassLoader.getSystemResources(""));
for (URL url : urls) {
    System.out.println(url);
}
BalusC schreef op woensdag 02 mei 2007 @ 09:24:
Dit hangt gewoon af van de running environment. Voor een lijstje moet je gewoon even ClassLoader.getSystemResources("") aanroepen.
Java:
1
2
3
4
List<URL> urls = Collections.list(ClassLoader.getSystemResources(""));
for (URL url : urls) {
    System.out.println(url);
}
Ik heb de volgende code:
code:
1
Thread.currentThread().getContextClassLoader().getResources("")

Hiermee krijg ik netjes een lijstje, vreemd genoeg staat de locatie waarop hij andere resources vindt er niet bij :?
Pagina: 1