JiveJdon Community Forums
在线183人 J道首页 | 论坛首页 | 培训咨询 | 开源框架 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » 开源JdonFramework及其应用案例论坛
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 28 回复 / 2 页 [ 1 2 下一页 ]  发表新帖子  回复该主题贴
oojdon

发表文章: 132
注册时间: 2007年10月29日 13:55
让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年01月19日 04:47 回复
写下这个标题的时候,一个JiveJdon3模样的BBS正运行在我的tomcat6.0里面,之所以用模样两个字,因为它只有简单的发帖和回帖功能以及那亲切大方的界面,好像banq说过:"学习jj3的过程也是学习jdon整个网站内容的过程,是学习DDD思想的过程",所以我始终不期望自己短时间内把这个jj3论坛程序理解透彻,下面谈谈自己在成功让该论坛核心功能运行在tomcat中遇到的一些困难和对jdon框架的使用感受。
对于jdon框架,因为我还是在校学生,缺乏项目经验,更不具备完整或者正确的OO思想,在这个高手无数的论坛里面,我只能从完全幼稚的角度说话了,希望高手回帖多留情,也希望和我这样的新手来共同讨论学习感受,我没用过其他框架,但经常把很多开源框架下载下来然后demo,最后google高手对各种框架的使用感受!开始学jsp就有幸来到了这里,于是走进了模式于框架的路线。
能把jdonframework用得好用得精并用得灵活的人只能是精通Struts和精通IOC的人,也就是如banq这样的人,这是我的感觉,要用这个框架做出像样的东西远非如Struts_jdon_jdbc那样快速或简单,当我们的模型聚合了其他模型或关联了其他模型的时候,增删改查的对象设计以及缓存的管理是个大问题,道友,是否有同感?反正我看到jj3的增删改查实现是晕了,jj3发帖功能的实现对于url的要求以及ActionForm的设计都凸显了Struts的技巧。缓存,爱你不容易,这是我从jj3抽取代码重新实现这个简单bbs的时候遇到的一个最大问题,保证论坛及主题的状态和数据库同步我是头痛了半天,最后没办法,直接ClearAllCache!这种做法应是用该框架的大忌吧,追求性能确实是要付出代价的,听说Spring中缓存得自己配置,这就是代价。
这就是学这个框架的感受,我说了,这也许完全是我的程序经验和程序技巧问题,但我相信很多初学该框架的人也会有这些问题,热爱它并改造它,这是我的态度和理想,80后的人相当一部分是“追星族”,我也不例外,banq就是我心中的那颗星,我希望能在jdon上走得更远,能在国产框架上走得更远,并能在这个框架上灵活驾驭,所以我时刻关注着他们(jdonframework,easyjf,operamasks)。
最新消息,这个由jj3生出来的简单讨论系统要上线了,用户登陆以及向业务层传递登陆用户信息另写了一个action,没有了安全管理以及AOP的基于组件权限访问拦截,当有人发帖和回帖时会清掉所有缓存,这样的程序经得住多少人在线讨论?banq,可以告诉我吗?以后我会根据DDD思想和jj3的设计完善!
[该贴被OOjdon于2008-01-19 04:49修改过]
oojdon

发表文章: 132
注册时间: 2007年10月29日 13:55
re:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年01月19日 05:05 回复
晕,不小心表单重复提交,所以这个帖子在这个论坛里出现了两次!
表单重复提交,这个在真正的业务系统里面也是一个很重要的问题吧!
banq

发表文章: 8933
注册时间: 2002年08月03日 17:08
回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年01月21日 16:41 回复
>当有人发帖和回帖时会清掉所有缓存,这样的程序经得住多少人在线讨论
你可以用Jmeter + jProfiler做个压力测试看看,全部清除对性能影响不是很大,可能在频繁发帖情况下,缓存将频繁清除,缓存利用不高,不过这种情况发生概率还是很小,一个论坛频繁发帖估计要变成全国排名前列了。

JiveJdon3的清除粒度要细一些,将当前帖子和引用其的Thread进行清除。
oojdon

发表文章: 132
注册时间: 2007年10月29日 13:55
回复:回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年01月21日 19:46 回复
谢谢banq的回复,其实这个简单讨论系统将会出现在3月1号上线的网易高校奥运观方站上面,因为我们团队没有将这个网站的主题思想放在论坛上面,所以对讨论区的要求不高,相信直接清掉所有缓存也没有多少问题!
可是现在遇到了很多问题,比如用户的回帖嵌如了html或者javascript,视图显示的时候将会直接显示,这样界面就乱套了,还有就是主题回帖量超过30条发生分页后,接下来的回帖怎么跳转到回帖者的messsage?原代码的result.jsp中没有带分页信息呀:
<a href="<html:rewrite page="/forum/messageList.shtml" paramId="thread" paramName="forumThread" paramProperty="threadId" />&message=<bean:write name="messageId"/>#<bean:write name="messageId" />"
>或手工按这里返回所发帖子
</a>
banq

发表文章: 8933
注册时间: 2002年08月03日 17:08
回复:回复:回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年01月22日 17:30 回复
>视图显示的时候将会直接显示
需要安装HtmlFilter进行Html过滤,可在JJ3后台管理界面的全局过滤中看到,在JJ3的安装文档中也有一个推荐的过滤器列表。

>接下来的回帖怎么跳转到回帖者的messsage
JJ3设计的就是能够跳转到回帖者的message,是通过threadId和MessageId两个参数,在后台进行遍历定位,定位到当前页面包含messageId就算找到了,可看看源码,然后通过#messageId号码(这是html语法)就能够直接跳转了。
oojdon

发表文章: 132
注册时间: 2007年10月29日 13:55
回复:回复:回复:回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年01月28日 06:54 回复
struts的bean:write的标签可以输出bean中的int字段吗?我怎么老是出错,可是jj3的论坛状态"主题/消息"都是用这个标签直接输出的,神了!banq可以讲讲吗?
我现在是把ForumState的主题和消息字段都设为了String然后在后台转换的。
oojdon

发表文章: 132
注册时间: 2007年10月29日 13:55
回复:回复:回复:回复:回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年01月28日 11:40 回复
已解决
oojdon

发表文章: 132
注册时间: 2007年10月29日 13:55
回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年02月03日 10:34 回复
banq老师,这个程序由于运行在tomcat里面也就没有了基于容器的安全登陆,用户登陆我另做了一个action把用户信息放在session里面,现在的回帖发贴我都跳转到另外一个jsp来检查用户是否登陆,但是我发现这样跳转一次之后写进数据库的是乱码,现在我想请教的是:是否存在某种方法可以在表单提交的瞬间去检查session里面是否有用户的信息,如果用户没有登陆就跳转到login.jsp?虽然Struts的普通action可以做到,但因为快速发帖和回帖是ModelSaveAction,我不能控制啊!
banq

发表文章: 8933
注册时间: 2002年08月03日 17:08
回复:回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年02月03日 19:54 回复
你可以做一个servletfilter,对所有的拦截然后转到login.jsp

jj3中是采用JavaEE容器的安全机制,因此只要配置web.xml,就由JavaEE服务器实现拦截和转发到你在web.xml中指定的login.jsp文件。

关于在tomcat中配置安全机制,已经有人试验成功:
配置Tomcat 基于Realm授权认证:

http://www.jdon.com/jivejdon/thread/32703.html
oojdon

发表文章: 132
注册时间: 2007年10月29日 13:55
回复:回复:回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年02月04日 07:10 回复
ok, 解决!
现在只剩下回帖和发帖后的缓存清理问题,在jj3代码中摸索了半天始终没有发现其玄机之所在……
ModelState-->boolean embedded
ForumBuilder-->


if (forum.isEmbedded())
return forum;//读取论坛模型的时候程序只执行到这里?
loadForumState(forum);
forum.setEmbedded(true);

MessageKernel-->


forumBuilder.loadForumState(forumMessage.getForum());
//refresh this forum
forumBuilder.loadThreadState(forumMessage.getForumThread());
//refresh thread
forumBuilder.loadForumState(forumMessage.getForum());
//refresh forum
//刷新的时候重新new了ThreadState和ForumState,那原来内嵌的对象呢?

[该贴被OOjdon于2008-02-04 07:23修改过]
oojdon

发表文章: 132
注册时间: 2007年10月29日 13:55
回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年02月08日 13:01 回复
大家春节快乐!
最新问题:
<html:form action="/message/messageSaveAction.sthml" method="post" >

<logic:notEqual name="messageListForm" property="allCount" value="0" >
<html:hidden property="method" value="deleteRecursiveMessage"/>
</logic:notEqual>
连同子帖一起删除的时候,ModelSaveAction怎么调用到服务层的deleteRecursiveMessage方法的?请banq老师解释一下 <html:hidden property="method" value="deleteRecursiveMessage"/>
lqixv

发表文章: 56
注册时间: 2007年11月22日 09:57
回复:回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年02月14日 16:09 回复
oojdon,我没有详细看过程序。但根据他的程序写法和参数配置方式,我想他是使用Struts提供的 DispatchAction 的功能实现方法调用的。这个问题建议你去看一下Struts的 DispatchAction 的功能介绍和使用方法。
banq

发表文章: 8933
注册时间: 2002年08月03日 17:08
回复:回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年02月15日 18:08 回复
>ModelSaveAction怎么调用到服务层的deleteRecursiveMessage方法的
不好意思,回答迟了,这是使用Jdon框架的命令服务调用功能:
http://www.jdon.com/jdonframework/new.htm

当然,这里面也用到Struts的dispatch功能。

这种方式可以简化我们很多小功能开发,如果每个小功能都要编写Action代码 service代码 DAO代码 很显然麻烦,使用这个模式,可以不必写表现层任何一点代码。只要直接写业务代码就可以,符合让程序员更多精力集中在业务层这样一个框架使用终极目标。
oojdon

发表文章: 132
注册时间: 2007年10月29日 13:55
回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年02月15日 19:26 回复
谢谢,是自己没有仔细看文档啊,文档里面已经是讲得很清楚的。
oojdon将刻苦专研,基于JJ3使之功能更加强大!
感谢jdon,感谢banq的奉献!


鞠躬!^_^
[该贴被OOjdon于2008-02-15 19:27修改过]
oojdon

发表文章: 132
注册时间: 2007年10月29日 13:55
回复:回复:让JJ3跑在tomcat里面---新手使用jdon框架 发表: 2008年02月15日 23:23 回复
根据原版JJ3我将模型继承ModelState,判断一个模型是否内嵌了其他模型,同时在ForumBuilder中也就有了{if (forum.isEmbedded()) return forum;}这样的语句,通过在服务层和DAO层之间加一个Decorator,不用回帖和发帖时清掉所有缓存,论坛状态和主题状态已经和数据库同步,可是现在有了另外一个奇怪的现象:
批量查询时新发的帖子并没有显示,回复某个帖子之后该帖子的所有回复也没有显示
这是否是框架对批量查询进行缓存引起的,可是在MessageDaoDecorator中已经清除了这些缓存啊?
于是我跑到了后台日志发现又有另外一怪现象:
在案例testWeb中的批量查询缓存清除会打印-->


clear the cache for the batch inquiry!
remove the object of BLOCK0select userId from testuser from cache
remove the object of BLOCK0select count(1) from testuser from cache

而在这个系统中后台日志却只打印了下面一句-->


clear the cache for the batch inquiry!



当我们在开始用框架运行testWeb,或者以testWeb为模板开发其他程序的时候那个速度可真是快啊,对于缓存问题只须一个PageIteratorSolver就搞定,可是业务对象一般都是模型嵌模型,而且会有大量的状态数据,OK,缓存的清理问题就来了,也许jdonframework的快速性也就卡在了这个地方,好像EJB也是对象池加上数据类缓存,不知道这个问题是否也要程序员去面对?针对模型聚合模型并附有状态数据的系统jdonframework可否有清除缓存的万能方法?

搜索了以前的一些帖子得到若干结论-->
缓存问题没有找到一劳永逸的完美解决方案,现在只有在业务层手工进行更新,因为Model对象是你设计的,你有责任负责保证他们状态的一致性,就象你考虑事务隔离级别来保持数据状态一致性一样,关于模型嵌套模型,我们根据Evans DDD设计Model类图时,那些Model和另外Model对象发生关联,这些都是知道的,没有这些关联类图,如何有后面的程序代码?缓存同步不是一件简单事情,它和事务 以及多线程一起,是JavaEE中最复杂的部分,所以才会有EJB这样打包专家出现。看来只有自己慢慢摸索了!!

[该贴被OOjdon于2008-02-15 23:44修改过]
[该贴被OOjdon于2008-02-16 00:23修改过]
这个主题有 28 回复 / 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