Проблема, связанная с spring / resources.xml при развертывании войны с Grails в tomcat - PullRequest
0 голосов
/ 22 сентября 2011

Я разработал приложение (названное CBR) в Grails 1.3.7.Когда я запускаю его с помощью «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, но не смог разобраться.

Ниже приведен код из моего файла 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

Последние 2 дня я потратил на решение проблемы.Пожалуйста, помогите мне, это заняло у меня 1 месяц на разработку этого приложения.

1 Ответ

0 голосов
/ 08 декабря 2011

Возможно, это не очень хороший ответ, но вы должны обязательно попробовать, прежде чем связать себя узами брака ...

Первое, чему я не доверяю, когда сталкиваюсь с проблемами, где что-то должно работать, - это состояние моей сборки и состояние конфигурации моей машины.

Поскольку вы еще не прошли полный цикл сборки-развертывания, вы можете убедиться, что он будет работать вообще с вашей конфигурацией.

Создайте простое приложение Hello World grails, сгенерируйте файл войны и разверните его. Если это сработает, я начну добавлять плагины и изменения конфигурации, чтобы посмотреть, не нарушит ли что-нибудь из них. Не должен занимать у вас более 20 минут.

Удачи

...