8

当它以托管模式运行时,我试图在我的后端 java 代码中调用 Web 服务。一切正常,GWT RPC 调用工作正常,我可以在服务器上看到它,然后一旦它尝试调用外部 Web 服务(使用 jax-ws),码头就会因内部服务器错误(500)而崩溃。

我已经将日志一直调到 ALL,但我仍然没有看到任何堆栈跟踪或导致此错误的原因。我只收到一条关于请求标头和响应的 500 错误。

有谁知道内部码头是否在某处保存了一个日志文件,或者我该如何调试出了什么问题?

我在 OS X 10.6.1 上运行 GWT 1.7

编辑:我知道我可以使用 -noserver 选项,但我真的很想知道这东西在哪里!

4

1 回答 1

3

文档中

您还可以在托管模式下调试时使用真实的生产服务器。如果您将 GWT 添加到现有应用程序,或者如果您的服务器端要求超出嵌入式 Web 服务器的处理能力,这将很有用。请参阅这篇文章,了解如何在托管模式下使用外部服务器。

因此,最简单的解决方案是使用该-noserver选项并使用您自己的 Java 服务器——这样的限制要少得多,没有任何缺点(据我所知)。如果您使用的是 Eclipse 的 Google 插件,它很容易在项目的属性中进行设置。详细的配置信息可以在官方网站上找到。

编辑:您可以尝试绕过托管模式 TreeLogger,如下所述:http ://blog.kornr.net/index.php/2009/01/27/gently-asking-the-gwt-hosted-mode-to-not ):

只需在类路径的根目录下创建一个名为“commons-logging.properties”的文件,然后添加以下行:

[使用 Log4j 后端] org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

[使用 JDK14 后端] org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger

[使用 SimpleLog 后端] org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog

Edit2:GWT 的主干现在也支持 -logfile 参数来启用文件日志记录,但在这种情况下它可能无济于事,因为问题在于托管模式处理异常的方式,而不是它呈现它们的方式。

于 2009-10-06T00:50:19.010 回答