java - 将 GWT RequestFactory 与 Grails 一起使用时的类加载器问题

标签 java gwt grails classloader requestfactory

为了让 GWT RequestFactory 与 Grails 一起运行,我使用以下方法:

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 Servlet 以防止它使用错误的类加载器:

在第 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()));

否则,它不会找到我的 Domain 类(这些类显然不驻留在 GrailsRootLoader 中,而是驻留在 Thread 的类加载器中)。

现在我想将我的 GWT servlet 恢复为 Google 发布的官方二进制文件,我想知道如何修复 Grails 中不正确的 ClassLoader 或使 RequestFactoryServlet 正常工作而不更改 GWT 源。

最佳答案

我希望 GWT 2.3 能够解决您的问题:

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

关于java - 将 GWT RequestFactory 与 Grails 一起使用时的类加载器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5699754/

相关文章:

android - 将网络应用程序移植到Phonegap的路径问题

java - 设置 jar 文件

spring - Grails邮件插件:附加org.springframework.web.multipart.commons.CommonsMultipartFile

java - 提供 Web 浏览器和 Java 应用程序之间的接口(interface)

java - 设计命令行实用程序的包装器

java - 注释中定义的休息端点

java - 将 Google App Engine 项目迁移到更新版本(使用 Eclipse)

grails - Groovy 变量双重替换

java - 索引越界异常

java - <jsp :include> with @WebServlet and web. xml 中的页面属性