首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

EJB2.x跟EJB3.0开发步骤的不同之处

2012-11-03 
EJB2.x和EJB3.0开发步骤的不同之处举两个随处可见的例子说说?EJB2.x和EJB3.0开发步骤的不同之处,这两个例

EJB2.x和EJB3.0开发步骤的不同之处

举两个随处可见的例子说说?EJB2.x和EJB3.0开发步骤的不同之处,这两个例子只是为了清楚的说明它们开发步骤的不同之处,不保证能够运行,例子的显示输出结果在eclipse的控制台中显示。

??????? 先说说EJB3.0吧:?

??????? EJB3.0,不需要创建Home和对象接口,不需要组件接口(javax.ejb.SessionBean和javax.ejb.MessageDrivenBean),使用java元数据注释(@?? 其中“?“表示注释名),简化了EJB环境的API。

?????? EJB3.0开发步骤:?????? 1.?编写业务代码,Bean类?????? 2.?生成部署描述符?????? 3.?将2,3打包成Ejb-jar文件?????? 4.?部署Ejb-jar文件到容器,查看EJB容器看是否部署成功?????? 5.?编写执行客户应用?????? 与其相关的小例子:1.创建一个业务接口 Test.java类EJB2.x跟EJB3.0开发步骤的不同之处package?com.ejb.interface
EJB2.x跟EJB3.0开发步骤的不同之处/**
EJB2.x跟EJB3.0开发步骤的不同之处???*?Test的业务接口
EJB2.x跟EJB3.0开发步骤的不同之处???*/
EJB2.x跟EJB3.0开发步骤的不同之处public?interface?Test?{
EJB2.x跟EJB3.0开发步骤的不同之处???????????/**
EJB2.x跟EJB3.0开发步骤的不同之处??????????????*?@return返回成功消息给用户?
EJB2.x跟EJB3.0开发步骤的不同之处??????????????*/
EJB2.x跟EJB3.0开发步骤的不同之处????????????public?String?test();
EJB2.x跟EJB3.0开发步骤的不同之处}

2.创建一个无状态会话bean???? TestBean.java类

EJB2.x跟EJB3.0开发步骤的不同之处package?com.ejb.bean
EJB2.x跟EJB3.0开发步骤的不同之处import?javax.ejb.Remote;
EJB2.x跟EJB3.0开发步骤的不同之处import?javax.ejb.Stateless;
EJB2.x跟EJB3.0开发步骤的不同之处/**
EJB2.x跟EJB3.0开发步骤的不同之处???*?无状态会话Bean
EJB2.x跟EJB3.0开发步骤的不同之处???*/
EJB2.x跟EJB3.0开发步骤的不同之处@Stateless
EJB2.x跟EJB3.0开发步骤的不同之处@Remote(Test.class)
EJB2.x跟EJB3.0开发步骤的不同之处public?class?TestBean?implements?Test?{
EJB2.x跟EJB3.0开发步骤的不同之处????public?String?test()?{
EJB2.x跟EJB3.0开发步骤的不同之处????????System.out.println("test()");
EJB2.x跟EJB3.0开发步骤的不同之处????????return?"------sucess------";
EJB2.x跟EJB3.0开发步骤的不同之处????}
EJB2.x跟EJB3.0开发步骤的不同之处}

3.调用test()方法??? TestClient.java

EJB2.x跟EJB3.0开发步骤的不同之处package?com.ejb.bean.client
EJB2.x跟EJB3.0开发步骤的不同之处import?javax.naming.Context;
EJB2.x跟EJB3.0开发步骤的不同之处import?javax.naming.InitialContext;
EJB2.x跟EJB3.0开发步骤的不同之处/**
EJB2.x跟EJB3.0开发步骤的不同之处?*?调用远程的无状态会话bean
EJB2.x跟EJB3.0开发步骤的不同之处?*/
EJB2.x跟EJB3.0开发步骤的不同之处?public?class?TestClient{
EJB2.x跟EJB3.0开发步骤的不同之处??????public?static?void?main(String[]?args)throws?Exception{
EJB2.x跟EJB3.0开发步骤的不同之处?????/**
EJB2.x跟EJB3.0开发步骤的不同之处?????????*?初始化上下文?jndi
EJB2.x跟EJB3.0开发步骤的不同之处?????????*/
EJB2.x跟EJB3.0开发步骤的不同之处?????Context?c?=?new?InitialContext();?????
EJB2.x跟EJB3.0开发步骤的不同之处?????Test?test?=?(Test)c.lookup("com.ejb.interface.Test");
EJB2.x跟EJB3.0开发步骤的不同之处?????/**
EJB2.x跟EJB3.0开发步骤的不同之处????????*?调用Bean实例的test()方法,并将结果在控制台输出
EJB2.x跟EJB3.0开发步骤的不同之处????????*/
EJB2.x跟EJB3.0开发步骤的不同之处?????System.out.println(test.test());
EJB2.x跟EJB3.0开发步骤的不同之处????????}
EJB2.x跟EJB3.0开发步骤的不同之处?}4.部署描述符EJB2.x跟EJB3.0开发步骤的不同之处<?xml?version="1.0"?encoding="UTF-8"?>
EJB2.x跟EJB3.0开发步骤的不同之处<ejb-jar?version="3.0"?
EJB2.x跟EJB3.0开发步骤的不同之处xmlns="http://java.sun.com/xml/ns/javaee"?
EJB2.x跟EJB3.0开发步骤的不同之处xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?
EJB2.x跟EJB3.0开发步骤的不同之处xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
EJB2.x跟EJB3.0开发步骤的不同之处http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
EJB2.x跟EJB3.0开发步骤的不同之处</ejb-jar>

?

????????? 下面看看EJB2.x的开发步骤吧,看完下面这个就会觉得EJB3.0真的简化了很多啊^_^。

1.远程接口 Test.java

EJB2.x跟EJB3.0开发步骤的不同之处package?com.ejb2.test
EJB2.x跟EJB3.0开发步骤的不同之处/**
EJB2.x跟EJB3.0开发步骤的不同之处?*TestEJB组件的远程接口,
EJB2.x跟EJB3.0开发步骤的不同之处?*/
EJB2.x跟EJB3.0开发步骤的不同之处public?interface?Test?extends?java.ejb.EJBObject{
EJB2.x跟EJB3.0开发步骤的不同之处????//用于返回成功消息的方法
EJB2.x跟EJB3.0开发步骤的不同之处????public?String?test()?throws?java.rmi.RemoteException;
EJB2.x跟EJB3.0开发步骤的不同之处}2.本地接口 TestLocal.javaEJB2.x跟EJB3.0开发步骤的不同之处/**
EJB2.x跟EJB3.0开发步骤的不同之处?*TestEJB组件的本地接口,
EJB2.x跟EJB3.0开发步骤的不同之处?*/
EJB2.x跟EJB3.0开发步骤的不同之处public?interface?TestLocal?extends?java.ejb.EJBLocalObject{
EJB2.x跟EJB3.0开发步骤的不同之处????//用于返回成功消息的方法
EJB2.x跟EJB3.0开发步骤的不同之处????public?String?test();
EJB2.x跟EJB3.0开发步骤的不同之处}3.Home接口 TestHome.javaEJB2.x跟EJB3.0开发步骤的不同之处package?com.ejb2.test
EJB2.x跟EJB3.0开发步骤的不同之处/**
EJB2.x跟EJB3.0开发步骤的不同之处?*TestEJB组件的Home接口,
EJB2.x跟EJB3.0开发步骤的不同之处?×create()()方法方法对应于TestBean中的ejbCreate
EJB2.x跟EJB3.0开发步骤的不同之处?*/
EJB2.x跟EJB3.0开发步骤的不同之处public?interface?TestHome?extends?javax.ejb.EJBHome{
EJB2.x跟EJB3.0开发步骤的不同之处????//创建EJB对象
EJB2.x跟EJB3.0开发步骤的不同之处????Test?create()?throws?java.rmi.RemoteException,javax.ejb.CreateException;
EJB2.x跟EJB3.0开发步骤的不同之处}4.本地Home接口EJB2.x跟EJB3.0开发步骤的不同之处package?com.ejb2.test
EJB2.x跟EJB3.0开发步骤的不同之处/**
EJB2.x跟EJB3.0开发步骤的不同之处?*TestEJB组件的本地Home接口
EJB2.x跟EJB3.0开发步骤的不同之处?*/
EJB2.x跟EJB3.0开发步骤的不同之处public?interface?TestLocalHome?extends?javax.ejb.EJBLocalHome{
EJB2.x跟EJB3.0开发步骤的不同之处????//创建EJB对象
EJB2.x跟EJB3.0开发步骤的不同之处????TestLocal?create()?throws?javax.ejb.CreateException;
EJB2.x跟EJB3.0开发步骤的不同之处}
EJB2.x跟EJB3.0开发步骤的不同之处5.Bean类 TestBean.javaEJB2.x跟EJB3.0开发步骤的不同之处package?com.ejb2.test
EJB2.x跟EJB3.0开发步骤的不同之处/**
EJB2.x跟EJB3.0开发步骤的不同之处?*无状态会话Bean
EJB2.x跟EJB3.0开发步骤的不同之处?*/
EJB2.x跟EJB3.0开发步骤的不同之处public?class?TestBean?implements?javax.ejb.SessionBean{
EJB2.x跟EJB3.0开发步骤的不同之处????private?javax.ejb.SessionContext?ct;
EJB2.x跟EJB3.0开发步骤的不同之处????//EJB规范要求的实现
EJB2.x跟EJB3.0开发步骤的不同之处????public?void?ejbCreate(){
EJB2.x跟EJB3.0开发步骤的不同之处????????System.out.println("ejbCreate()");
EJB2.x跟EJB3.0开发步骤的不同之处????}
EJB2.x跟EJB3.0开发步骤的不同之处????public?void?ejbRemove(){
EJB2.x跟EJB3.0开发步骤的不同之处????????System.out.println("ejbRemove()");
EJB2.x跟EJB3.0开发步骤的不同之处????}????
EJB2.x跟EJB3.0开发步骤的不同之处????public?void?ejbActivate(){
EJB2.x跟EJB3.0开发步骤的不同之处????????System.out.println("ejbActivate()");
EJB2.x跟EJB3.0开发步骤的不同之处????}????
EJB2.x跟EJB3.0开发步骤的不同之处????public?void?ejbPassivate(){
EJB2.x跟EJB3.0开发步骤的不同之处????????System.out.println("ejbPassivate()");
EJB2.x跟EJB3.0开发步骤的不同之处????}????
EJB2.x跟EJB3.0开发步骤的不同之处????public?void?setSessionContext(javax.ejb.SessionContext?ct){
EJB2.x跟EJB3.0开发步骤的不同之处??????this.ct=ct;
EJB2.x跟EJB3.0开发步骤的不同之处????}????
EJB2.x跟EJB3.0开发步骤的不同之处????//业务方法
EJB2.x跟EJB3.0开发步骤的不同之处????public?String?test(){
EJB2.x跟EJB3.0开发步骤的不同之处????????System.out.println("test()");
EJB2.x跟EJB3.0开发步骤的不同之处????????return?"--------sucess---------";
EJB2.x跟EJB3.0开发步骤的不同之处????}
EJB2.x跟EJB3.0开发步骤的不同之处}6.EJB应用 TestClient.javaEJB2.x跟EJB3.0开发步骤的不同之处package?com.ejb2.test
EJB2.x跟EJB3.0开发步骤的不同之处/**
EJB2.x跟EJB3.0开发步骤的不同之处?*客户端代码,调用TestEJB组件中的业务方法
EJB2.x跟EJB3.0开发步骤的不同之处?*/
EJB2.x跟EJB3.0开发步骤的不同之处?public?class?TestClient{
EJB2.x跟EJB3.0开发步骤的不同之处?
EJB2.x跟EJB3.0开发步骤的不同之处?public?static?void?main(String[]?args)throws?Exception{
EJB2.x跟EJB3.0开发步骤的不同之处?????//设定jndi属性信息
EJB2.x跟EJB3.0开发步骤的不同之处?????Properties?pp?=?System.getProperties();
EJB2.x跟EJB3.0开发步骤的不同之处?????}???
EJB2.x跟EJB3.0开发步骤的不同之处?????//初始化上下文
EJB2.x跟EJB3.0开发步骤的不同之处?????Context?ct?=??new?InitialContext(pp);
EJB2.x跟EJB3.0开发步骤的不同之处?????//引用到Home对象,创建EJB对象工厂
EJB2.x跟EJB3.0开发步骤的不同之处?????Object?obj?=?ct.lookup("package?com.ejb2.test.TestHome");
EJB2.x跟EJB3.0开发步骤的不同之处?????//?转换成RMI-IIOP对象操作
EJB2.x跟EJB3.0开发步骤的不同之处?????TestHome?th?=?(TestHome)javax.rmi.PortableRemoteObject.narrow(obj,TestHome.class);
EJB2.x跟EJB3.0开发步骤的不同之处?????//创建Home?EJB对象
EJB2.x跟EJB3.0开发步骤的不同之处?????Test?test?=?test.create();
EJB2.x跟EJB3.0开发步骤的不同之处?????//调用EJB对象的test()方法,并在控制台显示结果
EJB2.x跟EJB3.0开发步骤的不同之处?????System.out.println(test.test());]
EJB2.x跟EJB3.0开发步骤的不同之处?????//销毁EJB对象
EJB2.x跟EJB3.0开发步骤的不同之处?????test.remove();
EJB2.x跟EJB3.0开发步骤的不同之处}
7.部署描述符EJB2.x跟EJB3.0开发步骤的不同之处<?xml?version="1.0"?encoding="UTF-8"?>
EJB2.x跟EJB3.0开发步骤的不同之处<ejb-jar?version="3.0"?
EJB2.x跟EJB3.0开发步骤的不同之处xmlns="http://java.sun.com/xml/ns/j2ee"?
EJB2.x跟EJB3.0开发步骤的不同之处xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?
EJB2.x跟EJB3.0开发步骤的不同之处xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
EJB2.x跟EJB3.0开发步骤的不同之处http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
EJB2.x跟EJB3.0开发步骤的不同之处?<enterprise-Beans>
EJB2.x跟EJB3.0开发步骤的不同之处???<session>
EJB2.x跟EJB3.0开发步骤的不同之处????????<ejb-name>TestEJB</ejb-name>
EJB2.x跟EJB3.0开发步骤的不同之处????????<home>com.ejb2.test.TestHome</home>
EJB2.x跟EJB3.0开发步骤的不同之处????????<local-home>com.ejb2.test.TestLocalHome</local-home>
EJB2.x跟EJB3.0开发步骤的不同之处????????<local>com.ejb2.test.Testbean</local>
EJB2.x跟EJB3.0开发步骤的不同之处????????<session-type>Stateless</session-type>
EJB2.x跟EJB3.0开发步骤的不同之处????????<transaction-type>Container</transaction-type>
EJB2.x跟EJB3.0开发步骤的不同之处????</session>?
EJB2.x跟EJB3.0开发步骤的不同之处?</enterprise-Beans>????
EJB2.x跟EJB3.0开发步骤的不同之处</ejb-jar>

?

??????? 是不是发现EJB3.0的开发步骤简化了许多呢,我刚接触EJB2.1的时候,开它的开发步骤看的我晕乎乎的,不过幸好当时边做项目边学它,很快就把它的开发步骤给弄通了,当我接触到EJB3.0的时候,就放开始学习3.0而把2.1的学习基本上放弃了。个人认为,即使以前没有接触过EJB2.x,也不影响你学习EJB3.0,没有接触过EJB的人,完全可以直接学习EJB3.0,而不用先学EJB2.x在学EJB3.0。????

??????? 3.0用业务接口来代替本地和远程的Home接口,本地客户和远程客户都通过业务接口调用EJB组件的业务方法。在调用EJB Bean类的业务方法时也做了改变,调用EJB Bean类的业务方法前,EJB容器会生成包裹类,调用EJB Bean类的业务方法前后,都会通过EJB容器成生的包裹类调用容器专有的API来获得中间件服务。

热点排行