【300分】问一个异步方面的问题

believefym 2010-04-09 09:48:20
需求是这样的:
1.用户submit之后,提交一个任务交给webservice异步处理【可以简单理解为往数据库里新插入了一个任务】
2.提交完成后,用户可以在页面上选择查看任务列表

现在的情况是,
但是当用户选择查看任务列表时,没有重新查询数据库获取最新的任务,导致最新提交的任务没有出现在任务列表上,用户只有点击刷新按钮,才能拿到。
简单的说,用户不手动刷新,就只能看到旧的任务列表而不能反应出最新submit的那个任务。

(1) submitJob(); //提交后,异步处理
(2) viewJobs(); //不能看到最新的那个任务
(3) refreshJobs();//能看到最新的那个任务

-----------------
现在是希望用户提交后,选择查看任务列表时,能看到最新的job

考虑过
1,在submitJob()里面call refreshJobs(),
但是由于是异步,submitJob之后直接refreshJobs也未必能直接拿到,比如submitJob过程中数据库插入数据较慢,refreshJobs的时候还没有插入。

2,submitJob之后往session里插入一个flag=true,viewJobs的时候如果是flag=true则自动做一次refreshJobs操作

3,由于是用JSF实现的,甚至考虑了一下有没有PhaseListener可以辅助实现的可能(不熟)


-----------------
需求应该挺常见的,各位有没有好的实现思路?
...全文
303 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
teemai 2010-04-17
  • 打赏
  • 举报
回复
首先当用户提交一条数据后,不知道是否已经插入到数据库中了,而此时用户点击查看所有任务你就要让他看到刚刚提交的数据,只能一提交就将刚刚提交的数据显示在页面上(前提是保证这条数据一定能插入到数据库中)。因为你不知道异步方式给后台他到底什么时候能插入数据库,而你的需求要用户点了就能看到!
xiaogang416533702 2010-04-17
  • 打赏
  • 举报
回复
学习。。。。。。。。。。。。。。。。。。。
kdflove 2010-04-17
  • 打赏
  • 举报
回复
推荐楼主看看Ajax
xuyuanyuan717818 2010-04-17
  • 打赏
  • 举报
回复
yyyyyyy
jmi443 2010-04-12
  • 打赏
  • 举报
回复
帮顶~~~~
luozhangwen 2010-04-12
  • 打赏
  • 举报
回复
高手, 路过.

icele 2010-04-12
  • 打赏
  • 举报
回复
参考jforum缓存机制
首次查询时把数据缓存起来
第二次查询判断是否有更新(可以做个标记)
有更新读取数据库更新缓存
没有更新直接读取缓存内容
hiteny 2010-04-12
  • 打赏
  • 举报
回复
跟随着LZ的荣耀,前进,前进,前进进!
关注中@@
woaizzy5186 2010-04-12
  • 打赏
  • 举报
回复
对问题好晕,帮顶
fangchenxuan 2010-04-12
  • 打赏
  • 举报
回复
异步的情况下、Ajax是可以考虑的
wangxiaoyun987 2010-04-12
  • 打赏
  • 举报
回复
用异步交互,选择ajax自己写,或者jquery框架都是不错的选择 用js刷出来比较好
leihuanhuan123 2010-04-12
  • 打赏
  • 举报
回复
关注,帮忙顶
取你猪头 2010-04-12
  • 打赏
  • 举报
回复
关注,帮顶!
fobcclkm 2010-04-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kbyst 的回复:]
关注 接分 帮顶
[/Quote]
关注 接分 帮顶
longmei998 2010-04-11
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 fobcclkm 的回复:]
引用 1 楼 kbyst 的回复:
关注 接分 帮顶

关注 接分 帮顶
[/Quote]
关注 接分 帮顶
Silence_Smile 2010-04-11
  • 打赏
  • 举报
回复
你这个任务一般需要多少时间啊?就数据库插个记录那么快?
Silence_Smile 2010-04-11
  • 打赏
  • 举报
回复
(1) submitJob() 之前 session里置个标志flag=false;
(2)插入完成后将flag改成true
(3)输出列表时判断flag,false等待,true 输出
其实就是实现了同步。。。
tuo_bing 2010-04-11
  • 打赏
  • 举报
回复
关注 。。。。。。。。。。。。。
longlonglong25 2010-04-09
  • 打赏
  • 举报
回复
LZ 是不是说主要问题就是不能知道数据库什么时候更新完成呢?又不想用刷新的手段进行数据更新?
确实没有什么好办法。。。。
laorer 2010-04-09
  • 打赏
  • 举报
回复
可不可以直接在用户 submit时,就直接把任务添到页面上,不管数据库那边有没有插入进去,这样之后的一个问题是,不知道数据库生成的字段(比如自动生的 主键) 不过应该可以在后台再查一遍得到新任务的相关信息
加载更多回复(18)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧