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 Servlet 错误 com.google.gwt.user.client.rpc .StatusCodeException: Tomcat 服务器上的 404
调用 RPC 时出错 - GWT,404 服务器响应状态为 404(未找到)