【发布时间】: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