⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 axisservlet.java

📁 Java有关XML编程需要用到axis 的源代码 把里面bin下的包导入相应的Java工程 进行使用
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        /* Save some HTTP specific info in the bag in case someone needs it */        /********************************************************************/        msgContext.setProperty(Constants.MC_JWS_CLASSDIR, jwsClassDir);        msgContext.setProperty(Constants.MC_HOME_DIR, getHomeDir());        msgContext.setProperty(Constants.MC_RELATIVE_PATH, requestPath);        msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLET, this);        msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST, req);        msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETRESPONSE, res);        msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETLOCATION,                               getWebInfPath());        msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETPATHINFO,                               req.getPathInfo());        msgContext.setProperty(HTTPConstants.HEADER_AUTHORIZATION,                               req.getHeader(HTTPConstants.HEADER_AUTHORIZATION));        msgContext.setProperty(Constants.MC_REMOTE_ADDR, req.getRemoteAddr());        // Set up a javax.xml.rpc.server.ServletEndpointContext        ServletEndpointContextImpl sec = new ServletEndpointContextImpl();        msgContext.setProperty(Constants.MC_SERVLET_ENDPOINT_CONTEXT, sec);        /* Save the real path */        /**********************/        String realpath = getServletConfig().getServletContext()                          .getRealPath(requestPath);        if (realpath != null) {            msgContext.setProperty(Constants.MC_REALPATH, realpath);        }        msgContext.setProperty(Constants.MC_CONFIGPATH, getWebInfPath());        return msgContext;    }    /**     * Extract the SOAPAction header.     * if SOAPAction is null then we'll we be forced to scan the body for it.     * if SOAPAction is "" then use the URL     * @param req incoming request     * @return the action     * @throws AxisFault     */    private String getSoapAction(HttpServletRequest req) throws AxisFault {        String soapAction = req.getHeader(HTTPConstants.HEADER_SOAP_ACTION);        if (soapAction == null) {            String contentType = req.getHeader(HTTPConstants.HEADER_CONTENT_TYPE);            if(contentType != null) {                int index = contentType.indexOf("action");                if(index != -1){                    soapAction = contentType.substring(index + 7);                }            }        }        if (isDebug) {            log.debug("HEADER_SOAP_ACTION:" + soapAction);            /**             * Technically, if we don't find this header, we should probably fault.             * It's required in the SOAP HTTP binding.             */        }        if (soapAction == null) {            AxisFault af = new AxisFault("Client.NoSOAPAction",                                         Messages.getMessage("noHeader00",                    "SOAPAction"),                                         null, null);            exceptionLog.error(Messages.getMessage("genFault00"), af);            throw af;        }        // the SOAP 1.1 spec & WS-I 1.0 says:        // soapaction    = "SOAPAction" ":" [ <"> URI-reference <"> ]        // some implementations leave off the quotes        // we strip them if they are present        if (soapAction.startsWith("\"") && soapAction.endsWith("\"")            && soapAction.length() >= 2) {            int end = soapAction.length() - 1;            soapAction = soapAction.substring(1, end);        }        if (soapAction.length() == 0) {            soapAction = req.getContextPath(); // Is this right?        }        return soapAction;    }    /**     * Provided to allow overload of default JWSClassDir     * by derived class.     * @return directory for JWS files     */    protected String getDefaultJWSClassDir() {        return (getWebInfPath() == null)                ? null // ??? what is a good FINAL default for WebLogic?                : getWebInfPath() + File.separator + "jwsClasses";    }    /**     * Initialize a Handler for the transport defined in the Axis server config.     * This includes optionally filling in query string handlers.     */    public void initQueryStringHandlers() {        try {            this.transport = getEngine().getTransport(this.transportName);            if (this.transport == null) {                // No transport by this name is defined.  Therefore, fill in default                // query string handlers.                this.transport = new SimpleTargetedChain();                this.transport.setOption("qs.list",                                         "org.apache.axis.transport.http.QSListHandler");                this.transport.setOption("qs.method",                                         "org.apache.axis.transport.http.QSMethodHandler");                this.transport.setOption("qs.wsdl",                                         "org.apache.axis.transport.http.QSWSDLHandler");                return;            }            else {                // See if we should use the default query string handlers.                // By default, set this to true (for backwards compatibility).                boolean defaultQueryStrings = true;                String useDefaults = (String)this.transport.getOption(                        "useDefaultQueryStrings");                if ((useDefaults != null) &&                    useDefaults.toLowerCase().equals("false")) {                    defaultQueryStrings = false;                }                if (defaultQueryStrings == true) {                    // We should use defaults, so fill them in.                    this.transport.setOption("qs.list",                                             "org.apache.axis.transport.http.QSListHandler");                    this.transport.setOption("qs.method",                                             "org.apache.axis.transport.http.QSMethodHandler");                    this.transport.setOption("qs.wsdl",                                             "org.apache.axis.transport.http.QSWSDLHandler");                }            }        }        catch (AxisFault e) {            // Some sort of problem occurred, let's just make a default transport.            this.transport = new SimpleTargetedChain();            this.transport.setOption("qs.list",                                     "org.apache.axis.transport.http.QSListHandler");            this.transport.setOption("qs.method",                                     "org.apache.axis.transport.http.QSMethodHandler");            this.transport.setOption("qs.wsdl",                                     "org.apache.axis.transport.http.QSWSDLHandler");            return;        }    }    /**     * Attempts to invoke a plugin for the query string supplied in the URL.     *     * @param request the servlet's HttpServletRequest object.     * @param response the servlet's HttpServletResponse object.     * @param writer the servlet's PrintWriter object.     */    private boolean processQuery(HttpServletRequest request,                                 HttpServletResponse response,                                 PrintWriter writer) throws AxisFault {        // Attempt to instantiate a plug-in handler class for the query string        // handler classes defined in the HTTP transport.        String path = request.getServletPath();        String queryString = request.getQueryString();        String serviceName;        AxisEngine engine = getEngine();        Iterator i = this.transport.getOptions().keySet().iterator();        if (queryString == null) {            return false;        }        String servletURI = request.getContextPath() + path;        String reqURI = request.getRequestURI();        // chop off '/'.        if (servletURI.length() + 1 < reqURI.length()) {            serviceName = reqURI.substring(servletURI.length() + 1);        } else {            serviceName = "";        } while (i.hasNext() == true) {            String queryHandler = (String) i.next();            if (queryHandler.startsWith("qs.") == true) {                // Only attempt to match the query string with transport                // parameters prefixed with "qs:".                String handlerName = queryHandler.substring                                     (queryHandler.indexOf(".") + 1).                                     toLowerCase();                // Determine the name of the plugin to invoke by using all text                // in the query string up to the first occurence of &, =, or the                // whole string if neither is present.                int length = 0;                boolean firstParamFound = false;                while (firstParamFound == false && length < queryString.length()) {                    char ch = queryString.charAt(length++);                    if (ch == '&' || ch == '=') {                        firstParamFound = true;                        --length;                    }                }                if (length < queryString.length()) {                    queryString = queryString.substring(0, length);                }                if (queryString.toLowerCase().equals(handlerName) == true) {                    // Query string matches a defined query string handler name.                    // If the defined class name for this query string handler is blank,                    // just return (the handler is "turned off" in effect).                    if (this.transport.getOption(queryHandler).equals("")) {                        return false;                    }                    try {                        // Attempt to dynamically load the query string handler                        // and its "invoke" method.                        MessageContext msgContext = createMessageContext(engine,                                request, response);                        Class plugin = Class.forName((String)this.transport.                                getOption(queryHandler));                        Method pluginMethod = plugin.getDeclaredMethod("invoke",                                new Class[] {msgContext.getClass()});                        String url = HttpUtils.getRequestURL(request).toString();                        // Place various useful servlet-related objects in                        // the MessageContext object being delivered to the                        // plugin.                        msgContext.setProperty(MessageContext.TRANS_URL, url);                        msgContext.setProperty(HTTPConstants.                                               PLUGIN_SERVICE_NAME, serviceName);                        msgContext.setProperty(HTTPConstants.PLUGIN_NAME,                                               handlerName);                        msgContext.setProperty(HTTPConstants.                                               PLUGIN_IS_DEVELOPMENT,                                               new Boolean(isDevelopment()));                        msgContext.setProperty(HTTPConstants.PLUGIN_ENABLE_LIST,                                               new Boolean(enableList));                        msgContext.setProperty(HTTPConstants.PLUGIN_ENGINE,                                               engine);                        msgContext.setProperty(HTTPConstants.PLUGIN_WRITER,                                               writer);                        msgContext.setProperty(HTTPConstants.PLUGIN_LOG, log);                        msgContext.setProperty(HTTPConstants.                                               PLUGIN_EXCEPTION_LOG,                                               exceptionLog);                        // Invoke the plugin.                        pluginMethod.invoke(plugin.newInstance(),                                            new Object[] {msgContext});                        writer.close();                        return true;                    } catch (InvocationTargetException ie) {                        reportTroubleInGet(ie.getTargetException(), response,                                           writer);                        // return true to prevent any further processing                        return true;                    } catch (Exception e) {                        reportTroubleInGet(e, response, writer);                        // return true to prevent any further processing                        return true;                    }                }            }        }        return false;    }    /**     * getRequestPath a returns request path for web service padded with     * request.getPathInfo for web services served from /services directory.     * This is a required to support serving .jws web services from /services     * URL. See AXIS-843 for more information.     *     * @param request HttpServletRequest     * @return String     */    private static String getRequestPath(HttpServletRequest request) {        return request.getServletPath() + ((request.getPathInfo() != null) ?                                           request.getPathInfo() : "");    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -