Как перенести приложение Grails 2.1 на Grails 2.3?

Я переношу свое приложение с Grails 2.1 на 2.3. Я получаю много ошибок после миграции - мне нужны примеры приложений с интеграцией Grails 2.3 и Spring.

Я сделал несколько примеров приложений HelloWorld, и они работают нормально. Но даже я применяю то же самое в своем приложении, даже там, где оно дает ошибку. Поскольку мое приложение очень большое (100 МБ), и я использую много интеграции с Spring, Hibernate и множеством плагинов Grails.

Я не нашел такого документа уровня кода для «Миграция с Grails 2.1 на Grails 2.3». Я не могу найти образцы приложений в Grails или в Интернете.

Официальная документация по Grails, все о предоставлении МЕТА-информации о Grails.

В моей строке main.gsp 229:

<g:include controller="filter" action="tree"/>

Caused by: org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error processing GroovyPageView: Error executing tag <g:include>: Unable to execute include: Request processing failed; nested exception is org.codehaus.groovy.grails.exceptions.GrailsRuntimeException: java.lang.IllegalStateException: Cannot reset buffer after response has been committed
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.createGroovyPageException(GroovyPageView.java:205)
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.handleException(GroovyPageView.java:182)
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderWithTemplateEngine(GroovyPageView.java:153)
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderMergedOutputModel(GroovyPageView.java:84)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
    at org.codehaus.groovy.grails.web.sitemesh.SpringMVCViewDecorator.render(SpringMVCViewDecorator.java:67)
    ... 51 more
Caused by: org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error executing tag <g:include>: Unable to execute include: Request processing failed; nested exception is org.codehaus.groovy.grails.exceptions.GrailsRuntimeException: java.lang.IllegalStateException: Cannot reset buffer after response has been committed
    at org.codehaus.groovy.grails.web.pages.GroovyPage.throwRootCause(GroovyPage.java:531)
    at org.codehaus.groovy.grails.web.pages.GroovyPage.invokeTag(GroovyPage.java:475)
    at sun.reflect.GeneratedMethodAccessor379.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1243)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1085)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:989)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
    at mycompany_dev_testuserdev_ws3_myapp_grails_app_views_layouts_main_gsp$_run_closure2.doCall(main.gsp:229)

person Sun    schedule 29.05.2013    source источник
comment
Предоставьте сведения об ошибках   -  person Mr. Cat    schedule 29.05.2013


Ответы (2)


Сравните файлы Config.groovy и BuildConfig.groovy со значениями по умолчанию для нового пустого приложения Grails 2.3.

Наиболее заметным изменением является то, что зависимости плагинов больше не должны описываться в application.properties. Также следует убедиться, что вы используете правильную версию подключаемых модулей Grails Tomcat, Hibernate и Scaffolding. Версии подключаемых модулей Tomcat и Hibernate больше не совпадают с версией выпуска Grails. Функции создания шаблонов были выделены в отдельный подключаемый модуль в Grails 2.3. Также убедитесь, что вы используете правильную область видимости для плагинов (сборка для tomcat, среда выполнения для спящего режима).

Также рекомендуется начать использовать новое разрешение зависимостей на основе maven (использует библиотеку эфира, которая является частью maven). Это делается с помощью параметра grails.project.dependency.resolver = "maven" в BuildConfig.groovy. Я столкнулся со странными проблемами загрузки классов со старым распознавателем на основе плюща в Grails 2.3.

Надеюсь, это поможет.

person Lari Hotari    schedule 29.05.2013
comment
Я удалил оператор include из main.gsp. После того, как я получаю другую ошибку, подобную этой: - person Sun; 30.05.2013
comment
Я нашел в Получение ошибка «Запрос с привязкой к потоку не найден» из весны в моем веб-приложении что-то похожее на проблему. Но это не в контексте Grails. Я пробовал таким образом, но выдавал какую-то другую ошибку, например: ClassCastException: org.springframework.web.context.request.ServletRequestAttributes cannot be cast to org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequest - person Sun; 30.05.2013
comment
Какой-то плагин может использовать старую версию Spring. У меня была эта проблема с плагином rabbitmq. Пожалуйста, проверьте отчет о зависимостях и WEB-INF/lib файла войны. - person Lari Hotari; 30.05.2013

Мигрировать Grails 2.3 очень просто - (мой случай, я использую ivy, pom в Grails 2.1.4)

  1. Сделайте пример проекта и запустите - убедитесь, что он работает. Сохраните его как ссылку.
  2. В вашем проекте переместите все jars и плагины из pom в BuildConfig, там нет новых форматов, как обычно, которые вы уже знаете. (Примечание: не пропустите ни одного файла jar или плагина. Потребуются дни, чтобы понять, что я сделал ту же ошибку, что стоит полтора дня.)
  3. И скопируйте конфигурации банок и плагинов из SampleProject -> BuildConfig в свой проект BuildConfig. Если у вас есть такие же банки в вашем приложении, проверьте и удалите старые версии и сохраните последнюю.
  4. После копирования этого в BuildConfig
forkConfig = [maxMemory: 1024, minMemory: 64, debug: false, maxPerm: 256]
 grails.project.fork = [
  test: forkConfig, // configure settings for the test-app JVM
  run: forkConfig, // configure settings for the run-app JVM
  war: forkConfig, // configure settings for the run-war JVM
  console: forkConfig // configure settings for the Swing console JVM
 ]

 grails.project.dependency.resolver = "maven" // or ivy
 grails.project.dependency.resolution = {
  1. беги Grails upgrade
  2. беги Grails run-app
person Sun    schedule 05.06.2013