JiveJdon Community Forums
在线131人 J道首页 | 论坛首页 | 培训咨询 | 开源框架 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » J2EE/JavaEE/JEE/EJB/JSF等技术讨论
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 20 回复 / 2 页 [ 1 2 下一页 ]  发表新帖子  回复该主题贴
xucc80

发表文章: 21
注册时间: 2005年02月28日 15:33
请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月19日 19:58 回复
目前遇到几个问题,请教一下有经验的人:1,在java的J2EE应用开发中,怎么使用定时器,比如每隔5分钟,去扫描某个表,执行一个特定的操作。2,缓存,当某个操作失败的时候,怎么使用缓存,记得好像java里面可以把一个对象序列化为一个本地文件之类的,是不是有这种搞法,缓存之后,每隔一定的时间去进行某种操作,比如利用缓存的数据,调用一个web service之类...3,存储过程里面能直接返回一个类似于java里面的对象数组,类似结果集的东西吗
多谢多谢!这几个问题搞定,我就爽的很来噢,多谢
wwlhp@jdon

发表文章: 67
注册时间: 2003年04月25日 12:07
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月19日 20:48 回复
1> session bean好像有定时功能。也可以用java.util.Timer,虽然J2EE规范不赞成你自己创建线程

2> 看不懂

3> 看下CallrableStatement就知道了
SportsBaby1980

发表文章: 244
注册时间: 2004年06月09日 16:52
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月19日 21:06 回复
关于你的第二点,我发表点看法
实现这个的方案比较多,例如保存为文件,序列化,保存到数据库等。
总之,能把对象的状态保存,然后能再取得即可。
banq

发表文章: 8929
注册时间: 2002年08月03日 17:08
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月20日 08:17 回复
我的解决方案比较特殊 供参考:
1. 在J2EE中不推荐定时扫描数据库,而是使用观察者模式、JMS等,当内存该状态发生变化时,通知执行某特定事件,这种方式可降低数据库的负载。既然用了中间件,就尽量分载,否则没有意义。

2. 缓存和操作失败是什么关系?上面就是基于缓存的。

3. 不推荐使用存储过程,违反可维护性、可拓展性,难于维护,只有编写存储过程的人知道其中诀窍,唯一优点是性能好,请问性能再快,也只能一台数据库服务器啊,如果访问量再上去,你用什么技术再提升呢?还是要回到可伸缩的分布式计算中间件的解决思路上。

ronghao100

发表文章: 39
注册时间: 2005年03月31日 15:24
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月20日 10:04 回复
借个地发表一个问题:我要实现一个站内消息系统
问题:甲给乙发了消息,乙的JSP界面如何知道有了新的消息并及时通知,数据定时刷新?观察者模式?
warbaby

发表文章: 11
注册时间: 2005年01月29日 18:24
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月20日 14:13 回复
楼上的,先搞清楚B/S结构是什么,你要的功能用纯B/S是没有办法解决的。在浏览器那一层上,只能是请求触发而不能是消息触发。

一般都是定时刷新页面读取数据库。或者你用一个自动刷新的页面定时去读自己接受到的消息,这算是比较严谨的做法。或者给客户端按些小软件,功能好做,但是违背了B/S的初衷
mengk

发表文章: 7
注册时间: 2003年11月11日 18:13
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月20日 14:34 回复
有时候事情不是向想象的那样的,为了保护对原有系统的投入,不会因为要做新的应用,就把原来的东西全部换掉。对于异构系统的集成,经常会碰到这样的问题。所以在这个基础上,首先考虑的是问题来了搞不搞的定,其次才是如何能做得更好。不知道我的说法大家是否赞成。

1。java.util.Timer和java.util.TimerTask虽然功能上弱了点,但还是比较好用的两个工具类,能满足一般的应用。但要注意的是,如果时间间隔太短,而对某个表进行扫描,我觉得这样做是有问题的。比如,我每隔5秒钟要对N多通话记录(假如N的值比较大),进行计算话费,这时用Timer和TimerTask就会有问题了,因为每隔5秒它会开启一个新的线程,但是5秒前的线程可能并没有处理完所有的通话记录,这时就有可能会出现一条通话记录生成了多个话费的问题,哈哈,多收了用户的钱,这下麻烦了,小心人家告你,嘿嘿。。。

所以在用这两个类的时候一定要问一问,在我这个时间间隔中是否能处理完所有的数据?

2。通常缓存都是把数据或者对象暂时保存到内存的,我晕,你居然想到了对象序列化到文件,不知道文件IO很慢吗?与其这样还不如持久化到数据库呢!看你是否能将第一次创建的对象保存到静态的HashMap或ArrayList中。

3。“存储过程里面能直接返回一个类似于java里面的对象数组”。
哈哈,这个问题我原来就遇到过,说实话我也很讨厌这样做,但是没办法。我COPY一段代码给你吧,我不想做任何解释。

StringBuffer sb = new StringBuffer("{CALL sp_listschedule_local(?, ?, ?, ")
.append(" ?,?,?,?,?,?,?) }");
CallableStatement cstmt = conn.prepareCall(sb.toString());
int i = 1;
/*七个传入参数*/
cstmt.setString(i++, param.getRideDate());
cstmt.setString(i++, param.getIsDisCount());
cstmt.setString(i++, param.getStartStationId());
cstmt.setString(i++, param.getToStationId());
cstmt.setString(i++, param.getScheduleId());
cstmt.setInt(i++, param.getSellLimittedTime().intValue());
cstmt.setInt(i++, param.getSelfOrgId().intValue());
cstmt.setInt(i++, param.getIsBuPiao().intValue());
cstmt.setString(i++, param.getSqlStr());

/*一个输出参数*/
int[] retIndex = {i};
cstmt.registerOutParameter(i++, oracle.jdbc.driver.OracleTypes.CURSOR);
/*执行过程*/
cstmt.executeUpdate();


int j=0;
ResultSet rs = (ResultSet) cstmt.getObject(retIndex[j++]);
ListScheduleDto dto = ListScheduleRet.createNomalDtosFromResultSet(rs);
ListScheduleRet ret = new ListScheduleRet();
ret.setDto(dto);
cstmt.close();
SportsBaby1980

发表文章: 244
注册时间: 2004年06月09日 16:52
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月21日 08:50 回复
借个地发表一个问题:我要实现一个站内消息系统
问题:甲给乙发了消息,乙的JSP界面如何知道有了新的消息并及时通知,数据定时刷新?观察者模式?

现在有一定的技术能够解决该类问题。
建议你研究一下Echo和jsf
SportsBaby1980

发表文章: 244
注册时间: 2004年06月09日 16:52
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月21日 08:54 回复
存储过程的看法:
不能一刀切的否定存储过程。
使用存储过程要看情景:
如果操作用存储过程很省时间等等,为什么不用?
但不能滥用存储过程,一般涉及到性能等问题,才能考虑用。
banq

发表文章: 8929
注册时间: 2002年08月03日 17:08
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月25日 10:13 回复
存储过程不建议这样,如果需要如何实现,可参考我的Jdon框架结合缓存的优化。

编程如画国画,下笔要慎重,否则一个坏笔会破坏整个画面的构图,从此走向畸形,程序员要有:编码方向不能错,宁可不编码,没有设计好,胡乱下笔,会误导大批。
windjp

发表文章: 16
注册时间: 2004年02月06日 17:34
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月30日 11:50 回复
多谈问题,少谈主义!

定时器:你可以使用用操作系统的定时器触发你的java程序(就是一个普通的java程序),如unix底下的crontab,当然你可以选择部署在应用服务器所在的机器上。
缓存:不知道你的需求,至于序列化,java中实现了serializable接口就可以序列化,具体看api文档。

至于抛弃数据库的高论,我看了文章,不知道除了对象和模式以外(我只是说您所理解的高度),不知道你知不知道所有业务逻辑的建模都是有他的数学基础的,建议你去看看关系数学。如果您是说设计那算我没说了,新来的那些毕业生做了3天java都可以跟我口若悬河的谈设计的,呵呵。
windjp

发表文章: 16
注册时间: 2004年02月06日 17:34
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月30日 12:03 回复
>数据库是什么东西?只是对象持久化之一

哎。。。。无语
windjp

发表文章: 16
注册时间: 2004年02月06日 17:34
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年04月30日 12:04 回复
多谈问题,少谈主意!

定时器:你可以使用用操作系统的定时器触发你的java程序(就是一个普通的java程序),如unix底下的crontab,当然你可以选择部署在应用服务器所在的机器上。
缓存:不知道你的需求,至于序列化,java中实现了serializable接口就可以序列化,具体看api文档。

至于抛弃数据库的高论,我看了你的文章,不知道除了对象和模式以外(我只是说您所理解的高度),不知道你知不知道所有业务逻辑的建模都是有他的数学基础的,建议你去看看关系数学。如果您是说设计那算我没说了,新来的那些毕业生做了3天java都可以跟我口若悬河的谈设计的,呵呵。

〉数据库是什么东西?只是对象持久化之一

无语。。。
i_love_this_game

发表文章: 14
注册时间: 2003年12月18日 09:15
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年05月07日 02:01 回复
You can check JMX Time service. Use scheduler can do what you want
jakarta99

发表文章: 77
注册时间: 2003年09月13日 20:53
Re: 请教高手:J2EE使用定时器和对象的缓存... 发表: 2005年05月07日 11:07 回复
J2EE Timer 其利用 java.util.Timer 就可以得很好了
如果你想要比^}s的 Timer F
可以利用 Opensource 中的 Quartz or JCrontab

http://www.opensymphony.com/quartz/
http://jcrontab.sourceforge.net/index.shtml

都是不e的x, 不^我比^推] Quartz
都可以我的子笾胁榭椿臼褂玫馁Y料 ( http://www.sentom.net/list.asp?id=32 )

另外, Caching 的部分, 其 JCP 原本要定x相P的 Spec
http://www.jcp.org/en/jsr/detail?id=107
但是 2001 年之後tt]有幼, 自然在 Opensource 中也有各N作方式
例如 jCache..
http://jcache.sourceforge.net/

不^通常各 Application Server Vendor 都有相P的作
JBoss 的 cache 也是不e
http://www.jboss.org/products/jbosscache
如果你研究一下 JBossCache 泻艽蟮Wc突破

然 jakarta commons 也有相P的 cache
http://jakarta.apache.org/commons/sandbox/cache/
不^F在在研l中, 已可以玩一玩了

如果要利用在 Hibernate 冉陀幸韵 libs,
OSCache ( http://www.opensymphony.com/oscache/ )
EHcache ( http://ehcache.sourceforge.net/ )
@篇文章得很完整, 可以⒖ ( http://forum.java***.com/viewtopic.php?t=6593&postdays=0&postorder=asc&start=0 )

这个主题有 20 回复 / 2 页 [ 1 2 下一页 ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-07 jdon.com

anti spam