Search in sources :

Example 1 with MultipartConfig

use of jakarta.servlet.annotation.MultipartConfig in project tomcat by apache.

the class StandardWrapper method loadServlet.

/**
 * Load and initialize an instance of this servlet, if there is not already
 * an initialized instance.  This can be used, for example, to load servlets
 * that are marked in the deployment descriptor to be loaded at server
 * startup time.
 *
 * @return the loaded Servlet instance
 * @throws ServletException for a Servlet load error
 */
public synchronized Servlet loadServlet() throws ServletException {
    // Nothing to do if we already have an instance or an instance pool
    if (instance != null) {
        return instance;
    }
    PrintStream out = System.out;
    if (swallowOutput) {
        SystemLogHandler.startCapture();
    }
    Servlet servlet;
    try {
        long t1 = System.currentTimeMillis();
        // Complain if no servlet class has been specified
        if (servletClass == null) {
            unavailable(null);
            throw new ServletException(sm.getString("standardWrapper.notClass", getName()));
        }
        InstanceManager instanceManager = ((StandardContext) getParent()).getInstanceManager();
        try {
            servlet = (Servlet) instanceManager.newInstance(servletClass);
        } catch (ClassCastException e) {
            unavailable(null);
            // Restore the context ClassLoader
            throw new ServletException(sm.getString("standardWrapper.notServlet", servletClass), e);
        } catch (Throwable e) {
            e = ExceptionUtils.unwrapInvocationTargetException(e);
            ExceptionUtils.handleThrowable(e);
            unavailable(null);
            // https://bz.apache.org/bugzilla/show_bug.cgi?id=36630
            if (log.isDebugEnabled()) {
                log.debug(sm.getString("standardWrapper.instantiate", servletClass), e);
            }
            // Restore the context ClassLoader
            throw new ServletException(sm.getString("standardWrapper.instantiate", servletClass), e);
        }
        if (multipartConfigElement == null) {
            MultipartConfig annotation = servlet.getClass().getAnnotation(MultipartConfig.class);
            if (annotation != null) {
                multipartConfigElement = new MultipartConfigElement(annotation);
            }
        }
        // to load ContainerServlets
        if (servlet instanceof ContainerServlet) {
            ((ContainerServlet) servlet).setWrapper(this);
        }
        classLoadTime = (int) (System.currentTimeMillis() - t1);
        initServlet(servlet);
        fireContainerEvent("load", this);
        loadTime = System.currentTimeMillis() - t1;
    } finally {
        if (swallowOutput) {
            String log = SystemLogHandler.stopCapture();
            if (log != null && log.length() > 0) {
                if (getServletContext() != null) {
                    getServletContext().log(log);
                } else {
                    out.println(log);
                }
            }
        }
    }
    return servlet;
}
Also used : ServletException(jakarta.servlet.ServletException) PrintStream(java.io.PrintStream) MultipartConfigElement(jakarta.servlet.MultipartConfigElement) MultipartConfig(jakarta.servlet.annotation.MultipartConfig) InstanceManager(org.apache.tomcat.InstanceManager) Servlet(jakarta.servlet.Servlet) ContainerServlet(org.apache.catalina.ContainerServlet) ContainerServlet(org.apache.catalina.ContainerServlet)

Aggregations

MultipartConfigElement (jakarta.servlet.MultipartConfigElement)1 Servlet (jakarta.servlet.Servlet)1 ServletException (jakarta.servlet.ServletException)1 MultipartConfig (jakarta.servlet.annotation.MultipartConfig)1 PrintStream (java.io.PrintStream)1 ContainerServlet (org.apache.catalina.ContainerServlet)1 InstanceManager (org.apache.tomcat.InstanceManager)1