2011-11-01 32 views
0

在服务器端调用方法时,如果某些参数出现问题,我可以得到错误或警告列表,如果一切正常,则可以得到正确答案。使用JavaEE设计客户端 - 服务器错误列表

例如,我发送在客户侧到服务器,在那里我要验证如果该对象是确定所述逻辑定义的对象,所以可返回与该对象定义的错误和警告的列表客户可以正确纠正它们,或者,如果验证通过,则说明一切正常。

可能的解决办法:我可以返回的错误列表,这样,当一切都OK的列表是空的,而当我有一些错误或警告我可以处理它们,并将它们显示给用户。

这种方法是否正确?有没有什么设计模式可以以更好的方式做到这一点?我的背景是客户端 - 服务器体系结构,我将使用从客户端调用的EJB使用Business Delegate pattern来设计通信。

回答

1

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

服务器可能希望为其自身的安全性添加一个额外的验证层,但在这种情况下,由于该方法的约定是明确定义的,并且表示层应该验证对象和方面合同,我只会在发现第一个错误时抛出运行时异常。

如果你真的想在服务器端执行验证,我会使用选中的ValidationException来表示错误列表。该例外可以包含消息列表或具有相关参数值的消息键列表。这将取决于国际化的必要性(国际化),以及谁负责收集信息。

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

+0

你是对的,客户端是用Java编写的。验证几乎不涉及例如修改已定义的对象以避免名称重复。所以我没有在服务器端看到明确的分工,尽管ValidationException是一个好主意。我也喜欢这个警告的提示,谢谢 – maureyes

+0

如果某些验证规则只能由服务器完成,而不能由表示层完成,那么对此规则使用ValidationException,或者使用特殊的异常(因为大部分时间,您可能只有一条规则需要在服务器端进行检查,否则违规情况将不足以使首先遇到问题的方法可以接受)。 –

+0

是的,看起来合适。如果每次验证都在服务器端完成,您是否会保持通知警告和错误的方式?包含每个错误当然是例外。 – maureyes