EJB2.X
来源:互联网 发布:如何在dos下运行java 编辑:程序博客网 时间:2024/04/30 06:36
EJB2.X 服务端
1、网络化编程,并发处理,事务控制,MQ消息队列;
2、Client端是由存根Stub进行管理,Service端由框架Skeleton对象进行管理,两者通讯的语言是IDL语言,智能代理就相当于目录服务,它就像一个数据字典,登记注册需要在网络上使用的各个公用对象,当客户请求时则负责查找并激活对象;
3、J2EE最核心的部分是WEB容器和EJB容器,WEB容器运行JSP和Servlet网页呈现脚本而EJB容器运行的是企业EJB组件;
4、EJB有两种BEAN,一种是会话Bean,另一种是实体Bean,会话Bean非常类似于CORBA协议,实体Bean则相当于将会话Bean实例化并存入数据库中,这样对数据库的处理就有了2种方式:①使用JDBC访问数据库并使用SQL语句检索数据然后用JSP展现;②使用操作实体Bean的方法进行处理;
5、如何编写一个供远程客户调用EJB容器上的会话Bean呢?
A.服务器端首先编写处理具体业务逻辑的会话Bean,这是真正处理业务的代码也是EJB的核心,这个自定义类必须实现SessionBean接口,需要在这个类中定义供远程客户端访问的方法,该方法必须是public的;
B.编写开放给远程用户的接口,具体的处理业务逻辑的SessionBean实现类也要实现该接口
C.编写EJBHome接口,当远程客户端调用EJB时,EJB容器要为EJBHome接口创建一个实例化的EJBObject即EJB容器自动定义的一个类,该类实现了EJBHome接口,实现EJBHome接口的对象,调用Create方法来创建EJB的实例化对象并将这个对象传递给EJBRemote接口的引用并将最终的通讯任务交给Skeleton,这里的EJBHome接口充当工厂模式的Factory角色;
D.配置XML文件,指明三个Class文件之间的关系,即SessionBean、自定义远程接口、EJBHome,所有在J2EE容器上部署和配置的J2EE组件都需要在JNDI树上配置JNDI名称
6、如果创建的是EJB项目,则在项目目录下只会有src和class目录,另外在src和class目录下只会存在META-INF目录,src下存放那3个java文件,META-INF则存放EJB的XML部署配置文件,class则存放那3个class文件;
7、定义远程接口,该接口定义了客户端能够调用的方法有哪些?该接口extends EJBObject,注意:eclipse编译器JDK版本 <= J2EE容器内置的JDK版本;
8、定义Home接口,自定义一个接口,该接口继承EJBHome,继承后需要重写create方法,该方法返回一个EJBObject类型的对象,即就是自定义的远程接口;
9、编写SessionBean,上面都是自定义接口,这里是自定义类,上面都是继承类,这里是实现接口,这里需要实现SessionBean接口
ejbCreate:EJB被创建时执行的方法
ejbActivate:EJB被远程调用时执行方法
ejbPassivate:EJB被钝化时执行方法
ejbRemove:EJB被移除时执行方法
setSessionContext:
剩下的就是远程接口中定义的方法
10、EJB部署描述文件
<!DOCTYPE ejb-jar PUBLIC '-//SunMicrosystems, Inc.//DTD Enterprise JavaBeans 2.0//EN''http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<!-- Generated XML! -->
<ejb-jar>
<enterprise-beans>
<!—表明这个EJB是SessionBean -->
<session>
<-- 这个EJB在容器里的名字,即JNDI名,登记在目录树中的名字,而且客户端程序在远程查找EJB对象的时候也要通过这个名字来查找 -->
<ejb-name>sayHelloBean</ejb-name>
<!—Home 接口对应着哪个class文件 -->
<home>com.wang.Ejb.sayHelloHome</home>
<!—Remote接口对应着哪个class文件 -->
<remote>com.wang.Ejb.sayHelloRemote</remote>
<!—真正的Bean的实现类编译后的class文件 -->
<ejb-class>com.wang.Ejb.sayHelloBean</ejb-class>
<!—表明这个EJB是不计录Session会话的,有助于提高效率 -->
<session-type>Stateless</session-type>
<!—表明由EJB容器控制事务处理-->
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>sayHelloBean</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
EJB2.X客户端
1、 需要的资料:EJB服务器IP地址、t3协议的服务端口、JNDI名称、EJB服务器的远程接口EJBObject和JEBHome接口文件的class文件;
2、
InitialContext ic = new InitialContext();
Object timerHomeObj =ic.lookup("java:comp/env/ejb/TimerController");
TimerControllerHome timerHome =(TimerControllerHome)
PortableRemoteObject.narrow(timerHomeObj, TimerControllerHome.class);
TimerController timerCreator =timerHome.create();
timerCreator.setTimer();
- EJB2.X
- EJB2.X已死??
- Jboss4.x下第一个EJB2.x程序
- Jboss4.x下第一个EJB2.x程序
- 我来改进EJB2.X的设计
- 新看到的....EJB2.X已死??
- EJB2.x和EJB3.0开发步骤的不同之处
- spring和ejb2.x集成共享applicationContext.xml的问题
- EJB2.x和EJB3.0开发步骤的不同之处
- EJB2.0
- EJB2.0
- EJB2.0的JMS
- EJB2.0的JMS
- EJB2.0的JMS
- ejb3 与 ejb2
- EJB2.0的JMS
- EJB2.1开发实例
- EJB2.0 HelloWorld 程序.
- Linux命令行与shell脚本编程大全
- 欢迎使用CSDN-markdown编辑器
- jUnit
- 4.微信公众号获取Access_token
- 大整数相乘
- EJB2.X
- 文法类型的判断
- HTML简介
- easyui编程中值得学习的一些代码
- 互联网协议入门(二)
- java
- Altium Designer系统优化配置
- Ecshop模板开发(十三):商品详情页商品描述
- 加密术(Java)acm.sdut