@Override public void customize(TomcatServletWebServerFactory factory) { MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT); mappings.add("html", "text/html;charset=utf-8"); factory.setMimeMappings(mappings ); }
@Bean public ConfigurableServletWebServerFactory webServerFactory() { TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); factory.addConnectorCustomizers( connector -> { Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler(); protocol.setDisableUploadTimeout(false); } ); return factory; }
@Bean public TomcatServletWebServerFactory tomcatServletWebServerFactory() { return new TomcatServletWebServerFactory(); } }
@Bean public ConfigurableServletWebServerFactory webServerFactory() { final TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); final Set<ErrorPage> errorPages = new HashSet<>(); errorPages.add(new ErrorPage(HttpStatus.NOT_FOUND, "/web/error/404")); factory.setErrorPages(errorPages); final MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT); mappings.add("xsd", "text/xml; charset=utf-8"); mappings.add("ico", "image/x-icon"); factory.setMimeMappings(mappings); return factory; }
@Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(); if (StringUtils.isNotBlank(servletContextPath)) { tomcat.setContextPath(servletContextPath); } if (tomcatAjpEnabled) { tomcat.addAdditionalTomcatConnectors(createAJPConnector()); } return tomcat; }
@Bean public ConfigurableServletWebServerFactory webServerFactory() { TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT); mappings.add("hbs", "text/x-handlebars-template"); mappings.add("hal", "application/hal+json"); factory.setMimeMappings(mappings); return factory; }
/*********************************************************************************************************/ // 设置内嵌tomcat,我还是习惯在yml配置,下面那种方式设置的不全,是内嵌服务器的通用配置 // implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> // @Bean public ConfigurableServletWebServerFactory webServerFactory() { TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); factory.setPort(9000); return factory; } /*********************************************************************************************************/
@Test public void customize() { TomcatServletWebServerFactory tomcatFactory = new TomcatServletWebServerFactory(); this.tomcatAutoConfiguration.jsfTomcatFactoryCustomizer().customize(tomcatFactory); assertThat(tomcatFactory.getTomcatContextCustomizers()) .isNotEmpty(); }
@Test public void doNotCustomize() { TomcatServletWebServerFactory tomcatFactory = new TomcatServletWebServerFactory(); this.tomcatAutoConfiguration.jsfTomcatFactoryCustomizer().customize(tomcatFactory); assertThat(tomcatFactory.getTomcatConnectorCustomizers()) .isEmpty(); }
@Bean public WebServerFactoryCustomizer tomcatFactoryCustomizer() { return server -> { if (server instanceof TomcatServletWebServerFactory) { ((TomcatServletWebServerFactory) server).addConnectorCustomizers(tomcatGracefulShutdown()); } }; }
containerFactory.addContextValves(new ValveBase() { @Override public void invoke(Request request, Response response) throws IOException, ServletException { containerFactory.addContextCustomizers(context -> context.setMapperContextRootRedirectEnabled(true));
@Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() { @Override protected void postProcessContext(Context context) { SecurityConstraint securityConstraint = new SecurityConstraint(); securityConstraint.setUserConstraint("CONFIDENTIAL"); SecurityCollection collection = new SecurityCollection(); collection.addPattern("/*"); securityConstraint.addCollection(collection); context.addConstraint(securityConstraint); } }; tomcat.addConnectorCustomizers(new TomcatConnectorCustomizer() { @Override public void customize(Connector connector) { ((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1); } }); tomcat.addAdditionalTomcatConnectors(initiateHttpConnector()); return tomcat; }
@Bean public WebServerFactoryCustomizer<TomcatServletWebServerFactory> jsfTomcatFactoryCustomizer() { return factory -> factory.addContextCustomizers(this.customizer); } }
@Bean public ServletWebServerFactory tomcatEmbedded(){ TomcatServletWebServerFactory tomcat=new TomcatServletWebServerFactory(); tomcat.addConnectorCustomizers((TomcatConnectorCustomizer) connector ->{ if (connector.getProtocolHandler() instanceof AbstractHttp11Protocol<?>){ //-1 无限的意思 ((AbstractHttp11Protocol<?>)connector.getProtocolHandler()).setMaxSwallowSize(-1); } }); return tomcat; } }
/** * Creates a {@link TomcatServletWebServerFactory}. * * @return a {@link TomcatServletWebServerFactory}. */ @Bean public TomcatServletWebServerFactory tomcatServletWebServerFactory() { return new TomcatServletWebServerFactory(); }
@Override public void customize(ConfigurableServletWebServerFactory factory) { if (factory instanceof TomcatServletWebServerFactory) { ((TomcatServletWebServerFactory) factory).addConnectorCustomizers(new GracefulShutdown()); } }
@Override public void customize(ConfigurableServletWebServerFactory configurableServletWebServerFactory) { if(configurableServletWebServerFactory instanceof TomcatServletWebServerFactory){ TomcatServletWebServerFactory container = (TomcatServletWebServerFactory)configurableServletWebServerFactory; container.addContextValves(new KeycloakAuthenticatorValve()); container.addContextCustomizers(tomcatKeycloakContextCustomizer()); } else if (configurableServletWebServerFactory instanceof UndertowServletWebServerFactory){ UndertowServletWebServerFactory container = (UndertowServletWebServerFactory)configurableServletWebServerFactory; container.addDeploymentInfoCustomizers(undertowKeycloakContextCustomizer()); } else if (configurableServletWebServerFactory instanceof JettyServletWebServerFactory){ JettyServletWebServerFactory container = (JettyServletWebServerFactory)configurableServletWebServerFactory; container.addServerCustomizers(jettyKeycloakServerCustomizer()); } }
@Bean public WebServerFactoryCustomizer<TomcatServletWebServerFactory> webServerFactoryCustomizer() { return factory -> factory.addContextCustomizers( context -> { // 设置 JNDI 信息 ContextEnvironment environment = new ContextEnvironment(); environment.setName("jndi-name"); environment.setValue("My JNDI"); environment.setType(String.class.getName()); // 配置 Environment,等同于 <Environment/> 元素 context.getNamingResources().addEnvironment(environment); } ); }
@Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(); tomcat.addConnectorCustomizers(connector -> connector.setAllowTrace(true)); return tomcat; }
@Bean TomcatServletWebServerFactory webServerFactory() { return new TomcatServletWebServerFactory(0); }