论坛首页 海阔天空论坛

参加4月4日Ben Wang的JBoss讲座纪实

浏览 46391 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-04-06  
曹晓钢 写道
照片我放到www.redsaga.com了。还有我的回忆记录。


http://www.redsaga.com/mambo/index.php?option=com_akogallery&Itemid=28&func=detail&id=9
是我,本人行不改名,做不改姓,杜恒飞。以后,大家叫我,阿杜,就可以了。[/url]
0 请登录后投票
   发表时间:2004-04-06  
sorry, smallduzi同学和大家不要怪我啊。前天除了robbin和马威,dlee,大家都是第一次见面,所以多有不周,敬请担待。照片的标题我已经修正了。

关于上面dlee的问题,我仅仅写了两行,又如何能够偷换ejb和cluster的概念?我好像根本就没有提到EJB这三个字耶~

我们现在说EJB和J2EE AS,可以指你的程序使用完整的EJB,也可能只是用其中的一部分,甚至说我只为了使用JMS,而就需要一个EJB container。这是由市场现状决定的。这一切的根源在于,目前EJB/J2EE是标准。在这个层面上说,使用EJB很多时候不仅仅是技术上的决定,也有商业上(比如说与大型的商业系统连接)和政策上的决定(因为EJB突然死亡或者J2EE突然死亡,也就是数家大公司同时放弃J2EE/EJB的可能性非常小)。我们作为技术人员,也不能仅仅从技术上进行考虑。

现在有了免费的JBOSS,可以无限制的进行EJB的开发了,我觉得使用JBOSS对于维护一个团队来说是非常重要的。如果使用spring/aop这样比较“激进”的方案,对于个人hack来说非常合适,但是对于一个快速扩张的公司来说,能够快速找到合适的工具,合适的员工,比什么都重要。

当然,我说了这么多,其实我并非是EJB的支持者。我自己更倾向于轻型的解决方案。我希望我们的讨论仅仅是在技术上某种具体的方法更好,而不要涉及到EJB是否不好这样的大范围下判断的结论。
0 请登录后投票
   发表时间:2004-04-06  
又要道歉了。很对不起,是马伟而不是马威。(很奇怪,我印象里面一直是马威来着。)马伟的英文名正好是maven,比较好记。

还有,那张合影里面还有一位现在不知道是谁,就是左数第二位,请告诉我。我在合影下面准备加人物说明。
左起:
马伟,未知,robbin, ben,dlee,阿杜,nuke,我
0 请登录后投票
   发表时间:2004-04-06  
葛恒峰 gehf,Web表示层版版主
0 请登录后投票
   发表时间:2004-04-06  
对于认为ejb,cluster,jms,mdb或者distribute,或者任何其他的技术没有意义或者意义不大的一些朋友,我想简单说几句

我仔细的阅读了本贴的每一个回贴,想做一些评论,上面讨论到的一些东西大多是很对的,只是有个别的意见不敢苟同,事实上,ejb.mdb或者distribute,etc,都非常有用,我说的是非常,只是也许你没有碰到合适的场合罢了,在没有真正用过就去评论某项技术没多大用处,我认为是非常不合适的,任何技术都是有他的用处的,存在的就是合理,关键是看你怎么去用他,有人去用汇编语言写一个ERP系统吗?我想没有

具体一点,非常多的人认为CMP就是一无是处,是这样吗?我也不这么认为,在我们的一些项目中(比较小规模,几台dell 2650的集群而已,当然这些机器都是必需的,我们没那么多钱买太多的机器,使用weblogic),我们使用cmp来做增删改,查询当然不是用find方法,用jdbc+简单的mapping,经过近半年时间的使用,发现性能是很好的,使用CMP其实是为了使用他的pool,对象池,不要小看他,在压力非常大,访问十分频繁的时候,对象池的作用是很大的,不需要经常去创建一些java对象,在一些特定的情况下,性能上表现是很不错的

当然,这一点点好处并不能说明什么,只是随便举个例子而已,并不是某些技术真的象很多人说的那样一无是处,也许,只是也许,你没有找到合适的地方用而已

另外,周末本来也很想去上海的,可是临时有事,未能成行,遗憾..
0 请登录后投票
   发表时间:2004-04-06  
嘿嘿

引用
我们使用cmp来做增删改,查询当然不是用find方法,用jdbc+简单的mapping,经过近半年时间的使用,发现性能是很好的


你查询并没有用CMP,这能成为证明CMP性能好的证据吗?

引用
使用CMP其实是为了使用他的pool,对象池,不要小看他,在压力非常大,访问十分频繁的时候,对象池的作用是很大的,不需要经常去创建一些java对象,在一些特定的情况下,性能上表现是很不错的


对象池的实现多的去了,不是只有CMP才有。

我想关于CMP,关于Entity Bean的讨论可以休矣了。对于一个已经使用那么多年的老家伙了,现在老没完没了讨论,感觉自己有点过时了。

这是去年我在jdon上讨论CMP的帖子,比较详细谈过CMP的问题,有兴趣可以看看:

http://www.jdon.com/jive/thread.jsp?forum=16&thread=6062&msRange=30
0 请登录后投票
   发表时间:2004-04-06  
我也没说CMP有多好啊,呵呵,JDON的讨论我看过的,其实我要表达的意思只是技术要合适的用而已,多好的东西也只能用在合适的地方,因为没有什么是万能的

对于类似的争论我一般不参加的,因为实在没有什么意义
0 请登录后投票
   发表时间:2004-04-07  
各位大虾,本人来这个论坛不久,发了两个帖子无人回应,只好借助这个帖的人气了,不过我看大家在讨论的话题也正是我关心的话题,只是我还没有找到答案。

我最近在考虑一个J2EE的多层架构方案,要求高性能高可靠性,来这里看了很多大家的文章,学习了很多。现在我打算前端用struts,后端用Hibernate+swarmcache,但是中间的业务处理层我不知道是该用EJB呢还是用Spring,或者自己开发RMI OR CORBA的服务?

我的设计目标要求WEB SERVER与APP SERVER一定是多对多的关系,而且业务活动(SESSION)不能受单台机器宕机的影响。这就要求一定要在多台机器之间同步SESSION数据,我也不知道是用HttpSession在WEB SERVER之间同步好呢还是用SFSB在APP SERVER之间同步好?

如果是用后者的话,看到有网友说APP SERVER会传输整个SESSION类的序列化数据,性能很低,不知道Spring在这方面如何?我看到的关于Spring的文章都是关于它的编程模式(IOC)的介绍,而对于系统性能特性的介绍却没见过。

另外,如果使用EJB而又不使用CMP和SFSB,那还有多大必要使用EJB呢?如果仅仅用SLSB,跟自己做CORBA或RMI服务有多大区别呢?我看到有网友说EJB提供的安全服务也很难用到,而交易服务只有在跨数据库的场合才有用(至少我要做的项目不会出现跨数据库),这样看来我的确不知道有什么理由要用EJB啊?
0 请登录后投票
   发表时间:2004-04-07  
引用
我的设计目标要求WEB SERVER与APP SERVER一定是多对多的关系,而且业务活动(SESSION)不能受单台机器宕机的影响。这就要求一定要在多台机器之间同步SESSION数据,我也不知道是用HttpSession在WEB SERVER之间同步好呢还是用SFSB在APP SERVER之间同步好?


同样这个问题,我那天也请教过Ben,他说都可以的,就看开发人员自己的喜好了。他说在Web层使用Session,程序要自己写代码,session.getAttribute(...), session.setAttribute(...),而SFSB不需要自己写这样的存取Session的代码,编程稍微方便一点。

引用
如果是用后者的话,看到有网友说APP SERVER会传输整个SESSION类的序列化数据,性能很低,不知道Spring在这方面如何?我看到的关于Spring的文章都是关于它的编程模式(IOC)的介绍,而对于系统性能特性的介绍却没见过。


Spring应该不具备集群能力吧?我没有接触过spring。

引用
另外,如果使用EJB而又不使用CMP和SFSB,那还有多大必要使用EJB呢?如果仅仅用SLSB,跟自己做CORBA或RMI服务有多大区别呢?我看到有网友说EJB提供的安全服务也很难用到,而交易服务只有在跨数据库的场合才有用(至少我要做的项目不会出现跨数据库),这样看来我的确不知道有什么理由要用EJB啊?


从目前来说,除了分布式功能以外,EJB其他的功能肯定都有替代解决方案的,所以如果你不需要分布式,确实不必一定采用EJB。不过你前面不是说要做Web Server集群和App Server集群吗?没有支持分布式的组件,你怎么做App Server集群上运行的Java程序啊?

你自己做CORBA,或者RMI服务的话,要实现分布式,编程起来比EJB要麻烦很多的。
0 请登录后投票
   发表时间:2004-04-08  
robbin 写道

从目前来说,除了分布式功能以外,EJB其他的功能肯定都有替代解决方案的,所以如果你不需要分布式,确实不必一定采用EJB。不过你前面不是说要做Web Server集群和App Server集群吗?没有支持分布式的组件,你怎么做App Server集群上运行的Java程序啊?

你自己做CORBA,或者RMI服务的话,要实现分布式,编程起来比EJB要麻烦很多的。


谢谢Robbin回复,在继续讨论之前,我想我们先统一一下术语,分布和集群,我的理解是分布不一定集群,集群不一定分布。我理解的分布是指分层结构(如WEB层和APP层)在物理上表现为不同的机器,而集群是指同一层的功能在物理上由多台机器实现,支持负载分担和故障容忍。

如果仅仅是想分布的话,我并不觉得EJB有什么特别的好处,自己实现CORBA或RMI或SOAP都不困难,用EJB反而麻烦,需要配置APP SERVER。

关键在于集群,集群要求对客户端(相对于集群层的客户)实现透明的故障恢复和负载分担,这种透明的故障恢复和负载分担首先表现在远程调用的通讯层次,自己做CORBA或RMI确实就有困难了。

其次表现在数据同步方面,我觉得这里的数据同步有两个方面,一个是对SESSION数据的同步,保证在故障切换的时候服务照常进行,另一个是对数据库资源数据的CACHE和同步,CACHE的目的是为了提高性能,但对于应用应该是透明的,我想象的CACHE方案可能是CACHE全部数据库数据或者根据查询的情况CACHE部分数据,但一旦CACHE数据发生变化应该同步到数据库和其他的机器上去。

我现在的疑问就是EJB是否能在以上几个方面提供我所需要的特性?简单总结一下就是:
1)通讯层次的负载分担和故障恢复方案
2)SESSION数据的同步方案
3)数据库数据的CACHE和同步方案(如果是EJB的话应该是由CMP实现,不知道如果用Hibernate应该跟什么Cache配合比较好)

如果用Hibernate的话实际上我只能期望EJB为我提供1、2的特性就行了,对吗?另外不知道象Spring这样的其他的替代方案是否也能提供1、2特性的?
0 请登录后投票
论坛首页 海阔天空版

跳转论坛:
Global site tag (gtag.js) - Google Analytics