我一直在用GWT 2.4开发一个项目,并寻找一种方法来验证(JSR 303)我的客户端(代理)类,而无需重新创建来自我的域类(服务器端)的注释.我知道有一个使用GWT中继代码(验证)的例子,但它不使用RequestFactory,它使用RPC.
是否可以从客户端的域类中获取验证?它是最好的策略与客户端代码共享我的域模型?
据我所知,GWT团队正在研究2.3和2.4的这个功能.它已经完成,还是我应该等待GWT 2.5?
这已经发布在GWT论坛上,但仍然没有答案.
https://groups.google.com/forum/#!msg/google-web-toolkit/au_GCy_9WZQ/6296p5TcWdoJ
谢谢.
编辑:这是如何在客户端验证(未测试)...
@UiHandler("save")
void onSave(ClickEvent event) {
Modulo modulo = new Modulo(); //domain class
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Modulo>> violations = validator.validate(modulo, Default.class);
delegate.saveClicked();
}
Run Code Online (Sandbox Code Playgroud) 有没有办法确保GAE上的任务队列的FIFO(先进先出)行为?
GAE文档说FIFO是影响任务执行顺序的因素之一,但是相同的文档说"系统的调度可以'将新任务"跳到队列的头部"并且我已经通过测试确认了这种行为.效果:我的事件正在按顺序处理.
文件说:
https://developers.google.com/appengine/docs/java/taskqueue/overview-push
执行任务的顺序取决于几个因素:
任务在队列中的位置.App Engine尝试基于FIFO>(先进先出)顺序处理任务.通常,任务被插入到队列的末尾,并从队列的头部执行.
队列中的任务积压.系统尝试通过对调度程序的特别优化的通知,为任何给定任务提供尽可能低的延迟.因此,在队列具有大量积压任务的情况下,系统的调度可以将新任务"跳转"到队列的头部.
任务的etaMillis属性的值.此属性指定任务可以执行的最早时间.App Engine始终等待指定的ETA处理推送任务.
任务的countdownMillis属性的值.此属性指定在执行任务之前等待的最小秒数.倒计时和eta是互斥的; 如果指定一个,请不要指定另一个.
我需要做什么?在我的用例中,我将每天处理1-2万个来自车辆的事件.这些事件可以任何间隔(1秒,1分钟或1小时)发送.必须确保事件处理的顺序.我需要按时间戳顺序处理,这是在车辆内部的嵌入式设备上生成的.
我现在有什么?
由使用者调用并创建任务的Rest servlet(事件数据在有效负载上).
在此之后,工作者servlet获得此任务并且:
反序列化事件数据;
将事件放在数据存储区中;
更新数据存储上的车辆.
那么,有没有什么方法可以确保FIFO行为?或者我怎样才能改进这个解决方案呢?