【问题标题】:Grails 2.0 Externalized Config in Production, cannot access application - HTTP 404生产中的 Grails 2.0 外部化配置,无法访问应用程序 - HTTP 404
【发布时间】:2012-04-22 13:47:37
【问题描述】:

当我将 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 是否有任何变化可能会影响到这一点?

感谢您的建议!

【问题讨论】:

  • 我假设 /home/user/application_homes/app_home/app-config.properties 存在于 tomcat 服务器上并且可以被运行 tomcat 进程的 uid 读取?
  • 是的,它存在,甚至具有相关的访问权限。此外,我在 Config.groovy 中控制它:

标签: grails


【解决方案1】:

我遇到了和你一样的问题……

我在日志中什么也没有……

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

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,这可能是一个错误吗?

【讨论】:

    【解决方案2】:

    也遇到了同样的问题。我们实际上有两种方法来指定 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:&lt;&gt; 定义更改为file:&lt;&gt; 导致了这个问题。我已将调试语句放入 grails Config.groovy 文件中,并且文件内容已正常读取。

    【讨论】:

      猜你喜欢
      • 2019-06-02
      • 2012-11-18
      • 2014-08-08
      • 2011-10-31
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      相关资源
      最近更新 更多