2014-10-17 20 views
0

我在Gradle中构建的Eclipse中创建了一个Grails应用程序。我自己还没有创建任何控制器,因此我希望在使用run-app时(例如,没有列出控制器的欢迎使用Grails页面)看到空白页面。不过,我得到:Grails控制器被自动安装并在战争部署时导致500服务器错误

enter image description here

什么是这两个控制器和为什么它们被自动添加?

请问,当我部署通过WAR文件的应用到在AWS上Elasticbeanstalk运行Dockerized Tomcat服务器,我得到的是由以下造成500服务器错误:

Caused by: org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error processing GroovyPageView: No signature of method: gsp_myApp_layoutsmain_gsp.assetPath() is applicable for argument types: (java.util.LinkedHashMap) values: [[src:favicon.ico]] 

当我运行-app和run-war,我没有遇到任何问题(只列出了奇怪的控制器)。我认为这可能意味着可能有一个插件没有安装在Tomcat服务器上,它是必需的,并且已经在我的本地机器上自动安装了?顺便说一句,在本地运行Dockerized Tomcat服务器时,我得到相同的500错误,所以问题不在AWS中。

回答

0

,因为你找到了真正的错误,但一些背景资料,无论有点无实际意义:

如果你只是在你的项目根目录搜索,你会发现这些控制器 - 在您的应用程序,他们俩都是贡献的插件,所以他们隐藏在您的target目录中。

插件在BuildConfig.groovy中指定,当您运行create-app(或者做一些事情使您的IDE为您运行该脚本)生成的初始文件包含一组您可能想要的初始插件;用于持久化的Hibernate,用于嵌入式Web服务器的Tomcat等等。一旦你的需求有所稳定,并且你正在对数据库进行更多控制的改变,你就需要像Liquibase这样的东西为你管理,因此包含database-migration插件,并且它是DbdocController的来源。您还应该管理静态UI资源以最大限度地提高真实和明显的前端性能,因此添加了asset-pipeline插件(并将其中一些插件插件注释为建议)。这是其他控制器的来源。

0

答案在这里详细介绍:Grails Asset Pipeline causing server error

的问题是非常小心地使用摇篮时建立的Grails应用程序,以确保由运行战争和“gradle这个战争”制作的战争文件是相同的(他们没有)。