AppserverIo\Appserver\ServletEngine\ServletManager::registerServlet PHP Method

registerServlet() public method

Register the servlet described by the passed descriptor.
public registerServlet ( AppserverIo\Psr\Servlet\Description\ServletDescriptorInterface $descriptor ) : void
$descriptor AppserverIo\Psr\Servlet\Description\ServletDescriptorInterface The servlet descriptor
return void
    public function registerServlet(ServletDescriptorInterface $descriptor)
    {
        try {
            // create a new reflection class instance
            $reflectionClass = new ReflectionClass($descriptor->getClassName());
            // instantiate the servlet
            $instance = $reflectionClass->newInstance();
            // load servlet name
            $servletName = $descriptor->getName();
            // initialize the servlet configuration
            $servletConfig = new ServletConfiguration();
            $servletConfig->injectServletContext($this);
            $servletConfig->injectServletName($servletName);
            // append the init params to the servlet configuration
            foreach ($descriptor->getInitParams() as $paramName => $paramValue) {
                $servletConfig->addInitParameter($paramName, $paramValue);
            }
            // initialize the servlet
            $instance->init($servletConfig);
            // the servlet is added to the dictionary using the complete request path as the key
            $this->addServlet($servletName, $instance);
            // prepend the url-pattern - servlet mapping to the servlet mappings
            foreach ($descriptor->getUrlPatterns() as $pattern) {
                $this->addServletMapping($pattern, $servletName);
            }
            // register the EPB references
            foreach ($descriptor->getEpbReferences() as $epbReference) {
                $this->registerEpbReference($epbReference);
            }
            // register the resource references
            foreach ($descriptor->getResReferences() as $resReference) {
                $this->registerResReference($resReference);
            }
            // register the persistence unit references
            foreach ($descriptor->getPersistenceUnitReferences() as $persistenceUnitReference) {
                $this->registerPersistenceUnitReference($persistenceUnitReference);
            }
        } catch (\Exception $e) {
            // log the exception
            $this->getApplication()->getInitialContext()->getSystemLogger()->critical($e->__toString());
        }
    }