/** * This method will be invoked while a new servlet is found in the current webfragment.xml, while it is not found in the web.xml file and those merged web-fragment.xml files */ @Override public void add(Servlet servlet, MergeContext mergeContext) throws DeploymentException { if (servlet.getLoadOnStartup() != null) { mergeContext.setAttribute(createServletLoadOnStartupKey(servlet.getServletName()), new MergeItem(servlet.getLoadOnStartup(), mergeContext.getCurrentJarUrl(), ElementSource.WEB_FRAGMENT)); } }
@Override public void preProcessWebXmlElement(WebApp webApp, MergeContext context) throws DeploymentException { for (Servlet servlet : webApp.getServlet()) { if (servlet.getLoadOnStartup() != null) { context.setAttribute(createServletLoadOnStartupConfiguredInWebXMLKey(servlet.getServletName()), Boolean.TRUE); } } }
@Override public void merge(Servlet srcServlet, Servlet targetServlet, MergeContext mergeContext) throws DeploymentException { String servletName = srcServlet.getServletName(); //If the same servlet in the initial web.xml has already set the load-on-startup option, then we just ignore the setting in webfragment.xml file if (isServletLoadOnStartupConfiguredInWebXML(servletName, mergeContext)) { return; } if (srcServlet.getLoadOnStartup() != null) { Integer srcLoadOnStartupValue = srcServlet.getLoadOnStartup(); MergeItem existedLoadOnStartup = (MergeItem) mergeContext.getAttribute(createServletLoadOnStartupKey(servletName)); if (existedLoadOnStartup == null) { targetServlet.setLoadOnStartup(srcLoadOnStartupValue); mergeContext.setAttribute(createServletLoadOnStartupKey(servletName), new MergeItem(srcLoadOnStartupValue, mergeContext.getCurrentJarUrl(), ElementSource.WEB_XML)); } else if (!existedLoadOnStartup.getValue().equals(srcLoadOnStartupValue)) { throw new DeploymentException(WebDeploymentMessageUtils.createDuplicateValueMessage("servlet " + servletName, "load-on-startup", existedLoadOnStartup.getValue().toString(), existedLoadOnStartup.getBelongedURL(), srcLoadOnStartupValue.toString(), mergeContext.getCurrentJarUrl())); } } }
servletInfo.asyncSupported = servlet.getAsyncSupported(); servletInfo.loadOnStartup = servlet.getLoadOnStartup(); if (servlet.getRunAs() != null) { servletInfo.runAsRole = servlet.getRunAs().getRoleName().trim();