0

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

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

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

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

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

感谢您的任何建议!

4

2 回答 2

0

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

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:<>为导致此问题。我已将调试语句放入 grailsConfig.groovy文件中,并且文件的内容可以正常读取。

于 2012-04-22T12:46:33.250 回答
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 部分中使用类路径 spring 格式时,似乎可以工作。

我们也刚刚去了 grails 2.0.3,这可能是一个错误吗?

于 2012-04-20T04:33:35.077 回答