Skip to content

oleborup/spring-boot-jetty-jersey-error-handling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Background

We use Spring Boot with embedded Jetty and Jersey for microservices running as Docker containers. For improved security we run Docker containers read-only.

Version and settings

Jetty 12.0.7 Spring Boot 3.2.4 Java 17

Problem

After upgrading to Jetty 12 with Spring Boot 3.2, Jetty fails to initialize, as temp directory creation fails on read-only filesystem.

Running embedded with Jetty does not require the use of the temp directory. Cannot find a way to allow Jetty to run without creating temp directory.

Previously this worked to allow read-only.

@Bean
public ConfigurableServletWebServerFactory servletContainer() {
    JettyServletWebServerFactory factory = new JettyServletWebServerFactory();
    factory.setDocumentRoot(new File(System.getProperty("java.io.tmpdir")));
    return factory;
}

To reproduce

mvn clean install
docker build -t sampleapp .
docker run --read-only -p 8080:8080 sampleapp
org.springframework.context.ApplicationContextException: Unable to start web server
    ...
Caused by: org.springframework.boot.web.server.WebServerException: Unable to create tempDir. java.io.tmpdir is set to /tmp
    ...
Caused by: java.nio.file.FileSystemException: /tmp/jetty-docbase.8080.17697230866097709625: Read-only file system
    ...

About

Sample to demonstrate changed Jetty error handling from Spring Boot 2.2.1 to 2.2.2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published