生产中的Grails 2.0 Externalized Config无法访问应用程序 - HTTP 404

时间:2012-04-10 09:06:53

标签: grails

当我将Grails应用升级到Grails 2.0.3时,在生产Tomcat中无法访问该应用程序。

当我在开发中运行应用程序或甚至使用“grails prod run-war”时,应用程序正常运行。但是,当我将此应用程序移动到Tomcat(在Tomcat 6和7上测试)时,该应用程序不再可访问。它正确加载,但当我转到http://localhost:8080/appName时,我收到HTTP 404。

日志是空的,因此我无法找出问题所在。当我从Config.groovy删除外部配置加载时,该应用程序工作!真的很奇怪。 Config.groovy中:

grails.config.locations = ["file:/home/user/application_homes/app_home/app-config.properties"]

你遇到过同样的问题吗?或者是否有任何从Grails 1.3.7到Grails 2.0.3的更改可能会影响到这一点?

感谢您的任何建议!

2 个答案:

答案 0 :(得分:0)

我遇到了与你出现的完全相同的问题......

我在日志中什么也没得到......

它只是没有启动...失败了:

0/04/2012 2:17:36 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
20/04/2012 2:17:36 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/abcd] startup failed due to previous errors

当我们在使用类路径弹簧格式时似乎工作 grails.config.locations部分。

我们刚刚去了grails 2.0.3,它可能是一个bug吗?

答案 1 :(得分:0)

也遇到同样的问题。我们实际上有两种方法可以使用System / Env Variables或-Dconfig.file = definition来指定grails.configuration.locations。使用环境变量加载,这会导致一行

classpath:the-config-file.properties

如果指定了-Dconfig.file,它将使用基于文件的评估程序:

file:/full-path/the-config.file.properties

使用System / Env方法时,配置加载正常!一旦我们转向使用'文件'查找,Tomcat无法启动。

在创建internalConfigurationAnnotationProcessor bean后,它看起来失败了:

2012-04-22 22:35:53,514 (main) DEBUG [org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext] - <Bean factory for org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@17bcd4: org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory@752144: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,....<--- (left out the big list of others)
2012-04-22 22:35:53,538 (main) DEBUG [org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory] - <Creating shared instance of singleton bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor'>
2012-04-22 22:35:53,538 (main) DEBUG [org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory] - <Creating instance of bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor'>
2012-04-22 22:35:53,547 (main) DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] - <Returning cached instance of singleton bean 'grailsApplication'>
2012-04-22 22:35:53,547 (main) DEBUG [org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory] - <Eagerly caching bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor' to allow for resolving potential circular references>
2012-04-22 22:35:53,548 (main) DEBUG [org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory] - <Finished creating instance of bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor'>
2012-04-22 22:35:53,667 (main) INFO [org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory] - <Destroying singletons in org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory@752144
22/04/2012 10:35:53 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart

最奇怪的部分只是从classpath:<>定义更改为file:<>导致此问题。我已将调试语句放入grails Config.groovy文件中,并且可以正确读取文件内容。

相关问题