@Override
	public void destroy() throws Exception {
		log.info(sm.getString("http11protocol.stop", getName()));
		if (canDestroy) {
			endpoint.destroy();
		} else {
			log.warn(sm.getString("http11protocol.cannotDestroy", getName()));
			try {
				RequestInfo[] states = cHandler.global.getRequestProcessors();
				for (int i = 0; i < states.length; i++) {
					if (states[i].getStage() == org.apache.coyote.Constants.STAGE_SERVICE) {
						// FIXME: Log RequestInfo content
					}
				}
			} catch (Exception ex) {
				log.error(sm.getString("http11protocol.cannotDestroy", getName()), ex);
				throw ex;
			}
		}
		if (org.apache.tomcat.util.Constants.ENABLE_MODELER) {
			if (tpOname != null) {
				Registry.getRegistry(null, null).unregisterComponent(tpOname);
			}
			if (rgOname != null) {
				Registry.getRegistry(null, null).unregisterComponent(rgOname);
			}
		}
	}