EJB3,我们究竟得到了什么 (3)

<三>各类声明
       EJB3可以在容器外运行,这不是谣言,但也绝对不是真理。当我们只用Entity Bean我们可以不用容器,就象开发Hibernate的应用一样,我们可以使用Entity Manager(类似hibernate的Session)来开启关闭一个交易。这是所谓的容器外交易,或者称作为应用管理交易。EJB的容器管理交易中,不管是BMT还是CMT,事实上用到的是那个笨重的JTA。通常情况下,我们宣称JTA是杀鸡用的牛刀,因为没有分布,没有多数据库。但,我们遭遇有分布有多数据库的情形时,牛刀不可少也。EJB3的CMT支持,除了给我们用annotation来声明交易类型之外,没有什么太大的变动,对于BMT,我们可以注射Context object来使用UserTransaction等,但是一个结构师可能会跳出来阻止你用BMT因为Context这个玩意儿使得EJB紧耦合了它的容器。我说,当我们需要手动处理交易rollback时候,最好不要理会一些不拉图式的概念。在JAVA世界里,我们的大脑被太多的概念玩弄着,一些概念确有建设意义,但是大部分的概念目前为止只能作为精神领域的娱乐。譬如耦合,我们所追求的松耦合的极致是Seperate concern,我们要求接口组件的粒度尽可能的粗,使得层与层之间结合点尽可能的小,但是不管怎么样,层次之间还是耦合的事实不能被否认,就象SB,MDB会耦合容器一样,我们只能在松紧的程度上来获益相应的维护性,移植性。与那些抽象的概念相比,从实践来的经验和规则更能使我们得意,Ted Neward 75条j2ee开发准则是公认的从good开发者到great开发者的分水岭。

       这里只讲EJB3提供的在EJB Tier上的声明性安全机制,除了声明的方式变成Annotation外没有什么变化。例如声明一个函数权限,只需要在函数上加上 @RollesAllowed("rollname")或者@PermitAll,非常的简单直观。例如,可以在Bean的头上放 @DeclareRolls来代替DD中的security-role-ref项,等等。在安全身份传递方面,仍然是通过 getCallerPrincipal和isCallerInRole来获取Caller的安全上下文的信息,这里注射SessionContext不可避免。

      到这里,我们看到EJB有出色的声明性交易管理,声明性安全管理。但是,仍然遗漏了在Web应用中最让人头大,但又不可避免的非持久状态管理。对远程服务来讲,fat客户端保存相关不持久信息不成问题,而对thin客户端,通常会把这些信息塞在Http Session里,或者用SFSB。这里有两个极端的做法,首先是什么都SFSB来,似乎SB让人觉得更安全,其实它的代价是额外SFSB pool管理的消耗,而状态的生命周期不见得和Http Session保存的有什么两样,可能Http session更快一点。至此又出了另一个极端做法,把什么都放http session中,这样做完全是在虐待内存,并严重降低应用扩展性。我们有个文雅的称呼来数落它:Overstuffed Session Antipattern。管理好状态无非是,把短期状态放Http Session,长期状态交SFSB,并且时刻记着用好了的状态要清除。JBoss Seam提供一个J2EE不曾有的声明性状态管理,它在Servlet提供的上下文基础上又提供了几个上下文,比较醒目的是用在长交易下的对话上下文,并用Annotation @In @Out 和Session交互。我一开始被他别出心裁的名词 "Biinjection"唬住了,一个既能从上下文注射,又能注射回上下文的新概念!其实后来,我发现把它翻译成大白话就是,Session的get和 set。

我们学习究竟是为了什么

08-20

嗯,说点我的看法吧。一家之言哈,不一定准确,欢迎拍砖。rn我想,我们上学的初衷,经过了这么多年,可能不管是家长,还是孩子,都搞忘了。rn一个孩子大了,要上学,为什么,大家都要上。rn上学了,要努力学习好,为什么,学习差要留级,没面子。rn高中了,要上大学,不上大学怎么活哦。rn大学了,要好好学,不好好学,出来找不到好工作。rn找到了好工作,要努力做,为啥呢,不努力,会被辞退。rnrn对不对?rnrn啥都说到了,唯独漏了一个字,“钱”。rnrn所有的行动,归根到底,其实是为了长大了,能赚钱,能养活自己和家人。能过上一份体面的生活,这钱不但希望赚的多,而且希望赚的久,还希望越赚越多!rnrn对不对?rnrn那人生是不是就为了赚钱呢?这个问题问出来,十个人,5个人说是,5个人不说话,呵呵,说是的也觉得很没有面子。好像自己很贪财似的。不说话的,不想丢这个面子而已。rnrn其实啊,我们作为人,每天生活,要吃饭,要穿衣,要消耗。我们是人,不是动物,我们也有七情六欲,也有悲欢离合,有时候,我们也想获得一些好的东西,比如,大房子,好车子,漂亮MM什么的。。。最重要的是,我们要有面子,要获得别人的尊重,这才是最重要的。rnrn这个有错吗?其实没有错的。rnrn每个女孩,都希望嫁一个有安全感的男人,每个男人,都希望能进一家有安全感的公司,为啥,人的本能而已。rnrn现在再来看,我们学习的目标是什么?知道怎么回答了吗?rnrn我们希望自己能安全地生存下去。rn我们希望自己的家人能幸福安康。rn我们希望自己能体面地在社会中生活。rn我们希望自己家能过上满意和富足的日子。rnrn仅此而已。rnrn而这一切,必须体现在我们的钱上,不是说今天我们有多少钱,而是说,这个社会是公平的,给我们每个人一个靠自己力量赚钱的机会。rnrn既然机会都是均等的,那么,我们就需要讨论一下,为什么有的人赚钱效率高,有的人低,原来是知识在作怪,呵呵。rnrn所以,我们需要学习,需要不断提升我们赚钱的效率,需要尽快达成我们的人生目标,仅此而已。rnrn我讲的就这么多,欢迎拍砖哈。rnrn[url=http://student.csdn.net/invite.php?u=39028&c=42fcd4a519102d74]肖舸[/url]rnCSDN学生大本营个人主页:[url=http://student.csdn.net/?39028]http://student.csdn.net/?39028[/url]rnCSDN博客:[url=http://blog.csdn.net/tonyxiaohome]http://blog.csdn.net/tonyxiaohome[/url]

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试