1

GrailsでGWTRequestFactoryを実行するために、私は次のアプローチを使用しています。

class GwtController extends RequestFactoryServlet {

    public GwtController() {
        super()
    }

    def index = {
        doPost request, response
    }

    @Override
    public ServletContext getServletContext() {
        return ServletContextHolder.servletContext
    }

    @Override
    public ServletConfig getServletConfig() {
        return new DummyServletConfig(getServletContext(),"grails");
    }
}

ここで、DummyServletConfigはの単純な実装ですServletConfig

これは、アプリをTomcatにデプロイするときに機能します。ただし、テストモードまたは開発モードを使用する場合はそうではありません。間違ったクラスローダーを使用しないように、GWTサーブレットを調整する必要がありました。

46行目で変更しました

private static final RequestFactoryInterfaceValidator validator =
  new RequestFactoryInterfaceValidator(log,
      new RequestFactoryInterfaceValidator.ClassLoaderLoader(
          ServiceLayer.class.getClassLoader()));

private static final RequestFactoryInterfaceValidator validator = new RequestFactoryInterfaceValidator(
  log, new RequestFactoryInterfaceValidator.ClassLoaderLoader(
      Thread.currentThread()
                        .getContextClassLoader()));

そうしないと、ドメインクラス(明らかにGrailsRootLoaderには存在しませんが、スレッドのクラスローダーに存在します)が見つかりません。

ここで、GWTサーブレットをGoogleがリリースした公式バイナリに戻したいのですが、Grailsの誤ったClassLoaderを修正したり、GWTソースを変更せずにRequestFactoryServletを正しく機能させるにはどうすればよいでしょうか。

4

1 に答える 1

2

GWT2.3で問題が解決することを願っています。

http://code.google.com/p/google-web-toolkit/issues/detail?id=6092

于 2011-04-18T10:18:11.573 に答える