Charge des Ressources renvoie la valeur null avec Jboss7
Comment puis-je charger des ressources comme des images à partir du code java avec Jboss7.1?
Cette habitude de travailler avec Jboss4:
this.getClass().getClassLoader().getResourceAsStream("/myapp/includes/images/image1.png");
Maintenant cette méthode retourne null.
Quelles sont les meilleures pratiques pour le chargement de ressources dans du code java maintenant avec Jboss7?
J'ai fait quelques tests:
URL url = this.getClass().getResource("");
System.out.println(url);
url = this.getClass().getResource("../../../");
System.out.println(url);
url = this.getClass().getResource("../../../../");
System.out.println(url);
url = this.getClass().getResource("../../../../../");
System.out.println(url);
url = this.getClass().getResource("includes");
System.out.println(url);
13:33:49,143 INFO [stdout] (http--127.0.0.1-8080-1) vfs:/C:/Eclipse/apps/jboss-as-7.1.1.Final/standalone/deployments/my-ea.ear/my-web.war/WEB-INF/classes/com/xxx/yyy/beans/jsf/
13:33:49,144 INFO [stdout] (http--127.0.0.1-8080-1) vfs:/C:/Eclipse/apps/jboss-as-7.1.1.Final/standalone/deployments/my-ea.ear/my-web.war/WEB-INF/classes/com/xxx/
13:33:49,150 INFO [stdout] (http--127.0.0.1-8080-1) jar:file:/C:/Eclipse/apps/jboss-as-7.1.1.Final/modules/javax/activation/api/main/activation-1.1.1.jar!/com/
13:33:49,151 INFO [stdout] (http--127.0.0.1-8080-1) file:/C:/Eclipse/apps/jboss-as-7.1.1.Final/modules/sun/jdk/main/service-loader-resources/
13:33:49,152 INFO [stdout] (http--127.0.0.1-8080-1) null
Êtes-vous en train d'essayer de charger les ressources qui se trouvent dans le système de fichiers? Est-ce nécessaire, ou vous pouvez les emballer dans le
L'image que je suis en train de charger est emballé dans le fichier WAR. - Je le garder "WebContent/includes/images/".
war
?L'image que je suis en train de charger est emballé dans le fichier WAR. - Je le garder "WebContent/includes/images/".
OriginalL'auteur Pierre | 2012-05-31
Vous devez vous connecter pour publier un commentaire.
Comme documenté sur la communauté JBoss wiki (sans l'aide d'un
jboss-deployment-structure.xml
fichier):jboss-as-7/modules/com/yourcompany/configuration/main/module.xml
):CLASSPATH
à l'aide d'unMANIFEST.MF
entrée:J'ai dû créer un module dossier appelé
com/mycompany/main
et ajouter toutes les images. Si cela se trouve à l'extérieur de la GUERRE, au moins dans le cas d'JBOSS_HOME
. Ensuite, j'ai pu charger l'image à l'aide de:OriginalL'auteur JoseK
La méthode
this.getClass().getClassLoader().getResourceAsStream("path")
est de la manipulation de la chemin à partir de la racine de votre classpath. Dans une GUERRE, ce qui est normalementWEB-INF/classes
etWEB-INF/lib
.Votre chemin
WebContent/includes/images/
semble être à l'intérieur de la racine de votre fichier WAR (qui n'est pas le classpath). De sorte que vous pouvezgetResourceAsStream
deServletContext
(voir ici) qui gère les chemins de la racine de la GUERRE de fichier.my-app.resources.jar
) et l'utilisationClassLoader.getResourceAsStream()
OriginalL'auteur Thor
Le chargement de classe dans JBOSS 7 est basé sur JBOSS projet de module. Toutes les versions antérieures de chargement est d'une manière hiérarchique.
Dans les versions antérieures de JBOSS nous pouvons mettre/spécifiez le dossier externe contenant toutes les applications dans le classpath de l'attribut par une modification de l'exécuter.sh/exécuter.chauve-souris.
Mais dans JBOSS 7 depuis le chargement est basée sur JBOSS projet de module, à l'extérieur des propriétés de la configuration est différente.
Vous pouvez essayer de configurer/chargement du fichier de propriétés dans JBOSS 7 en dessous de deux façons,
Préparer jar ayant toutes les propriétés des fichiers requis pour votre application. Utilisation
ce pot dans votre guerre/de l'oreille.
Alors n'importe quel fichier de propriétés de ce pot peut être chargé à l'aide de code ci-dessous,
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName) ;
Les changements nécessaires dans JBOSS 7 pour spécifier externe de la propriété des fichiers est disponible dans le lien communautaire https://community.jboss.org/wiki/HowToPutAnExternalFileInTheClasspath. Si les modifications sont faites selon ce lien, déploiement de travail. Assurez-vous après la configuration de JBOSS 7, le code ci-dessous doit être utilisé pour charger les propriétés,
InputStream inputStream = ce.getClass().getClassLoader().getResourceAsStream("xyz.les propriétés");
OriginalL'auteur Prakhyat