EJB2.0雨夜教程之二
EJB雨夜原创讲解之二这次首先结合上次手写的例子给大家讲解一下EJB的实现原理。
下面我们打开第一次的程序。
我们首先从客户端那个测试程序看。
hashtable这个我们看作是装在我们的需要信息。
context是初始化我们的信息。相当于读取到Context。
这步是jndi查找组件。
然后对比一下是不是我们的需要Home类型。强转。
这些其实都不是很重要。
下面的步骤才是关键。
home.create()。。之前我的解释说这个返回的是一个AddCount的类型实例。
实际上我们通过容器编译为我们生成了实现类。
之前我们写的AddCount都是接口。我们是通过 java weblogic.appc AddCount.jar把这些生成的.
看到了吧.有很多的实现类.
还有stub结尾的和skel结尾的.
这些是什么呢?
我们看home的实现类来分析吧.
IMPL结尾的文件是容器为我们生成的它的实现类.
stub结尾的是一个存根类.
skel结尾的是框架类.
同理其他的相似文件是一样的含义.
我们的create()做了什么呢??
它首先由stub的create()发送信息给了skel由这个类调用我们的真正实现类就是Impl结尾的那个来实现.
然后创建了Bean的实例.通过ejbCreate()初始化了我们的AddCount的实现类再由AddCount的stub传递信息给
Stub对象再由这个对象调用我们的真正实现类.也就是AddCount的Impl之后回到我们的Bean实现剩下的业务方法.
最后再把以上信息远路返回.
这样我们最后的调用就是接口的调用实现.
我从程序指一下大家看好.
在这里需要指出我们的AddCount的实现类也称作拦截器,它会把xml中描述的完成.
只有完成后才调用我们Bean的方法.这个是非常重要的.
从另一个方面讲.整个的大的流程可以从Bean的方法流程来分析.
ejbCreate()初始化我们的EJB组件.然后调用我们的业务方法.
下面我们来结合JBuilder9+weblogic来部署运行EJB的第一个例子
这个地方可以更改包名.我们默认就好了.
= =比较郁闷的是偶的JBuilder这个光标总是定位有问题..但凑合用了..
我们看到这个里面和之前手写的没差..这也就是工具的伟大之处..
= =但弊端是容易忘记代码.
我们来看看如何写测试类..
我们看到那个地方有红线.那么一定有错误对吧..看看什么错误..远程调用必然有异常.
所以呢一定要try catch..之前的手写我们偷懒了直接在main()处抛的异常.
大家注意ejb组件一定要对整个make.
javaTest类也要进行make编译才能运行.
下面我们部署到weblogic中.
有两种方式.
第一种是之前手写的那个部署方式.
第二种我们可以在JBuilder里部署.但这种部署需要每次reload一下.第一种则不用.
原因是JBuilder里部署的时候它会先吧我们的jar包放到mydomain里然后再通过weblogic部署进去.
这样如果我们的程序很大的话这样显然是一个弊端.因此建议大家用第一种方式.从控制台部署.
我还是在这里给大家演示一下JBuilder部署.
这个部署每次还会重新编译一次.可以看到又运行了一次appc对吧..
编译ok了..
下面我们运行测试类看看结果..是不是我们要的HelloWorld.
但运行javaTest类的时候依然会重新appc一次..我们为了避免有个选项需要选择..
这样就不会了..
下面我们运行测试类.
^_^看到了吧..成功..呵呵..这次到此结束...
下次讲解有状态的session和无状态的session.哦哦..顺便还有一个localHome的问题..呵呵要说的真多.
就这样下次再见..
补充..Test类的内部结构..此类大家可以自己分析下.其实和我们之前手写的没差.它仅仅多了些log日志写入.
可以在之前生成Test类的时候勾去那个log选项就不会有了. [:victory:]支持一下。 就是下载不了! 能不能显示Fftp下载地址! 他的教程没有上传到我们的ftp中,你去百度搜索吧。
页:
[1]