/** @since servlet-api-3.0 */ @Override public ServletRegistration.Dynamic addServlet( String servletName, Class<? extends Servlet> servletClass) { if (!isStarting()) throw new IllegalStateException(); if (servletName == null || "".equals(servletName.trim())) throw new IllegalStateException("Missing servlet name"); if (!_enabled) throw new UnsupportedOperationException(); final ServletHandler handler = ServletContextHandler.this.getServletHandler(); ServletHolder holder = handler.getServlet(servletName); if (holder == null) { // new servlet holder = handler.newServletHolder(Source.JAVAX_API); holder.setName(servletName); holder.setHeldClass(servletClass); handler.addServlet(holder); return dynamicHolderAdded(holder); } // complete a partial registration if (holder.getClassName() == null && holder.getHeldClass() == null) { holder.setHeldClass(servletClass); return holder.getRegistration(); } else return null; // existing completed registration for servlet name }