EJB2.0雨夜教程之三
EJB雨夜原创讲解之三LocalEJB..
之前我们写的都是Remote.
哦?
不明白这个做什么?
其实很简单..我们了解EJB是远程调用的.是把不同的工作分给其他的服务器来实现.
那么如果一个服务器要处理多个逻辑那么它可以分给它的一些本地程序来实现再传给它.
这就是LocalEJB啦.
LocalEJB把处理好的给我们的RemoteEJB这样别的服务器来访问的时候它其实就是来调用我们的
这个RemoteEJB而不知道实际的工作..这个思想其实始终贯穿着编程.需要多多体会.
而这个模式就是Facade.外观模式.
流程介绍.
一个module可以有多个ejb.
所以我们写的时候先建一个module.
然后分别建立2个ejb.
一个是实现Remote接口.
一个是实现Locla接口.
我们在remote的Bean里调用localEJB组件.
测试类写法和之前的没差.
为什么??就如之前所说的我们就是调用这个remoteEJB不用管其他的东西.
而调用就是同之前一样.不用改变.
特别强调一点..Local必须和Remote在一个module才可以进行调用.
也就是同是一个包里的才能调用.
为了节约时间和节约空间.请大家先仔细看上面的说明
然后再跟着完成JBuilder9的操作.
= =突然有点慢..
先写localBean里的业务.
然后我们通过远程调用内部的这个localBean.
这个里面我们需要写local的JNDI.
这块和我们手写那个一样吧.其实很简单..
看到好多的红线吧..
这块是因为我们没有加进包.
还有没有try..catch..
下面我们写测试类..
远程调用一定要抛异常..我一般都是懒得写..通过工具来..
呵呵..ok了..
下面部署到weblogic中..我就用JBuilder部署了..
当然了要先启动weblogic..我已经启动好了..
下面运行测试类看看了..成功..^_^.这个就是local+remote的小例子..= =关于这个英文rainnight大家不要死扣.
这个是我乱写滴...雨夜..哈哈..我知道不对但喜欢这样写.哈.这次结束.
下面的会是session的状态例子.
===========先看下面的文章然后结合这些知识点我们来写程序============
SessionBean
SessionBean有两种.一种是有状态,一种是无状态.
我们直接切入主题吧
有无状态的SessionBean的区别
有状态从代码分析就是在ejbCreate()方法里带参数.如ejbCreate(int count)throw CreateException, RemoteException;
无状态从代码分析就是在ejbCreate()方法里无参数.
这里有状态的含义是我们给参数进行初始化.这点在无状态里其实也可以做到用set来定义进行初始化.
在session里我们又涉及到了另外两个概念.一个叫钝化.一个叫激活.
从原理上讲:
我们从实例池里取出一个对象.当我们操作之后去做别的事情.然后再回来进行操作那么你所使用的实例则
不是原来的那个实例.也就是说你的状态不会永久保持.这个就是无状态.
你什么时候来.我们给你一个实例.你走了之后那么这个实例就会被别人用.不会保留你的状态.
有状态.则不是这样.它利用序列化接口.把状态保存到序列化文件中.
当你走的时候你的状态和信息保存到序列化的文件里.这就是钝化.
当你你再回来的时候再把这些信息返回给你.这个就叫激活.
我们这次用数组来做测试.通过这个例子可以给大家很好的讲解这个有状态的和无状态的区别.
= =反正我就是通过它很好的理解这个概念的.
1,先写一个有状态的给大家看效果.
这里我们给加一个字段,和一个方法.
这样我们的SessionBean就写好了.我们在ejbCreate里初始化我们的count
而addcount就是我们的count+1
这里我们做的就是一个一个的初始化到实例.对应着数组.
我们在输出的时候用addCount这样我们的实例初识值是0~4,i从0开始加的不是嘛.对吧.呵呵
这样我们通过这个方法输出的值应该是1~5.
下面部署.
也许会觉得这个很正常啊.
其实不然的.
下面我们看无状态的.
2,看到了吧.无状态的根本没法在ejbCreate里添加参数来进行实例的初始化.所以我们用一个方法来做.
我们用setCount来做有状态时候ejbCreate的事情.其他不变.
看到我们在做test类的区别了么.
我们先是create创建.然后才调用远程方法来进行初始化.最后进行的输出.
这样也是可以做到初始化的目的的.但是我们马上就能看到有状态和无状态的区别之处了.
看到了吧.是5,6,7,8,9,我们再运行一次试试.= =各位不巧赶上一直都是这个了.
不过效果已经达到了.
根据程序我们得到的效果应该会是和无状态的一样.但是为什么结果是这样呢.
这个各位就看上面的文章了.答案自然在其中.
最后我带大家看下钝化和激活这个过程.
在这两个方法里添加一下输出语句.呵呵..看到了吧.还是这个无状态的.这次输出又是另外的数字了.各自领悟了.
钝化激活.
分别在钝化激活的方法里添加完输出之后.
我们看控制台.
晕..这个是因为太少了没有达到.我来把数组加大.看到了吧..= =机子不错.嘿嘿..不然over啦哈
还没有完..不过这次的讲解就到这里了.
希望大家能够明白它们的区别. 支持一下楼主 能不能下载啊,给个下载网址! 已经短信给你回复了..
页:
[1]