final ServletContainer container = ServletContainer.Factory.newInstance();
final PathHandler root = new PathHandler();
DefaultServer.setRootHandler(root);
DeploymentInfo builder1 = new DeploymentInfo();
builder1.addServlet(new ServletInfo("error", ErrorServlet.class)
.addMapping("/error"));
builder1.addServlet(new ServletInfo("path", PathServlet.class)
.addMapping("/*"));
builder1.addErrorPage(new ErrorPage("/defaultErrorPage"));
builder1.addErrorPage(new ErrorPage("/404", StatusCodes.NOT_FOUND));
builder1.addErrorPage(new ErrorPage("/500", StatusCodes.INTERNAL_SERVER_ERROR));
builder1.addErrorPage(new ErrorPage("/parentException", ParentException.class));
builder1.addErrorPage(new ErrorPage("/childException", ChildException.class));
builder1.addErrorPage(new ErrorPage("/runtimeException", RuntimeException.class));
builder1.setExceptionHandler(LoggingExceptionHandler.builder()
.add(ParentException.class, "io.undertow", Logger.Level.DEBUG)
.add(ChildException.class, "io.undertow", Logger.Level.DEBUG)
.add(RuntimeException.class, "io.undertow", Logger.Level.DEBUG)
.add(ServletException.class, "io.undertow", Logger.Level.DEBUG)
.build());
builder1.setClassIntrospecter(TestClassIntrospector.INSTANCE)
.setClassLoader(ErrorPageTestCase.class.getClassLoader())
.setContextPath("/servletContext1")
.setServletStackTraces(ServletStackTraces.NONE)
.setDeploymentName("servletContext1.war");
final DeploymentManager manager1 = container.addDeployment(builder1);
manager1.deploy();
root.addPrefixPath(builder1.getContextPath(), manager1.start());
DeploymentInfo builder2 = new DeploymentInfo();
builder2.addServlet(new ServletInfo("error", ErrorServlet.class)
.addMapping("/error"));
builder2.addServlet(new ServletInfo("path", PathServlet.class)
.addMapping("/*"));
builder2.addErrorPage(new ErrorPage("/404", StatusCodes.NOT_FOUND));
builder2.addErrorPage(new ErrorPage("/501", StatusCodes.NOT_IMPLEMENTED));
builder2.addErrorPage(new ErrorPage("/parentException", ParentException.class));
builder2.addErrorPage(new ErrorPage("/childException", ChildException.class));
builder2.addErrorPage(new ErrorPage("/runtimeException", RuntimeException.class));
builder2.setExceptionHandler(LoggingExceptionHandler.builder()
.add(ParentException.class, "io.undertow", Logger.Level.DEBUG)
.add(ChildException.class, "io.undertow", Logger.Level.DEBUG)
.add(RuntimeException.class, "io.undertow", Logger.Level.DEBUG)
.add(ServletException.class, "io.undertow", Logger.Level.DEBUG)
.build());
builder2.setClassIntrospecter(TestClassIntrospector.INSTANCE)
.setClassLoader(ErrorPageTestCase.class.getClassLoader())
.setContextPath("/servletContext2")
.setServletStackTraces(ServletStackTraces.NONE)
.setDeploymentName("servletContext2.war");
final DeploymentManager manager2 = container.addDeployment(builder2);
manager2.deploy();
root.addPrefixPath(builder2.getContextPath(), manager2.start());
DeploymentInfo builder3 = new DeploymentInfo();
builder3.addServlet(new ServletInfo("error", ErrorServlet.class)
.addMapping("/error"));
builder3.addServlet(new ServletInfo("path", PathServlet.class)
.addMapping("/*"));
builder3.addErrorPage(new ErrorPage("/404", StatusCodes.NOT_FOUND));
builder3.addErrorPage(new ErrorPage("/500", StatusCodes.INTERNAL_SERVER_ERROR));
builder3.addErrorPage(new ErrorPage("/parentException", ParentException.class));
builder3.addErrorPage(new ErrorPage("/childException", ChildException.class));
builder3.addErrorPage(new ErrorPage("/runtimeException", RuntimeException.class));
builder3.setClassIntrospecter(TestClassIntrospector.INSTANCE)
.setClassLoader(ErrorPageTestCase.class.getClassLoader())
.setContextPath("/servletContext3")
.setServletStackTraces(ServletStackTraces.NONE)
.setDeploymentName("servletContext3.war");
builder3.setExceptionHandler(LoggingExceptionHandler.builder()
.add(ParentException.class, "io.undertow", Logger.Level.DEBUG)
.add(ChildException.class, "io.undertow", Logger.Level.DEBUG)
.add(RuntimeException.class, "io.undertow", Logger.Level.DEBUG)
.add(ServletException.class, "io.undertow", Logger.Level.DEBUG)
.build());
final DeploymentManager manager3 = container.addDeployment(builder3);
manager3.deploy();
root.addPrefixPath(builder3.getContextPath(), manager3.start());
}