miércoles, 2 de septiembre de 2009

Como acceder al ServeltContext de un Servicio Web Axis2

Trabajando con Axis2 neceistaba tener un Servelet por afuera del Servicio, que sea un servidorcito UDP, y que parsee una trama UDP, que me llegaba todo el tiempo a ese servlet.

Entonces necesitaba parsear los datos UDP, y poder mandarlos atravez del WS.

Para eso iba a neceistar que mi servicio WS, pudiera agarrar esos datos parseados del Servlet. El metodo de comunicacion entre ese Servlet y mi Servicio del WS de axis2 iba a tener que ser el Contexto de la aplicacion, osea el ServletContext, entonces me puse a buscar la manera de poder acceder desde el servicio de axis2 al servletcontes de la aplicacion, y lo pude hacer gracias a esta data:


If you are using Axis2 Web Archive (WAR) distribution, then you can easily get these information from the messagecontext.

Accessing Remote IP address from the message context: You can get the remote IP address of the client corresponding to the current message as follows:

String remoteAddress = (String)msgCtx.getProperty("REMOTE_ADDR");


----

Accessing ServletContext from the message context: You can obtain the ServletContext
from message context as follows:

ServletContext servletContext = (ServletContext)MessageContext.getProperty
("transport.http.servletContext");

ServletContext servletContext = (ServletContext)MessageContext.getCurrentMessageContext().getProperty("transport.http.servletContext");


----

Accessing HttpServletRequest from the message context: You can obtain the
HttpServletRequest from message context as follows:

HttpServletRequest httpServletRequest = (HttpServletRequest)MessageContext.getProperty
("transport.http.servletRequest");


Esta ultima es la que utilice para acceder al contexto.