2010-06-24 18 views
7

Tengo una aplicación web en crecimiento que ahora necesita poder almacenar las preferencias/configuraciones del usuario y del sistema. En el pasado, siempre he hecho rodar mi propio sistema de preferencias para aplicaciones web, pero me preguntaba qué hacen otras personas para resolver este problema. ¿Hay alguna biblioteca de preferencias para aplicaciones web que las personas puedan recomendar?Preferencias de usuario en la aplicación Java EE

Lo ideal es que las preferencias del usuario tengan un valor predeterminado que el usuario puede anular. No todas las preferencias deben exponerse al usuario, ya que algunas serán para cosas como la última posición de un cuadro de diálogo.

Si tomo la ruta de rollo propio, creo que será una tabla de preferencias separada con todas las preferencias almacenadas como cadenas convertidas a su tipo de datos verdadero, primitivo según sea necesario. p.ej. una tabla algo así como clave, user_key, setting_name, setting_value. Yo prefiero este enfoque a una columna por tipo de datos porque detiene el ajuste de una configuración que termina accidentalmente con dos valores y el consumidor de una configuración debe saber qué tipo de datos quieren.

+0

¿Es necesario ser capaz de cambiar las Preferencias de forma dinámica? De lo contrario, el estándar JEE es el uso de '' que se puede buscar o inyectar. – ewernli

+0

Sí, las preferencias deben ser dinámicas. Algunos serán configurados por el usuario, por ejemplo, su tema preferido, y otros serán configurados por el usuario, por ejemplo, la última ubicación de un cuadro de diálogo. – wobblycogs

Respuesta

3

Un enfoque que utilizamos es:

  • todas las propiedades no obligatorios tienen valores por defecto en el código
  • entregan un archivo de propiedades con la aplicación web en la que se definen las propiedades orientadas técnicos
  • de consulta SQL tabla al inicio de la aplicación para cargar principalmente propiedades orientadas a funciones

Las propiedades de la base de datos tienen una prioridad más alta que las del p incluido archivo roperty. Si su requisito es evitar que los gerentes funcionales cambien las propiedades técnicas, puede agregar una columna de contexto a la tabla de propiedades que se verifica en la interfaz de usuario de administración.

Todo el código de la aplicación que se puede ver es una colección de propiedades usadas globalmente.

-3

Hay una API de JDK para que: java.util.prefs

http://java.sun.com/j2se/1.4.2/docs/guide/lang/preferences.html

+2

Gracias, conocía el sistema de preferencias y lo he usado en algunas aplicaciones de escritorio. Probablemente podría hacerse para hacer lo que quiero, pero creo que es una opción bastante pobre para una aplicación web. Veo que son dos de los principales fallos, ya que no hay almacenamiento de base de datos de configuración y ningún concepto de sesiones de usuario (admite configuraciones por usuario pero no de la manera que una aplicación web necesita). – wobblycogs

+0

Además, la implementación de preferencias estándar en UNIX utiliza un hilo de fondo para enjuagar los cambios en el almacén de respaldo y no hay forma de detener este hilo al volver a cargar la aplicación web que genera fugas de memoria. –

Cuestiones relacionadas