You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "Jung, Eric (Contractor)" <ej...@russellmellon.com> on 2002/08/23 16:17:05 UTC
holding ServletContext reference in ServiceLifecycle.init()
If I need access to ServletContext from a service, does anyone see a problem
doing this:
/* Calculator exposes a service called Add */
public class Calculator implements javax.xml.rpc.server.ServiceLifecycle {
ServletContext sc;
public void init(Object context) {
ServletEndpointContext sec = (ServletEndpointContext)context;
sc = sec.getServletContext(); //hold ServletContext reference
}
//The Add service
public void add(String str) {
//use sc here
}
}
instead of this:
public class Calculator {
//The Add service
public void add(String str) {
MessageContext mc = MessageContext.getCurrentContext();
ServletContext sc = ((HttpServlet)
mc.getProperty(HTTPConstants.MC_HTTP_SERVLET)).getServletContext();
//use sc here
}
}
Which is a better approach?
TYIA,
Eric H. Jung
Re: holding ServletContext reference in ServiceLifecycle.init()
Posted by mn...@future-earth.net.
HEre is how to do that from a BasicHandler
public void invoke(org.apache.axis.MessageContext messageContext) throws
org.apache.axis.AxisFault {
try {
Message reqMessage = messageContext.getRequestMessage();
SOAPEnvelope env = reqMessage.getSOAPEnvelope();
// Element envElement = env.getAsDOM();
// String strSOAPBody = XMLUtils.ElementToString(envElement);
// StringBuffer logStr = new StringBuffer();
// logStr.append(strSOAPBody);
// System.out.println(strSOAPBody);
HttpServletRequest request1 = (HttpServletRequest)
messageContext.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
HttpSession re = ((HttpServletRequest)
messageContext.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST)).getSession
();
----- Original Message -----
From: "Jung, Eric (Contractor)" <ej...@russellmellon.com>
To: <ax...@xml.apache.org>
Sent: Friday, August 23, 2002 4:17 PM
Subject: holding ServletContext reference in ServiceLifecycle.init()
> If I need access to ServletContext from a service, does anyone see a
problem
> doing this:
>
> /* Calculator exposes a service called Add */
> public class Calculator implements javax.xml.rpc.server.ServiceLifecycle {
>
> ServletContext sc;
>
> public void init(Object context) {
> ServletEndpointContext sec = (ServletEndpointContext)context;
> sc = sec.getServletContext(); //hold ServletContext reference
> }
>
> //The Add service
> public void add(String str) {
> //use sc here
> }
> }
>
> instead of this:
>
> public class Calculator {
>
> //The Add service
> public void add(String str) {
> MessageContext mc = MessageContext.getCurrentContext();
> ServletContext sc = ((HttpServlet)
> mc.getProperty(HTTPConstants.MC_HTTP_SERVLET)).getServletContext();
> //use sc here
> }
> }
>
> Which is a better approach?
>
> TYIA,
> Eric H. Jung
>