getResourceAsStream() aus EJB

Dieses Thema getResourceAsStream() aus EJB im Forum "Application Tier" wurde erstellt von Felli, 11. Apr. 2012.

Thema: getResourceAsStream() aus EJB Hallo, ich möchte in einen Singleton-Session-Bean eine XML-Datei mittels getResourceAsStream() laden, die...

  1. Hallo,

    ich möchte in einen Singleton-Session-Bean eine XML-Datei mittels getResourceAsStream() laden, die innerhalb einer EJB-Jar verpackt ist. Allerdings bin ich mir unsicher, ob dies gegen die EJB-Spezifikation verstößt, da die Verwendung von Klassen aus dem Paket java.io problematisch ist. Ist dies möglich und wird dies in der Praxis angewandt?

    Gäbe es auch andere Möglichkeiten, den Inhalt von XML-Dateien oder Properties-Dateien innerhalb einer EJB zu verwenden (etwa über @Resource)?

    Danke
     
  2. Vielleicht hilft dir das Grundlagen Training weiter --> *Klick*
  3. Was genau aus [c]java.io[/c] würdest du denn verwenden?
     
  4. Ich dachte ja an so etwas:

    Code (Java):

    Thread.currentThread().getContextClassLoader().getResourceAsStream("meinexml.xml")
     
    Und da kommt ja ein java.io.InputStream zurück.
     
  5. Hach, was für eine rege Diskussion hier...

    Hat denn noch nie jemand das Problem gehabt, Properties- oder XML-Dateien aus einer Session-Bean zu laden? Zurzeit bin ich eine wenig verwirrt; ich wollte ja einen Classloader dafür verwenden, bin aber dann in der EJB-Spezifikation auf Folgendes gestoßen:

    Demnach darf man den Classloader nicht beziehen. In der aktuellen JEE-Spezifikation finde ich jedoch diesen Eintrag:

    Also darf man doch den Classloader und die getResource-Methode verwenden? Untermauert wird dies durch eine Aussage auf http://java.sun.com/blueprints/qanda/ejb_tier/restrictions.html:

    Inzwischen habe ich getResource mit JBoss AS 7 ohne Probleme getestest und werde wohl diese Variante verwenden, um XML-Daten aus einem JAR-Paket zu laden.
     
  6. Da dürfte auch eigentlich in diesem Falle nichts gegensprechen.

    Primär sind zugriffe auf das Filesystem verboten, da man in dann nicht mehr Clustern kann. Da aber bei dir sich die Resourcen in einem JAR befinden, dass in jedem Falle auf jedem Knoten liegt, kann dir da ja nichts passieren.
     
  7. Kostenloses Java-Grundlagen Training im Wert von 39 €
    Schau dir jetzt hier das Tutorial an und starte richtig durch!