Je dois créer un index Lucene sur un démarrage d'application Java EE, mais je ne veux pas décider moi-même de l'emplacement de l'index dans le système de fichiers. Comment les applications stockent-elles généralement les fichiers créés en cours d'exécution, y a-t-il un type de magasin fourni par le moteur par base d'application, etc. que je peux utiliser.état de l'application d'entreprise dans le serveur Java EE (par exemple pour l'index lucene)
Répondre
Je ne veux pas décider de l'emplacement de l'index en moi-même système de fichiers. Comment les applications en magasin général tous les fichiers créés lors de l'exécution, est-il un type de magasin fourni par le moteur application par application, etc
Par défaut, les classes du package java.io
résoudre des chemins relatifs par rapport au répertoire de travail actuel - à savoir l'emplacement dans le système de fichiers à partir duquel la commande java
a été invoquée - que vous pouvez obtenir en utilisant la propriété système user.dir
:
String curDir = System.getProperty("user.dir");
Mais, ce faisant est loin d'être idéal (en fait, l'écriture de fichiers n'est pas idéal pour portab le applications) et je ne recommande pas cette approche, mais suggère d'utiliser des chemins absolus pour le système de fichiers et, par ex. propriétés du système:
new File(System.getProperty("my.directory" + File.separator + "xxx");
Lorsque la propriété my.directory
serait définie dans le script de démarrage du serveur d'applications par exemple en supposant que JBoss est installé sous /opt
, en utilisant -Dmy.directory=/var/opt/jboss/<somedir>
pour être conforme à FHS.
Il suffit de garder à l'esprit que:
- Ecrire à la FS n'est pas idéal pour la portabilité des applications. Préférez écrire dans une base de données si possible
- L'utilisation de
java.io
à partir d'EJB est en théorie forbidden.
Normalement, vous créez un index Lucene dans les serveurs d'applications comme JBoss et Tomcat dans le répertoire courant (.), Le dossier d'index est créé dans le dossier bin, ce qui n'est pas du tout une bonne idée.
Vous pouvez soit stocker vos fichiers d'index dans la base de données (ou virtuellement tout autre périphérique de stockage) en utilisant Compass ou les stocker dans un chemin sur le système de fichiers.
Il n'y a pas de stockage spécial par application pour autant que je sache dans les conteneurs Java EE.
Je dirais que le meilleur moyen est de stocker les données sur un chemin par défaut dans le système de fichiers, par exemple/var/lib/your_application/puis de rendre cet emplacement configurable.
Vous pouvez en lire plus ici:
salut, quel est le chemin par défaut? – keshav84
Salut, La base linux standard dit que ce genre d'information devrait aller dans/var si je me souviens bien. C'est pourquoi j'ai suggéré/var/lib/your_application/comme exemple. –