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
>