2016-06-10 1 views
1

J'ai une archive de guerre avec une application web. Je veux démarrer cette application dans mon application Spring Boot. J'ai donc suivi les conseils de that question:Comment étendre la guerre dans Tomcat embarqué de Spring Boot?

@Bean 
public EmbeddedServletContainerFactory servletContainerFactory() { 
    return new TomcatEmbeddedServletContainerFactory() { 

     @Override 
     protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) { 
      try { 
       tomcat.addWebapp("blog", "/tmp/roller.war"); 

      } catch (ServletException ex) { 
       throw new IllegalStateException("Failed to add webapp", ex); 
      } 
      return super.getTomcatEmbeddedServletContainer(tomcat); 
     } 

    }; 
} 

Cela fonctionne très bien, sauf la guerre ne soit pas extrait:

Impossible de créer le répertoire [/tmp/tomcat.9153500015669016883.8080/webapps/ Blog]

C'est la mise en page du répertoire de travail tomcat:

$ find /tmp/tomcat.9153500015669016883.8080/ 
/tmp/tomcat.9153500015669016883.8080/ 
/tmp/tomcat.9153500015669016883.8080/work 
/tmp/tomcat.9153500015669016883.8080/work/Tomcat 
/tmp/tomcat.9153500015669016883.8080/work/Tomcat/localhost 
/tmp/tomcat.9153500015669016883.8080/work/Tomcat/localhost/blog 
/tmp/tomcat.9153500015669016883.8080/work/Tomcat/localhost/ROOT 

Un breakpoint in ExpandWar.expand() reveils qu'il veut créer un répertoire dans webapps /. Ce dossier Webapps non existant provient de Host.getAppBaseFile() (qui provient du ContextConfig.context).

Donc, pour moi, il semble que quelque chose est bizarre configuré et il devrait être étendu dans le travail/Tomcat/localhost/blog. Comment puis je faire ça?

Répondre

3

Il semble que ce ne soit pas lié au printemps, mais au comportement attendu d'un tomcat embarqué. J'ai trouvé this related issue:

L'utilisateur doit définir un répertoire valide pour l'appBase d'un hôte.

donc simplement créer le répertoire par défaut appBase avant le déploiement ne l'astuce:

tomcat.getHost().getAppBaseFile().mkdir(); 
tomcat.addWebapp("blog", "/tmp/roller.war");