AxisServiceServlet.java |
/* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.net.axis.server; import org.jboss.axis.AxisFault; import org.jboss.axis.ConfigurationException; import org.jboss.axis.MessageContext; import org.jboss.axis.server.AxisServer; import org.jboss.axis.transport.http.AxisServlet; import org.jboss.axis.transport.http.HTTPConstants; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; /** * <p> * An AxisServlet that is able to extract the corresponding AxisEngine * from its installation context and builds the right message contexts for the * JBoss classloading and deployment architecture. * </p> * <p> * This servlet will also reconstruct proper SOAPAction for http-get accesses * in order not to rely on unsecure url-mapping * </p> * @author <a href="mailto:Christoph.Jung@infor.de">Christoph G. Jung</a> * @created 7. September 2001, 19:17 * @version $Revision: 1.12.6.2 $ */ public class AxisServiceServlet extends AxisServlet { /** reference to the server */ protected AxisServer server = null; /** Creates new AxisServlet */ public AxisServiceServlet() { } /** * override AxisServlet.getEngine() in order to redirect to * the corresponding AxisEngine. */ public org.jboss.axis.server.AxisServer getEngine() throws AxisFault { if (server == null) { // we need to extract the engine from the // rootcontext String installation = getConfigurationContext(); // call the static service method to find the installed engine try { server = JMXEngineConfigurationFactory .newJMXFactory(installation) .getAxisServer(); } catch (NullPointerException e) { throw new AxisFault("Could not access JMX configuration factory.", e); } } return server; } /** access configuration context */ protected String getConfigurationContext() { return getInitParameter(org.jboss.net.axis.Constants.CONFIGURATION_CONTEXT); } /* (non-Javadoc) * a list request comes through get and * does not need a particularly specified messagecontext * except to hook classloading information on. * @see org.jboss.axis.transport.http.AxisServlet#reportAvailableServices(javax.servlet.http.HttpServletResponse, java.io.PrintWriter, javax.servlet.http.HttpServletRequest) */ protected void reportAvailableServices(HttpServletResponse arg0, PrintWriter arg1, HttpServletRequest arg2) throws ConfigurationException, AxisFault { MessageContext fake = new MessageContext(getEngine()); AxisServer.setCurrentMessageContext(fake); super.reportAvailableServices(arg0, arg1, arg2); } /* (non-Javadoc) * through get, we will not be presented with a correct soapaction, * hence we fake it to the context path (see AxisServlet.getSoapAction()) * @see org.jboss.axis.transport.http.AxisServlet#processMethodRequest(org.jboss.axis.MessageContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.io.PrintWriter) */ // protected void processMethodRequest( // MessageContext arg0, // HttpServletRequest arg1, // HttpServletResponse arg2, // PrintWriter arg3) // throws AxisFault // { // fakeSoapAction(arg0); // super.processMethodRequest(arg0, arg1, arg2, arg3); // } /* (non-Javadoc) * through get, we will not be presented with a correct soapaction, * hence we fake it to the context path (see AxisServlet.getSoapAction()) * @see org.jboss.axis.transport.http.AxisServlet#processWsdlRequest(org.jboss.axis.MessageContext, javax.servlet.http.HttpServletResponse, java.io.PrintWriter) */ // protected void processWsdlRequest( // MessageContext arg0, // HttpServletResponse arg1, // PrintWriter arg2) // throws AxisFault // { // fakeSoapAction(arg0); // super.processWsdlRequest(arg0, arg1, arg2); // } /** set soap action uri to the path info */ protected void fakeSoapAction(MessageContext arg0) { String pathInfo = (String)arg0.getProperty(HTTPConstants.MC_HTTP_SERVLETPATHINFO); if (pathInfo == null) { pathInfo = ""; } else if (pathInfo.startsWith("/")) { pathInfo = pathInfo.substring(1); } arg0.setSOAPActionURI(pathInfo); } }
AxisServiceServlet.java |