如果您在部署到 JBoss 或 WildFly(基于 Undertow 的服务器)之后有一个解决方案。
将 ServletContainerInitializer 或 WebApplicationInitializer 添加到您的项目中。
onStartup(Set<Class<?>> c, ServletContext ctx)
或者onStartup(ServletContext ctx)
io.undertow.servlet.spec.ServletContextImpl servletContextImpl = (ServletContextImpl) ctx;
io.undertow.servlet.api.Deployment deployment = (DeploymentImpl) servletContextImpl.getDeployment();
DeploymentInfo deploymentInfo = deployment.getDeploymentInfo();
deploymentInfo.addSecurityConstraint(Servlets.securityConstraint()
.addRoleAllowed("*")
.addWebResourceCollections(Servlets.webResourceCollection().addUrlPattern("/*")));
//auth-mode
deploymentInfo.setLoginConfig(Servlets.loginConfig("BASIC", null));
//deploymentInfo.setLoginConfig(Servlets.loginConfig("SPNEGO", "SPNEGO"));
deploymentInfo.addSecurityRole("*");
deploymentInfo.setSecurityDisabled(false);
....
//ur Servlets go here
ServletRegistration.Dynamic servlet = ctx.addServlet("rwtServlet", "org.eclipse.rap.rwt.engine.RWTServlet");
servlet.addMapping("/rap");
ctx.addListener("org.eclipse.rap.rwt.engine.RWTServletContextListener");
注意:确保添加undertow-servlet
为编译时依赖
<dependency>
<groupId>io.undertow</groupId>
<artifactId>undertow-servlet</artifactId>
<version>2.0.30.Final</version>
</dependency>