Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

467
Views
/tmp/tomcat-docbase siempre se crea con un Spring Boot JAR (pero no un WAR)

Desde STS, estoy creando un proyecto 'Web' Spring Boot 1.5.2 estándar. Si ejecuta esta aplicación, se crean dos directorios: el directorio 'base' normal y un directorio 'tomcat-docbase'

 . . . 4096 Mar 29 10:00 tomcat.2743776473678691880.8080 . . . 4096 Mar 29 10:00 tomcat-docbase.76291847886629412.8080

Si cambio este proyecto a un proyecto WAR, solo obtengo el directorio 'base'

 . . . 4096 Mar 29 10:06 tomcat.3131223012454570991.8080

Es fácil anular el directorio base predeterminado usando

 server.tomcat.basedir=.

sin embargo, esto no tiene efecto en tomcat-docbase. Es posible anular tomcat-docbase mediante programación, pero parece un truco.

¿Alguien piensa que esto es un error?

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Solución: cree un nombre de carpeta como público en su proyecto, en la misma carpeta con su JAR.

Motivo: del código springboot, no hay configuración para la carpeta docbase. pero puede crear una carpeta raíz común en el nombre de la carpeta de su proyecto como public , static o src/main/webapp , luego springboot nunca volverá a crear la carpeta temporal tomcat-docbase para usted.

 private static final String[] COMMON_DOC_ROOTS = { "src/main/webapp", "public", "static" } ... public final File getValidDirectory() { File file = this.directory; file = (file != null ? file : getWarFileDocumentRoot()); file = (file != null ? file : getExplodedWarFileDocumentRoot()); file = (file != null ? file : getCommonDocumentRoot()); if (file == null && this.logger.isDebugEnabled()) { logNoDocumentRoots(); } else if (this.logger.isDebugEnabled()) { this.logger.debug("Document root: " + file); } return file; } ... private File getCommonDocumentRoot() { for (String commonDocRoot : COMMON_DOC_ROOTS) { File root = new File(commonDocRoot); if (root.exists() && root.isDirectory()) { return root.getAbsoluteFile(); } } return null; }

Enlace: DocumentRoot.java

about 4 years ago · Santiago Trujillo Report

0

Para Spring Boot 2.x+

 @Component public class EmbeddedServletContainerConfig implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> { @Override public void customize(TomcatServletWebServerFactory factory) { factory.setDocumentRoot(new File("/your/path/here")); } }
about 4 years ago · Santiago Trujillo Report

0

Encontré una forma programática de configurar la carpeta docbase con spring y el servidor tomcat incorporado. Debe anular la implementación de TomcatEmbeddedServletContainerFactory de la siguiente manera:

 public @Bean EmbeddedServletContainerFactory embeddedServletContainerFactory() { TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory("/app", 8080) { @Override protected void configureContext(Context context, ServletContextInitializer[] initializers) { context.setDocBase("/path/to/your/docbase"); super.configureContext(context, initializers); } }; return factory; }
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!