EJB3.0学习心得

EJB3.0学习心得

Enterprise JavaBean

一、EJB3.0的特点

EJB3.0的一个关键目标就是简化开发人员的工作

简化的EJB

EJB3.0不再需要home接口,bean类不需要再实现javax.ejb.EnterpriseBean接口,EJBbean类可以是一个纯粹的java(常被称作POJO-plain old java object),它所继承的接口可以是一个简单的商业接口。

注解取代部署描述符

部署描述符被元数据注解所取代,元数据描述符可以用来指定bean的类型、事务、安全性、O-R映射、环境注射(injection)以及资源引用等属性。部署描述符可以override元数据注解。

从属注射(Dependency injection

简化了lookup API和资源引用的使用,取而代之的是从属注射模式,元数据注解被用来表达从属注射模式。

简化的JNDI lookup方法

EJBlookup方法被简化了,客户端可以直接调用EJB中的方法,不再需要调用EJBcreate方法先生成一个bean的实例。

拦截者(interceptors)

拦截者是一个拦截商业方法请求(invocation)的方法,它可以定义在无状态的session bean,有状态的session bean或者消息驱动bean中,在同一个类中也可以用拦截者类代替拦截者方法。

增强的查询语言

EJB3.0极大的增强了实体bean的查询能力,增加了很多操作,比如块更新、块删除、JOIN操作、GROUP BY HAVING,projection以及子查询等,EJB-QL得到了许多增强,EJB-QL也支持动态查询。

二、采用EJB架构的目标

减轻直接操作底层数据库的工作量 

   为企业级开发引入了面向对象/面向服务的开发架构 

   数据对象生命周期的自动管理 

   分布式能力 

   集成/声明式的安全/事务管理

三、什么时候不使用?

小的项目中尽量不用;

没有多台服务器并行操作的情况下也不要用,平白增加网络开销;

负载压力不大的情况下也不要用,反而会比一般的java bean还慢;

没有有j2ee经验的团队参与项目的情况下也不要用,会把项目搞得一团糟,使用j2ee需要一到两年的磨合,这也是j2ee的缺陷。

四、什么时候使用?

如果业务逻辑很many()时;

如果安全性要求很high()时;

如果与数据库交流特frequency(频繁)时;

如果不想很quickly()拿下项目时;

如果客户想花more money

五、EJB运行机制

六、搭建EJB3.0开发环境工具

工欲善其事,必先利其器

工具

开发工具:

Eclipse3.2+MyEclipse5.0

NetBean5.5

EJB容器:jboss-4.0.4.GA

JDK版本:JDK1.5以上(JDK1.4不支持)

七、搭建EJB3.0开发环境配置

JBOSSMyEclipse集成

Window->Preferences->MyEclipse->Application Servers->JBoss4

选中Enable

Jboss home directory:选择JBOSS的安装目录

Server Name : all

八、需要的包

创建EJB需要的包:

jboss-ejb3x.jar

jboss-annotations-ejb3.jar

访问EJB需要的包:

jbossall-client.jar

jboss-aop-jdk50.jar

jboss-aspect-library-jdk50.jar

jboss-ejb3.jar

九、体验一个EJB—无状态会话Bean

1、暴露业务方法的接口

表面上只是一个简单的接口而已,功能等同于EJB2.0中的远程接口.

代码:

package com.impl;

 

public interface HelloIm {

  public String haha(String msg);

}

2、实现业务的EJB核心类

表面上只是一个POJO,的确,除去元注释不谈,看起来就像是一个包含业务逻辑的javabean.

代码:

package com.shixian;

 

import javax.ejb.Remote;

import javax.ejb.Stateless;

 

import com.impl.HelloIm;

@Remote({HelloIm.class})

@Stateless

public class Helloshixian implements HelloIm {

 

  public String haha(String msg) {

     // TODO Auto-generated method stub

     return msg+" "+"说:你好,哈哈哈";

  }

 

 

3、实现业务的EJB核心类解释

@Stateless

定义一个无状态会话BEAN

@Remote({HelloIm.class})

定义一个远程接口,参数是指实现的接口名称

 

4、将EJB打包

创建好EJB,必须打包,生成*.jar文件.

打包方法:

File->Export->Java->Jar file

选择要打包的文件,实际上就是前面创建的接口和类.

选择输出路径

一路”next”,完成

5、在EJB容器中发布EJB

所谓的发布就是将EJB打包后复制到指定目录下,EJB容器在启动时会自动部署.JBOSS4.0支持热部署.

 

jar文件复制到下面的目录中:

{Jboss安装目录}/server/all/deploy

6、查看EJBJNDI名称

如果没有为EJB明确指定用于定位EJBJNDI名称,Jboss会自动生成一个.

查看JNDI名称的方法:

启动Jboss管理页:

http://localhost:8080/jmx-console

jboss -> service=JNDIView -> List of MBean operations -> Global JNDI Namespace

缺省的JNDI名称组成:

远程接口 : EJB类名/remote

本地接口 : EJB类名/local

7、访问EJB—测试EJB

可以在任何客户端访问EJB,但需要相关包的支持(前面已有说明)

,通过Application访问EJB

   //调用远程方法

          Properties props = new Properties();

          props.setProperty("java.naming.factory.initial",

          "org.jnp.interfaces.NamingContextFactory");

          props.setProperty("java.naming.provider.url", "localhost:1099");

          props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");

 

          Context ctx = new InitialContext(props);

          HelloIm hw = (HelloIm) ctx.lookup("HelloWorldBean/remote");

          System.out.println(hw.haha("李赞红"));

说明

Context ctx = new InitialContext(props);用于设置访问JNDI的上下文环境

ctx.lookup(“HelloWorldBean/remote”);根据JNDI的名称访问EJB,返回接口引用,该接口引用其实就是一个存根(stub),通过该接口引用调用EJB中的业务方法

O(_)O哈哈~,以上,望指正。谢谢!!!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值