Categorías
JSP/JSF Web Services

Acceda a ServletContext desde dentro de un servicio web JAX-WS

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 se puede acceder al elemento así:

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?

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *