【问题标题】:Problem related to spring/resources.xml while deploying Grails applicatoin war in tomcat在 tomcat 中部署 Grails 应用程序战争时与 spring/resources.xml 相关的问题
【发布时间】:2011-09-22 10:44:17
【问题描述】:

我在 Grails 1.3.7 中开发了一个应用程序(名为 CBR)。当我使用“grails run-app”或“grails run-app prod”运行它时,它工作正常。但是,当我使用“grails war”命令创建战争然后在 Tomcat 6.0.32 中部署此战争时,我看到以下异常:

            Sep 22, 2011 1:55:57 PM org.apache.catalina.startup.HostConfig deployWAR
            INFO: Deploying web application archive CBR.war
            context.ContextLoader Context initialization failed
            org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 1 in
             XML document from ServletContext resource [/WEB-INF/spring/resources.xml] is in
            valid; nested exception is org.xml.sax.SAXParseException: Premature end of file.

                    at grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:723)
                    at grails.spring.BeanBuilder.beans(BeanBuilder.java:573)
                    at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:519)
            Caused by: org.xml.sax.SAXParseException: Premature end of file.
                    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
                    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
                    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
                    at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1414)
                    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1059)
                    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
                    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
                    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
                    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
                    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
                    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
                    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
                    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
                    ... 3 more
            Sep 22, 2011 1:57:48 PM org.apache.catalina.core.StandardContext start
            SEVERE: Error listenerStart
            Sep 22, 2011 1:57:48 PM org.apache.catalina.core.StandardContext start
            SEVERE: Context [/CBR] startup failed due to previous errors

尽管该项目已完全解包。我检查了 conf/spring/resources.xml ...它是空的。

Tomcat中类似war部署问题的线程我都准备好了,但是没能解决。

以下是我的 config.groovy 文件中的代码:

environments {
  production {
    grails.serverURL = "http://localhost:8080/${appName}"
  }
  development {
    grails.serverURL = "http://localhost:8080/${appName}/auth"
  }
  test {
    grails.serverURL = "http://localhost:8080/${appName}"
  }
}

并且,来自 Datasource.groovy 文件:

environments {
  development {
    dataSource {
      dbCreate = "create-drop" // one of 'create', 'create-drop','update'
      url = "jdbc:mysql://localhost:3306/cbr?autoreconnect=true"
    }
  }
  test {
    dataSource {
      dbCreate = "update"
      url = "jdbc:mysql://localhost:3306/cbr?autoreconnect=true"
    }
  }
  production {
    dataSource {
      dbCreate = "update"
      url = "jdbc:mysql://localhost:3306/cbr_prod?autoreconnect=true"
    }
  }
}

还有一些来自 application.properties 文件的更多细节:

app.grails.version=1.3.7
app.name=CBR
app.servlet.version=2.4
app.version=0.1
plugins.autotranslate=0.3
plugins.hibernate=1.3.7
plugins.message-reports=0.1
plugins.navigation=1.2
plugins.richui=0.8
plugins.shiro=1.1.3
plugins.tomcat=1.3.7
plugins.xfire=0.8.3

我花了两天时间来解决这个问题。请帮帮我,我花了 1 个月的时间来开发这个应用程序。

【问题讨论】:

  • 尝试grails prod run-war 以查看它是一般的WAR 问题还是特定于您的Tomcat 配置的问题总是有用的。也就是说,您的“grails-app/conf/spring”目录中有一个空的“resources.xml”文件吗?如果是这样,只需将其删除。
  • 战争里面/WEB-INF/spring/resources.xml的内容是什么?
  • 这对我来说看起来像是依赖崩溃。检查您正在使用的插件的依赖关系并搜索一些过时的东西。我想你应该尝试从 application.properties execpt 中删除所有插件,用于 hibernate 和 tomcat,并尝试让你的应用程序在 tomcat 上运行。我相信你会以这种方式找到它。祝你好运
  • 感谢@Peter 的建议我也尝试运行grails pro run-war,但它总是以错误结束,尽管grails war 总是有效。
  • @jeha 它是空的。 @crudolf 我已经尝试通过删除所有插件来使其工作,但它没有。我会按照@Peter 的建议尝试删除resources.xml

标签: spring grails resources tomcat6 war


【解决方案1】:

这可能不是一个很好的答案,但在你打结之前你绝对应该尝试一下......

当我遇到显然应该工作的问题时,我首先不信任的是我的构建状态和机器配置的状态。

由于您尚未完成完整的构建-部署周期,您可以确保它完全适用于您的配置。

构建一个简单的 Hello World grails 应用程序,生成 war 文件并进行部署。如果可行,我将开始添加插件和配置更改,以查看其中是否有任何破坏。不会超过 20 分钟。

祝你好运

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2015-12-16
    • 2015-10-28
    • 2015-10-03
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多