/** * Register the servlet described by the passed descriptor. * * @param \AppserverIo\Psr\Servlet\Description\ServletDescriptorInterface $descriptor The servlet descriptor * * @return void */ protected 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()); } }