部署到Tomcat服务器时,GWT应用程序无法正常工作

时间:2012-08-23 16:20:09

标签: gwt

我有一个小型网络应用程序,在Eclipse中部署到App Engine时可以正常工作。 但是,当我想将我的应用程序部署到我的Tomcat服务器时,我收到错误。

我将war文件夹的内容直接复制到Tomcat的默认ROOT文件夹中。 然后我在Eclipse内部的外部服务器上运行我的应用程序。

到目前为止一切正常 - 应用程序直接从浏览器的缓存中加载。

问题出现了:

当我点击我的应用程序的一些功能时,谷歌浏览器开发控制台说 “未捕获的ReferenceError:功能未定义” ,这些功能是通过GWT端的JSNI实现的。 我知道错误来自外部JS代码中的JS调用者。调用者调用GWT客户端方法/函数(这就是为什么它没有在ext。JS代码中定义)。

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:3)

您是否有任何需要外部js文件的额外模块?有些模块需要将js文件包含在war中并包含在根.html文件中。可能是您使用的库没有基本js函数。

您可以将其添加到.gwt.xml文件中以打开堆栈跟踪。

<set-property name="compiler.stackMode" value="emulated"/>
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers" value="true"/> 
<set-configuration-property name="compiler.emulatedStack.recordFileNames" value="true"/> 

您还可以尝试使用setUncaughtException处理程序查看在生产模式下抛出的异常。启用模拟堆栈跟踪后,您应该能够获得具有代码行号的回溯。它不如开发模式好,但对调试非常有用。

GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler()) {
    @Override
    public void onUncaughtException(Throwable cause) {
        logger.log(Level.SEVERE, "OOPS", cause);
    }
}

注意确保您的记录器配置为使用您可以访问的内容。像firebug或远程日志servlet一样。

我目前在生产和开发模式下使用eclipse使用tomcat 7。您可以在eclipse中配置服务器的tomcat实例,并使用“在外部服务器上作为WebApplication运行”。这将允许您在开发模式中查看异常。

如果您处于生产模式,还要确保没有?gwt.codesvr = 127.0.0.1:9997。除非您正在运行开发代码服务器,否则这也会导致问题。