gwt、rpc 服务、StatusCodeException 和无可用日志

Posted

技术标签:

【中文标题】gwt、rpc 服务、StatusCodeException 和无可用日志【英文标题】:gwt, rpc service, StatusCodeException, and no logs available 【发布时间】:2013-01-09 15:11:13 【问题描述】:

对不起,如果我的英语不好。

我在调用我的一项 GWT 服务时遇到问题。 在客户端,我有以下错误。

    [ERROR] com.google.gwt.user.client.rpc.StatusCodeException: 500 The call failed on the server; see server log for details
    [ERROR]     at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:209)
    [ERROR]     at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287)
    [ERROR]     at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:395)
...

很遗憾,我在服务器日志中找不到与此错误相关的任何信息。 我处于开发模式,在码头我唯一能看到的是

 [ERROR] 500 - POST /my/maping (127.0.0.1) 57 bytes

但是,我知道我的服务实现被调用并且它返回一个结果而不抛出任何异常(因为我在返回之前使用日志......)。

我已经看到这个问题可能是一个序列化问题,但我真的没有看到我错过了使我的对象可序列化的地方,(另外,当某些东西不可序列化时,gwt 编译器通常会告诉我)。

而且 my/mapping 应该被精细定义,因为它以前可以工作,而且我很确定我没有修改任何与此相关的内容......

最后,我没有找到任何有趣的答案来解决我的问题。 如果您有任何想法,请提前感谢您的帮助。

ps:我使用的是 gwt 2.5.0-rc2。

【问题讨论】:

请添加与异步调用和异常日志相关的代码sn-ps。 500 错误意味着 Servlet 经常抛出异常。请使用 try catch finally 来捕获您的异常并使用 log 或 system.out.prinln。 值得注意的是,这可能是由于类没有公共的非参数构造函数而发生的。 【参考方案1】:

这个问题主要与忘记实现isSerializable或Serializable接口的类有关。还要检查该类中的所有子类是否也实现 isSerializable 或 Serializable 接口。

然后验证所有类都有一个默认的无参数构造函数。

【讨论】:

不是 IsSerializable,而是 java.io.Serializable,是的。我会检查详细信息,但应该没问题... 抱歉,这很愚蠢,我的一个子类实际上没有实现 Serializable。 我也有同样的问题....我的问题是我的一些 DataTransferObject 类没有扩展可序列化 如果以后有人来看这个问题。此错误通常记录在包含日志的 servlet 中(因此对于 tomcat,它可能在 $CATALINE_HOME/logs/catalina.* 中)【参考方案2】:

如果您使用 JPA 并且类关系设置不正确,则会抛出一般 500 而没有特定错误消息

【讨论】:

以上是关于gwt、rpc 服务、StatusCodeException 和无可用日志的主要内容,如果未能解决你的问题,请参考以下文章

GWT:在另一个模块中调用 RPC 服务

GWT Servlet 错误 com.google.gwt.user.client.rpc .StatusCodeException: Tomcat 服务器上的 404

调用 RPC 时出错 - GWT,404 服务器响应状态为 404(未找到)

GWT RPC 未生成正确的 gwt.rpc 文件

gwt 初学者-当我在服务器上进行 RPC 调用时出错-相同的代码在 gwt 开发模式下工作

调用 GWT RPC 服务