4

アプリケーションを Grails 2.1 から 2.3 に移行しています。移行後に多くのエラーが発生します。Grails 2.3 と Spring を統合したサンプル アプリケーションが必要です。

私はいくつかの HelloWorld サンプル アプリケーションを実行しましたが、それらは正常に動作しています。しかし、アプリケーションに同じことを適用しても、エラーが発生しているものもあります。私のアプリケーションは非常に大きく (100 MB)、Spring、Hibernate、および多くの Grails プラグインとの多くの統合を使用しているためです。

そのような「Grails 2.1 から Grails 2.3 への移行」に関するコード レベルのドキュメントは見つかりませんでした。Grails またはオンラインからサンプル アプリケーションを見つけることができません。

Grails の公式ドキュメント。Grails META 情報の提供に関するすべて。

私の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)
4

2 に答える 2

5

Config.groovy および BuildConfig.groovy ファイルを空の新しい Grails 2.3 アプリケーションのデフォルトと比較します。

最も注目すべき変更点は、プラグインの依存関係が application.properties に記述されなくなったことです。また、正しいバージョンの Grails Tomcat、Hibernate、および Scaffolding プラグインを使用していることを確認する必要があります。Tomcat および Hibernate プラグインのバージョンは、Grails のリリース バージョンと同じではなくなりました。Grails 2.3 では、スキャフォールディング機能が別のプラグインに抽出されました。また、プラグインに正しいスコープを使用していることを確認してください (Tomcat のビルド、休止状態のランタイム)。

新しい Maven ベース (maven の一部である aether ライブラリを使用) 依存関係解決の使用を開始することもお勧めします。これはgrails.project.dependency.resolver = "maven"BuildConfig.groovy の設定で行われます。Grails 2.3 の古い ivy ベースのリゾルバーで、奇妙なクラスローディングの問題に遭遇しました。

これが役立つことを願っています。

于 2013-05-29T14:43:23.243 に答える
3

Grails 2.3への移行は非常に簡単です-(私の場合、Grails 2.1.4でivy、pomを使用しています)

  1. サンプル プロジェクトを作成して実行し、動作することを確認します。参考にしてください。
  2. プロジェクトで、すべての jar とプラグインを pom から BuildConfig に移動します。いつものように、既に知っている新しい形式はありません。(注: jar やプラグインを 1 つでも見逃さないでください。気付くまでに数日かかります。同じ間違いをした場合、1 日半かかります。)
  3. そして、jar とプラグインの構成を SampleProject -> BuildConfig からプロジェクトの BuildConfig にコピーします。アプリにも同じ jar がある場合は、古いバージョンを確認して削除し、最新のものを保持します。
  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
于 2013-06-05T06:42:39.023 に答える