Tengo problemas para obtener una configuración básica de JNDI en Glassfish.Configuración/búsqueda de JNDI en Glassfish
Tengo lo que creo que debería ser una tarea simple: en tiempo de ejecución, determinar si una propiedad en particular se establece en verdadero o no. Creo que esta es una buena aplicación de JNDI, pero parece que no puedo encontrar la ruta correcta entre el servidor de aplicaciones y mi código de servlet.
Así es como he configurado la propiedad en Glassfish:
En mi código del servlet, estoy tratando de buscar el valor con:
Boolean enabled = (Boolean) ctx.lookup("java:global/arizona/quartz_enabled");
Además de esto ruta, también he intentado lo siguiente sin éxito:
- java: global/Arizona/Arizona/quartz_enabled
- java: module/Arizona/quartz_enabled
- java: module/Arizona/Arizona/quartz_enabled
Mi aplicación se llama "Arizona", pero implementa en el contexto raíz, si eso asuntos.
Estoy seguro de que es solo una cuestión de averiguar el espacio de nombre adecuado para llegar a la propiedad, pero siento que estoy disparando en la oscuridad tratando de encontrarlo. ¿Hay una manera simple de navegar el árbol JNDI en Glassfish?
Hmm, eso no parece funcionar para mí. Todavía obtengo: Causado por: javax.naming.NamingException: Error de búsqueda para 'java: comp/env/arizona/quartz_enabled' en SerialContext [La excepción de raíz es javax.naming.NameNotFoundException: Ningún objeto vinculado al nombre java: comp/env/arizona/quartz_enabled] También soy un usuario de Intellij, y ese evaluador es muy bueno, pero desafortunadamente en este caso todavía parece necesitar el nombre JNDI adecuado. No vi nada "manejable" en el InitialContext que pudiera navegar. –
En uno de los servidores de aplicaciones que necesitaba depurar (no recuerdo cuál fue exactamente hace mucho tiempo), el JNDI se implementó como un mapa anidado, donde las claves son cadenas y los valores son valores reales (enlazados) o mapas (para rutas anidadas). Así que fui capaz de lanzarlo a un mapa y cavar hasta el punto que necesitaba. InitialContext también tiene el método getEnvironment() que devuelve Hashtable, por lo que si Glassfish JNDI no está construido en Map, todavía debería exponer API similar. Puede comenzar desde java: comp/env, ver lo que contiene y buscar hasta encontrar la respuesta. – mindas