2008-10-11 20 views

Respuesta

13

Eso depende de su tipo de aplicación J2SE:

  • archivo JAR ejecutable J2SE (muy simple): utilizar user.home System property para encontrar el hogar-dir. Luego haga un subdirector en consecuencia (como, por ejemplo, PGP, SVN, ... do)
  • Java Web Start proporciona métodos muy agradables incluidos para propiedades seguras. Siempre específico del usuario
  • Finalmente Eclipse RCP: allí tiene la noción del espacio de trabajo (también derivado de user.home) para los usuarios y la configuración (no estoy seguro de cómo acceder a ese truco en Vista) para uso en computadora

Todos estos enfoques son, cuando se usan con cuidado, use separatorChar - OS neutral.

0

Para la configuración específica del usuario, puede escribir un archivo de configuración en la carpeta apuntada por la propiedad del sistema "user.home". Solo funcionaría en esa máquina, por supuesto.

5

Java tiene una biblioteca específicamente para hacer esto en java.util.prefs.Preferences.

Preferences userPrefs = Preferences.getUserNodeForPackage(MyClass.class); // Gets user preferences node for MyClass 
Preferences systemPrefs = Preferences.getSysteNodeForPackage(MyClass.class); // Gets system preferences node for MyClass 
Preferences userPrefsRoot = Preferences.getUserRoot(); // Gets user preferences root node 
Preferences systemPrefsRoot = Preferences.getSystemRoot(); // Gets system preferences root node 
25

En primer lugar en el formato:

  1. property files Java son buenos para los pares clave/valor (también manejar automáticamente los caracteres de nueva línea). Un grado de estructura es posible mediante el uso de 'notación de puntos'. El inconveniente es que la estructura no le permite enumerar fácilmente las entidades de configuración de nivel superior y trabajar en forma descendente. Se usa mejor para un conjunto pequeño de configuraciones específicas del entorno, que a menudo se pueden modificar.
  2. Archivos XML: se utilizan a menudo para una configuración más compleja de varios frameworks Java (principalmente J2EE y Spring). Te aconsejaría que al menos conozcas el Spring, contiene muchas ideas que vale la pena saber, incluso si decides no utilizarlas. Si decide desplegar su propia configuración XML, le recomiendo usar XStream con opciones de serialización personalizadas o si solo necesita analizar XML, eche un vistazo al XOM. BTW Spring también le permite conectar su idioma de configuración XML personalizado, pero es un relatively complex task. La configuración XML se utiliza mejor para una configuración 'interna' más compleja que el usuario final no ve ni modifica.
  3. Objetos de Java serializados: una forma rápida y sencilla de conservar el estado de un objeto y restaurarlo más tarde. Es útil si escribe una GUI de configuración y no le importa si la configuración es legible por humanos. Tenga cuidado con compatibility issues cuando evolucione clases.
  4. Preferencias: introducidas en Java 1.4, le permiten almacenar texto escrito, números, matrices de bytes y otras primitivas en el almacenamiento específico de la plataforma. En Windows, ese es el registro (puede elegir entre /Software/JavaSoft/Prefs bajo HKLM o HKCU). En Unix, la misma API crea archivos en la página de inicio del usuario o /etc. Cada colmena de preferencias se puede exportar e importar como archivo XML. Puede especificar la implementación personalizada de la interfaz PreferencesFactory estableciendo la propiedad JVM "java.util.prefs.PreferencesFactory" en el nombre de su clase de implementación.

En general, usar la API de las preferencias puede ser algo bueno o malo según el escenario de su aplicación.

  1. Si planea tener varias versiones del mismo código ejecutándose en la misma máquina con diferente configuración, entonces usar la API de Preferencias es una mala idea.
  2. Si planea utilizar la aplicación en un entorno restringido (dominio de Windows o cuadro Unix estrechamente administrado), debe asegurarse de tener acceso adecuado a las claves/directorios de registro necesarios. Esto me ha pillado por sorpresa más de una vez.
  3. Tenga cuidado con los perfiles móviles (directorios de inicio replicados) que compensan algunos escenarios divertidos cuando hay más de una máquina activa involucrada.
  4. Las preferencias no son tan obvias como un archivo de configuración en el directorio de la aplicación. la mayoría del personal de soporte de escritorio no espera y no le gusta.

En cuanto a la disposición de archivos de las preferencias, de nuevo depende de su aplicación. Una sugerencia genérica es:

  1. Empaque la mayoría de los archivos XML dentro del JAR de la aplicación en el directorio raíz o bajo/META-INF. Estos archivos serán de solo lectura y se consideran privados para la aplicación.
  2. Ponga la configuración modificable del usuario en $ APP_HOME/conf. Debe consistir principalmente en archivos de propiedades y ocasionalmente en un simple archivo XML (serialización XStream). Estos archivos se modifican como parte del proceso de instalación y generalmente no son reparables por el usuario.
  3. En el directorio de usuario, en un directorio de puntos (es decir, '~/.myapplication'), almacene cualquier configuración de usuario. La configuración del usuario puede anular la de la aplicación conf directorio. Cualquier cambio realizado desde dentro de la aplicación ir aquí (ver también el siguiente punto).
  4. También puede usar el directorio 0 APP_HOME/var $ APP_home/var para almacenar cualquier otro dato mutable que sea específico de esta instancia de aplicación (en contraposición al usuario). Otra ventaja de este enfoque es que puede mover y hacer una copia de seguridad de toda la aplicación y su configuración mediante una simple copia de un directorio.

Esto ilustra algunas técnicas estándar para administrar la configuración.Se puede implementar utilizando diferentes bibliotecas y herramientas, a partir de JRE crudo, añadiendo Primavera/Guice o ir a un contenedor J2EE (posiblemente con resorte integrado)

Otros enfoques para la gestión de configuración son:

  1. Uso multiple base directories para ejecutar varias instancias de la aplicación utilizando diferentes configuraciones.
  2. Usando lightweightregistries para la gestión de la configuración centralizada
  3. Un archivo de gestión centralizada de base de datos de gestión de configuración (CMDB), que contiene los valores específicas de servidor para cada máquina es rsync-ed cada noche a todos los hosts de producción. La aplicación utiliza una configuración de plantilla y selecciona de la CMDB durante el tiempo de ejecución en función del nombre de host actual.
0

Yo uso este

 

    String pathFile = null; 
    if(OS.contains("win")){ 
     pathFile = System.getenv("AppData"); 
    }else{ 
     pathFile = System.getProperty("user.home"); 
    } 

que guardar la configuración de mi aplicación aquí C: \ Users \ nombre de usuario \ AppData \ en las ventanas user.home (/ home/usuario) en otros platfroms

Cuestiones relacionadas