Java: l'Accès au fichier de propriétés à l'intérieur d'une guerre
J'ai déjà cherché sur StackOverflow pour "propriétés à l'intérieur de la guerre", mais aucun de ces résultats n'a fonctionné pour mon cas.
Je suis à l'aide d'Eclipse Galileo et GlassFish v3 à développer un ensemble de services web. Je suis à l'aide d'un "dynamic web project" avec la structure suivante
Src
-java_code_pkg_1
-java_code_pkg_2
-com.company.config
--configfile.properties WebContent
-META-INF
-WEB-INF
--log4jProperties
--web.xml
--applicationContext.xml
--app-servlet.xml
Je veux accéder à la "configfile."propriétés de l'intérieur de l'un des fichiers source dans les "java_code_pkg1". Je suis en utilisant le Framework Spring et ce fichier sera instancié une fois le démarrage de l'application sur le serveur.
J'ai essayé les suivantes avec pas de chance
getResourceAsStream("/com.company.config/configfile.properties");
getResourceAsStream("/com/company/config/configfile.properties");
getResourceAsStream("com/company/config/configfile.properties");
getResourceAsStream("/configfile.properties");
getResourceAsStream("configfile.properties");
getResourceBundle(..) didn't work either.
Est-il possible d'accéder à un fichier lorsqu'il n'est pas en vertu de la WEB-INF/classes chemin? si oui, alors comment?
Merci
OriginalL'auteur del.ave | 2010-07-20
Vous devez vous connecter pour publier un commentaire.
Si vous êtes dans une guerre, votre classpath "répertoire courant" est "WEB-INF/classes". Il suffit d'aller jusqu'à deux niveaux.
C'est horrible, mais il fonctionne. Au moins, il fonctionne sous tomcat, jboss et geronimo et Il fonctionne aujourd'hui.
P. S. Votre structure de répertoire n'est pas très claire. C'est peut-être:
Mumble, je suppose que vous ne pouvez pas. Le serveur d'application doit isoler les guerres les uns des autres et il ne devrait pas vous permettre d'accéder à un fichier dans un frère ou d'une guerre. Évidemment, les moyens de les contourner ou de vous détendre le QUE politiques de sécurité existent, mais elles sont AUSSI dépendantes.
OriginalL'auteur andcoz
fonctionne quand je suis en mode debug. Je peux voir les valeurs dans le débogueur, mais j'obtiens une exception NullPointerException à droite après l'exécution de la "props.charge" de la ligne et avant d'entrer dans la lumière-dessous.
C'est une autre question. Au moins maintenant je sais que c'est la voie d'accès au fichier de configuration.
Merci pour votre aide.
OriginalL'auteur del.ave
Vérifier l'emplacement du fichier de propriétés dans un fichier WAR.
Si c'est dans WEB-INF/classes répertoire sous com/entreprise/config
getResourceAsStream("com/company/config/configfile.properties")
devrait fonctionnerou getResourceAsStream(" Cela devrait fonctionner si le fichier de config n'est pas sous WEB-INF/classes directoy
Également essayer d'utiliser getClass().getClassLoader().getResourceAsStream.
OriginalL'auteur Rajendra
Êtes-vous sûr que le fichier est inclus dans votre fichier war? Un grand nombre de fois, la guerre du processus d'édification de filtre non .les fichiers de classe.
OriginalL'auteur corsiKa
Quel est le chemin une fois qu'il est déployé sur le serveur? Il est possible d'utiliser le Scanner manuellement lire dans la ressource. À partir d'un fichier java au sein d'un paquet, la création d'un nouveau Fichier("../applications/"), vous obtiendrez un fichier pointé à {glassfish installer}\domains\{nom de domaine}\applications. Vous pourriez peut-être modifier ce chemin d'accès au fichier pour vous diriger là où vous devez aller?
OriginalL'auteur Dorrene Brown
Puisque vous êtes à l'aide de Printemps, puis d'utiliser les Ressources de soutien au Printemps pour injecter les propriétés des fichiers directement.
voir http://static.springsource.org/spring/docs/3.0.x/reference/resources.html
Même si la classe qui nécessite le fichier de propriétés n'est pas le Printemps géré, vous pouvez toujours obtenir l'accès à l'ApplicationContext et de l'utiliser pour charger la ressource
ressource pourrait être quelque chose comme, chemin de classe:les paramètres.propriétés, en supposant que votre fichier de propriétés suis ramassé par votre construction et a chuté dans le fichier war.
Vous pouvez également injecter directement, à partir de la documentation:
OriginalL'auteur Al Baker