使用JavaEE设计错误列表的客户机-服务器传输



在服务器端调用方法时,如果某些参数有问题,我可以得到错误或警告列表,或者如果一切正常,可以得到正确的答案。

例如,我发送一个在客户端定义的对象到服务器,在那里我有逻辑来验证该对象是否正常,所以我可以返回一个与对象定义相关的错误和警告列表给客户端,以便他可以正确地纠正它们,或者,如果验证通过,说明一切正常。

可能的解决方案:我可以返回一个错误列表,这样,当一切正常时,列表是空的,当我有一些错误或警告时,我可以处理它们并显示给用户。

这个方法正确吗?有没有什么设计模式可以更好地做到这一点?我的背景是客户机-服务器体系结构,我将使用从客户端调用的ejb,使用业务代表模式来设计通信。

如果客户端能够向ejb发送对象,那么它可能是用Java编写的客户端。因此,它实际上是调用EJB方法的富表示层。如果是这样,那么验证应该在这个表示层完成,IMO。

对于服务器来说,为了自身的安全,可能需要添加一个额外的验证层,但在这种情况下,由于方法的契约是良好定义的,并且表示层应该验证对象并尊重契约,因此我只会在发现第一个错误时抛出运行时异常。

如果您真的想在服务器端执行验证,我将使用已检查的ValidationException来发出错误列表的信号。此异常可以包含消息列表,或具有相关参数值的消息键列表。这将取决于国际化的必要性(i18n),以及谁负责i18n消息。

警告也可以放在这个异常中(然后该消息将与一个标志或枚举相关联)。如果客户端使用ignoreWarnings = false调用该方法,则警告将存储在异常中,并抛出异常。如果它用ignoreWarnings = true调用方法,那么警告将被忽略,只有错误导致异常被抛出。

最新更新