getResourceAsStream() aus EJB

Felli

Mitglied
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
 

Felli

Mitglied
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:

The enterprise bean must not attempt to create a class loader;
obtain the current class loader; set the context class loader;

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

In addition to allowing access to referenced classes,
as described above, any resources contained in the referenced JAR files must
also be accessible using the Class and ClassLoader getResource methods,
as allowed by the security permissions of the application.
An application will typically have the security permissions required to access
resources in any of the JAR files packaged with the application.

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:

Read-only data can, however, be stored in files in a deployment JAR, and accessed with
the getResource() or getResourceAsStream() methods of java.lang.Class.

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.
 

mvitz

Top Contributor
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.
 

Neue Themen


Oben