如何反序列化从服务器收到的客户端上的异常

时间:2012-07-30 15:56:26

标签: java json cxf jax-rs deserialization

我有一个客户端(JVM1)以RESTful方式与服务器(JVM2)通信。我正在使用JSON作为有效负载机制。

当服务器抛出异常时,我能够将其序列化为JSON格式并通过网络发送。在客户端,我收到响应并以JSON格式查看内容。

问题是我无法识别被抛出的特定类型的异常。

给定JSON格式的某些异常的序列化版本(可能是NullPointerException,IllegalStateException,甚至是checked-exception)如何在客户端构造同类型的对象。

我可以添加任何包装类,并在需要时在客户端和服务器之间共享。

提前致谢。

1 个答案:

答案 0 :(得分:3)

一般来说,在客户端反序列化任意异常是个坏主意。例如,服务器可能抛出SQLException的子类,该子类碰巧特定于正在使用的jdkc驱动程序impl。客户端很可能在其类路径中有jdbc驱动程序,因此任何反序列化异常的尝试都将导致某种疯狂的类加载异常。最好的办法是将异常转换为像“ServerException”这样的公共类,并将相关详细信息作为此类的字符串成员(例如原始异常名称,消息,堆栈跟踪等)。