2016-07-22 77 views
1

我的应用程序在dev模式下运行良好,并且我用它运行n dev模式做了几次测试。我相信我已经阅读了足够的关于在servlet容器中部署grails应用程序的战争。在apache tomcat中部署grails 3.1.7的问题

我已经改变了范围为嵌入式Tomcat来提供

provided "org.springframework.boot:spring-boot-starter-tomcat" 

我已经使用命令的grails战争产生的战争和它的输出是下面:

grails war 
:compileJava UP-TO-DATE 
:compileGroovy UP-TO-DATE 
:findMainClass 
:assetCompile UP-TO-DATE 
:buildProperties 
:processResources UP-TO-DATE 
:classes UP-TO-DATE 
:compileWebappGroovyPages UP-TO-DATE 
:compileGroovyPages UP-TO-DATE 
:war 
:bootRepackage 
:assemble 

BUILD SUCCESSFUL 

| Built application to build/libs using environment: production 

当我部署在两个tomcat7然后在tomcat8.0.33这是嵌入式的版本它仍然给我这个错误:

Caused by: java.lang.NoSuchMethodError: com.mongodb.MongoClient.getDefaultCodecRegistry()Lorg/bson/codecs/configuration/CodecRegistry 

完整堆栈可在pastebin中找到。

但有趣的是,当我用命令来运行它的下方,在安装tomcat的同一个盒子,它运行的罚款:

java -Dgrails.env=prod -Dserver.port=9090 -jar my-grails-app-0.1.war 

我真的渴望在具有这种与tomcat.I做我不当然,如果我错过了任何步骤。任何人都可以在这个灯上点亮一些灯光在此先感谢

回答

0

您正在使用旧驱动程序mongo-java-driver-2.13.3哪些没有 方法com.mongodb.MongoClient.getDefaultCodecRegistry()。此方法在3.0(link)中引入,因此升级驱动程序应该可以解决问题。

+0

感谢您的回答。令我困扰的是,当我将应用程序作为jar运行时,它工作正常。这应该使用非常古老的mongo-java-driver-2.13.3。即使在开发模式下,它运行良好。 java-driver来自'org.springframework.data:spring-data-mongodb:1.8.1.RELEASE',并且任何使用最新的1.9 * .RELEASE版本的尝试在构建时都失败 –

+0

为什么使用'spring-data -mongodb'?有Grails插件:'org.grails.plugins:mongodb'。而关于那个工作瓶,不是在开战:我真的不知道,也许有人用不同的策略来创建爆炸战争的数据源,也许还有别的。太多的代码行来看。有时它像这样https://teacherlearnstocode.files.wordpress.com/2014/11/a6pswtfcuai7n-5.jpg – Loucher

+0

我很好奇你怎么知道他使用的是哪个mongo-java驱动程序。我正在使用org.grails.plugins:mongodb:5.0.1和grails 3.1.10,并且我只是在将部署战争部署到tomcat时发生同样的错误消息。在运行应用程序上效果很好 – Kirby