由于工作需要最近看了看EJB方面的东西(以前都没怎么细致的看过,也算的上是在j2ee技术方面的一个缺陷吧),用了用最简单的stateless session bean,有点小经验。
首先用jb2006来编写ejb确实很方便,它的ejb modul使用起来很顺手,相比用eclipse(或myEclipse)就不那么爽了(也许是自己没找到好的插件)。
由于stateless session bean可以在用户*享,ejb容器提供了一个pool,所以在bean上写一些方法来让用户调用(特别是用户使用量比较大时),应该可以提高程序的性能。
还有就是在jboss4.0.X中运行ejb时会出现问题,在将通过JNDI获得的Home或者LocalHome接口进行PortableRemoteObject.narrow或者强制转换为LocalHome的时候,会出现java.lang.ClassCastException异常,这是因为JBoss4.0.2使用了Tomcat的Class Loader来加载Web应用的类,修改的方法是打开$JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/META-INF目录下的jboss-service.xml文件,更改UseJBossWebLoader的属性值为true(默认值为false),即可。这样做是指定JBoss使用JBoss统一的Class Loader来加载Web应用的类(这个小问题刚开始困饶了我一个晚上加大半个白天,再加上这两天有些事整的我心情非常不好,所以很烦,不过还好没有放弃,并最后找到原因,感觉还是很欣慰的)
在这里也有个问题,就是关于ejb中的事务,还不太清楚怎么使用,我可以在xml文件中进行设置,让bean中的多个方法保持事务一致性(即在多个方法中分别操作数据库时保证出现异常,全部回滚),但怎么样能在一个方法中实现事务了,这个方法中我要多次操作数据库,有可能是操作不同的数据库,即要多次connect数据库,那我如何能让其中某一个操作失败时,前面操作成功的也回滚了,google了半天也没找到做法,在csdn上发了贴,希望能有人帮帮忙吧