下面列出了javax.servlet.Servlet#destroy ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Destruction servlet
*/
protected void destroyServlet(){
Map<String, ServletRegistration> servletRegistrationMap = servletContext.getServletRegistrations();
for(ServletRegistration registration : servletRegistrationMap.values()){
Servlet servlet = registration.getServlet();
if(servlet == null) {
continue;
}
if(registration.isInitServlet()){
try {
servlet.destroy();
}catch (Exception e){
logger.error("destroyServlet error={},servlet={}",e.toString(),servlet,e);
}
}
}
}
@Override
public InstanceHandle<? extends Servlet> getServlet() throws ServletException {
final InstanceHandle<? extends Servlet> instanceHandle;
final Servlet instance;
//TODO: pooling
try {
instanceHandle = factory.createInstance();
} catch (Exception e) {
throw UndertowServletMessages.MESSAGES.couldNotInstantiateComponent(servletInfo.getName(), e);
}
instance = instanceHandle.getInstance();
new LifecyleInterceptorInvocation(servletContext.getDeployment().getDeploymentInfo().getLifecycleInterceptors(), servletInfo, instance, new ServletConfigImpl(servletInfo, servletContext)).proceed();
return new InstanceHandle<Servlet>() {
@Override
public Servlet getInstance() {
return instance;
}
@Override
public void release() {
try {
instance.destroy();
} catch (Throwable t) {
UndertowServletLogger.REQUEST_LOGGER.failedToDestroy(instance, t);
}
instanceHandle.release();
}
};
}
@Override
public InstanceHandle<? extends Servlet> getServlet() throws ServletException {
final InstanceHandle<? extends Servlet> instanceHandle;
final Servlet instance;
//TODO: pooling
try {
instanceHandle = factory.createInstance();
} catch (Exception e) {
throw UndertowServletMessages.MESSAGES.couldNotInstantiateComponent(servletInfo.getName(), e);
}
instance = instanceHandle.getInstance();
new LifecyleInterceptorInvocation(servletContext.getDeployment().getDeploymentInfo().getLifecycleInterceptors(), servletInfo, instance, new ServletConfigImpl(servletInfo, servletContext)).proceed();
return new InstanceHandle<Servlet>() {
@Override
public Servlet getInstance() {
return instance;
}
@Override
public void release() {
try {
instance.destroy();
} catch (Throwable t) {
UndertowServletLogger.REQUEST_LOGGER.failedToDestroy(instance, t);
}
instanceHandle.release();
}
};
}
@Override
public void destroy() {
for (Servlet servlet : repositories.values()) {
servlet.destroy();
}
manager.shutDown();
}
public void destroy()
{
final Servlet servlet = dispatcher.getServlet();
final ServletConfig cfg = servlet.getServletConfig();
final ServletContext context = cfg != null ? cfg.getServletContext() : null;
servlet.destroy();
if (context != null) {
contextManager.ungetServletContext(context);
}
registrations.removeServlet(servlet);
}
public void destroy() {
for (Map.Entry<UrlPatternMatcher, Servlet> entry : servletMap
.entrySet()) {
Servlet servlet = entry.getValue();
servlet.destroy();
}
}
public static void removeServlet(final String mapping, final WebContext wc) {
final HttpListenerRegistry registry = SystemInstance.get().getComponent(HttpListenerRegistry.class);
if (registry == null || mapping == null) {
return;
}
final Servlet servlet = ((ServletListener) registry.removeHttpListener(pattern(wc.getContextRoot(), mapping))).getDelegate();
servlet.destroy();
wc.destroy(servlet);
if (servlet.getClass().equals("org.apache.jasper.servlet.JspServlet")) {
SystemInstance.get().getComponent(ServletContext.class).removeAttribute("org.apache.tomcat.InstanceManager");
}
}