Esecuzione di Grails 3 su Heroku

voti
36

Sto provando a schierare le più semplici possibili Grails 3 app su Heroku, senza successo.

Il doc Heroku fornisce solo informazioni di implementare una Grails 2 app. Così ho seguito questo articolo del blog che spiega come distribuire un'applicazione Grails 3. Ma porta alla seguente eccezione:

2015-06-09T21:03:41.637499+00:00 app[web.1]:   .   ____          _            __ _ _
2015-06-09T21:03:41.637570+00:00 app[web.1]: ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
2015-06-09T21:03:41.637651+00:00 app[web.1]:   '  |____| .__|_| |_|_| |_\__, | / / / /
2015-06-09T21:03:41.637612+00:00 app[web.1]:  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
2015-06-09T21:03:41.637693+00:00 app[web.1]:  =========|_|==============|___/=/_/_/_/
2015-06-09T21:03:41.641123+00:00 app[web.1]: 
2015-06-09T21:03:41.641085+00:00 app[web.1]:  :: Spring Boot ::        (v1.2.3.RELEASE)
2015-06-09T21:04:03.066389+00:00 app[web.1]: ERROR org.apache.catalina.core.ContainerBase - A child container failed during start
2015-06-09T21:04:03.066397+00:00 app[web.1]: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
2015-06-09T21:04:03.066399+00:00 app[web.1]:    at java.util.concurrent.FutureTask.report(FutureTask.java:122) [na:1.8.0_40-'cedar14']
2015-06-09T21:04:03.066401+00:00 app[web.1]:    at java.util.concurrent.FutureTask.get(FutureTask.java:192) [na:1.8.0_40-'cedar14']
2015-06-09T21:04:03.066403+00:00 app[web.1]:    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) ~[webapp-runner.jar:na]
2015-06-09T21:04:03.066404+00:00 app[web.1]:    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800) [webapp-runner.jar:na]
2015-06-09T21:04:03.066406+00:00 app[web.1]:    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [webapp-runner.jar:na]
2015-06-09T21:04:03.066408+00:00 app[web.1]:    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) [webapp-runner.jar:na]
2015-06-09T21:04:03.066409+00:00 app[web.1]:    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) [webapp-runner.jar:na]
2015-06-09T21:04:03.066411+00:00 app[web.1]:    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40-'cedar14']
2015-06-09T21:04:03.066413+00:00 app[web.1]:    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_40-'cedar14']
2015-06-09T21:04:03.066414+00:00 app[web.1]:    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_40-'cedar14']
2015-06-09T21:04:03.066417+00:00 app[web.1]:    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40-'cedar14']
2015-06-09T21:04:03.066419+00:00 app[web.1]: Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
2015-06-09T21:04:03.066420+00:00 app[web.1]:    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) [webapp-runner.jar:na]
2015-06-09T21:04:03.066422+00:00 app[web.1]:    ... 6 common frames omitted
2015-06-09T21:04:03.066424+00:00 app[web.1]: Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
2015-06-09T21:04:03.066425+00:00 app[web.1]:    at org.apache.tomcat.websocket.server.WsServerContainer.<init>(WsServerContainer.java:147) ~[tomcat-embed-websocket-8.0.20.jar:8.0.20]
2015-06-09T21:04:03.066427+00:00 app[web.1]:    at org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131) ~[tomcat-embed-websocket-8.0.20.jar:8.0.20]
2015-06-09T21:04:03.066429+00:00 app[web.1]:    at org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47) ~[tomcat-embed-websocket-8.0.20.jar:8.0.20]
2015-06-09T21:04:03.066431+00:00 app[web.1]:    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5274) ~[webapp-runner.jar:na]
2015-06-09T21:04:03.066432+00:00 app[web.1]:    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [webapp-runner.jar:na]
2015-06-09T21:04:03.066434+00:00 app[web.1]:    ... 6 common frames omitted

Qualcuno è riuscito a distribuire un'applicazione Grails 3 su Heroku? Un metodo graduale sarebbe prezioso.

È pubblicato 09/06/2015 alle 20:16
dall'utente
In altre lingue...                            


2 risposte

voti
0

Anche se non sono un esperto di Grails, questo mi sembra un conflitto di versione del vaso servlet API. Il metodo ServletContext.getVirtualServerNameè disponibile solo a partire dal Servlet API 3.1, ma sembra che una versione precedente di questo vaso è sul classpath e nasconde quella probabilmente prpvided da Tomcat. Provate sia per rimuovere un riferimento esplicito alle servlet-api.jar dal percorso di classe o per impostare il campo di applicazione "a condizione" (se applicabile).

Risposto il 09/06/2015 a 20:35
fonte dall'utente

voti
3

  1. Sembra di avere una dipendenza che vuole utilizzare i socket web. La dipendenza è che richiedono una libreria websocket incorporato Tomcat 8. Il vaso web app corridore scaricato nel blog è Tomcat 7 forse provare a scaricare il rilascio M1 per 8.0.18

http://search.maven.org/#artifactdetails%7Ccom.github.jsimone%7Cwebapp-runner%7C8.0.18.0-M1%7Cjar


  1. Globale dataSourcedi proprietà sta causando il driver Postgres per riuscire a caricare. Rimuovere le seguenti righe in grails-app/conf/application.yml:

    -dataSource:
    -    pooled: true
    -    jmxExport: true
    -    driverClassName: org.h2.Driver
    -    username: sa
    -    password:
    

PR: https://github.com/davydotcom/grails3-on-heroku/commit/8593e846efbd79804d9013db1b8b8f0e73cf9629

Risposto il 09/06/2015 a 21:55
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more