En un proyecto J2EE típico, colocamos el parámetro inicial del nivel de aplicación en la etiqueta context-param en web.xml, como la configuración de la base de datos, la dirección de correo electrónico del administrador, etc.
Los valores dentro del
String value = getServletContext().getInitParameter("name_of_context_initialization_parameter"); |
Cuando se trata de Web Service, surge el mismo problema.
¿Qué sucede si queremos poner la información de configuración de la base de datos en un archivo de configuración y dejar que Web Service acceda a él? Queremos que la información de configuración no esté codificada y, por lo tanto, se pueda cambiar durante la etapa de implementación.
Afortunadamente para nosotros, el servicio web también puede acceder al contexto del servlet. El contexto de servlet está disponible por JAX-WS a través del contexto del mensaje, que se puede recuperar utilizando el contexto del servicio web. Insertar el siguiente miembro hará que JAX-WS inyecte una referencia al contexto del servicio web en su servicio web:
@Resource private WebServiceContext context; |
Luego, puede acceder al contexto del servlet usando:
ServletContext servletContext = (ServletContext) context.getMessageContext().get(MessageContext.SERVLET_CONTEXT); |
¿Qué hay de otras formas de poner información de configuración para Java Web Service?