将GWT RequestFactory与Grails一起使用时出现java类加载器问题
为了让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()));
否则,它将找不到我的域类(它们显然不在GrailsRootLoader中,而是在线程的类装入器中)
现在,我想将我的GWT servlet恢复为Google发布的官方二进制文件,我想知道如何在不改变GWT源代码的情况下修复Grails中不正确的类加载器或使RequestFactoryServlet正常工作
# 1 楼答案
我希望GWT 2.3能够解决您的问题:
http://code.google.com/p/google-web-toolkit/issues/detail?id=6092