/*
 * Copyright 2012-2020 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.boot.web.server;

import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.nio.file.Files;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;

import org.springframework.util.Assert;

Abstract base class for ConfigurableWebServerFactory implementations.
Author:Phillip Webb, Dave Syer, Andy Wilkinson, Stephane Nicoll, Ivan Sopov, Eddú Meléndez, Brian Clozel
Since:2.0.0
/** * Abstract base class for {@link ConfigurableWebServerFactory} implementations. * * @author Phillip Webb * @author Dave Syer * @author Andy Wilkinson * @author Stephane Nicoll * @author Ivan Sopov * @author Eddú Meléndez * @author Brian Clozel * @since 2.0.0 */
public abstract class AbstractConfigurableWebServerFactory implements ConfigurableWebServerFactory { private int port = 8080; private InetAddress address; private Set<ErrorPage> errorPages = new LinkedHashSet<>(); private Ssl ssl; private SslStoreProvider sslStoreProvider; private Http2 http2; private Compression compression; private String serverHeader; private Shutdown shutdown = Shutdown.IMMEDIATE;
Create a new AbstractConfigurableWebServerFactory instance.
/** * Create a new {@link AbstractConfigurableWebServerFactory} instance. */
public AbstractConfigurableWebServerFactory() { }
Create a new AbstractConfigurableWebServerFactory instance with the specified port.
Params:
  • port – the port number for the web server
/** * Create a new {@link AbstractConfigurableWebServerFactory} instance with the * specified port. * @param port the port number for the web server */
public AbstractConfigurableWebServerFactory(int port) { this.port = port; }
The port that the web server listens on.
Returns:the port
/** * The port that the web server listens on. * @return the port */
public int getPort() { return this.port; } @Override public void setPort(int port) { this.port = port; }
Return the address that the web server binds to.
Returns:the address
/** * Return the address that the web server binds to. * @return the address */
public InetAddress getAddress() { return this.address; } @Override public void setAddress(InetAddress address) { this.address = address; }
Returns a mutable set of ErrorPages that will be used when handling exceptions.
Returns:the error pages
/** * Returns a mutable set of {@link ErrorPage ErrorPages} that will be used when * handling exceptions. * @return the error pages */
public Set<ErrorPage> getErrorPages() { return this.errorPages; } @Override public void setErrorPages(Set<? extends ErrorPage> errorPages) { Assert.notNull(errorPages, "ErrorPages must not be null"); this.errorPages = new LinkedHashSet<>(errorPages); } @Override public void addErrorPages(ErrorPage... errorPages) { Assert.notNull(errorPages, "ErrorPages must not be null"); this.errorPages.addAll(Arrays.asList(errorPages)); } public Ssl getSsl() { return this.ssl; } @Override public void setSsl(Ssl ssl) { this.ssl = ssl; } public SslStoreProvider getSslStoreProvider() { return this.sslStoreProvider; } @Override public void setSslStoreProvider(SslStoreProvider sslStoreProvider) { this.sslStoreProvider = sslStoreProvider; } public Http2 getHttp2() { return this.http2; } @Override public void setHttp2(Http2 http2) { this.http2 = http2; } public Compression getCompression() { return this.compression; } @Override public void setCompression(Compression compression) { this.compression = compression; } public String getServerHeader() { return this.serverHeader; } @Override public void setServerHeader(String serverHeader) { this.serverHeader = serverHeader; } @Override public void setShutdown(Shutdown shutdown) { this.shutdown = shutdown; }
Returns the shutdown configuration that will be applied to the server.
Returns:the shutdown configuration
Since:2.3.0
/** * Returns the shutdown configuration that will be applied to the server. * @return the shutdown configuration * @since 2.3.0 */
public Shutdown getShutdown() { return this.shutdown; }
Return the absolute temp dir for given web server.
Params:
  • prefix – server name
Returns:the temp dir for given server.
/** * Return the absolute temp dir for given web server. * @param prefix server name * @return the temp dir for given server. */
protected final File createTempDir(String prefix) { try { File tempDir = Files.createTempDirectory(prefix + "." + getPort() + ".").toFile(); tempDir.deleteOnExit(); return tempDir; } catch (IOException ex) { throw new WebServerException( "Unable to create tempDir. java.io.tmpdir is set to " + System.getProperty("java.io.tmpdir"), ex); } } }