一、开发EJB的步骤

第一大步:开发编译业务接口和Bean类

(1) 编写业务接口和Bean类

(2) 编译

第二大步:打包部署到JNDI服务器

(3) 提供部署描述文件

(4) 打包(编译后的字节码文件和部署描述文件)成ejb-jar

(5) 部署ejb-jar到容器

第三大步:测试

(6) 检测部署是否成功(看容器是否发现)

(7) 识别客户端程序来调用EJB

业务接口(Business Interface):

(1) 对客户端暴露可以调用的方法,它是一个普通的Java接口,POJO类,或POJI。

(2) 业务接口可以划分为两类:A、远程业务接口

B、本地业务接口

如果客户端和EJB运行在同一个JVM中,我们应该用本地接口,否则只能用远程业务接口。

二、EJB的编程模型和编程涉及的标注

Bean类(The Bean Class):

(1) Bean类也是一个POJO,实现了业务接口中的方法

(2) 在Bean类中一般带有标注(Annotation),用于代替传统的部署描述文件

@stateless 无状态(标注该类是一个无状态的会话Bean)

@Remote(XXX.class)(标注该Bean类的业务接口是XXX.class)

(3) Bean类要有缺省的构造方法

(4) Bean类可以不实现业务接口(因为标注已经说明),不过建议实现

(5) ejb-jar.xml(Optional)标准的部署描述文件

我们可以用EJB3.0中的标注来代替对描述文件的编写。

EJB3.0使用了JAVA SE 5.0 中的注释新特性,只要在方法上写EJB规范的注释,就可以不用来写标准的部署表述,ejb-jar.xml这个要放到jar文件的mate-inf文件夹里。

<?xml version="1.0" encoding="UTF-8"?>

<ejb-jar   xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   metadata-complete="true" version="3.0"   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">

<enterprise-beans>

<session>

<display-name>HelloBean</display-name>

<ejb-name>HelloBean</ejb-name>

<business-remote>test.HelloRemote</business-remote>

<ejb-class>test.HelloBean</ejb-class>

<session-type>Stateless</session-type>

<transaction-type>Container</transaction-type>

<security-identity>

<use-caller-identity/>

</security-identity>

</session>

</enterprise-beans>

</ejb-jar>

EJB Client(客户端):

(1) EJB不能够被客户端直接访问,客户端必须通过业务接口来调用EJB

(2) EJB客户端分为两类:

A、EJB客户端与EJB运行在同一个容器中→本地业务接口

B、EJB客户端与EJB运行在不同的JVM中→远程业务接口

EJB 容器(EJB Container):

(1) EJB容器是一个运行在JVM上的程序

(2) EJB容器为EJB提供中间件服务。

EJB客户端的编程步骤:

1、运行客户端前要加上在SUN的服务器文件夹中的lib下的javaee.jar和appserv-rt.jar

Tips:Java Runtime相关的包:javaee.jar(Java EE),appserw-rt.jar(Java 运行时) ,appserv-ws.jar appserv-jwsacc.jar(Web Service)

2、配置系统的JNDI的环境(客户端所依赖的Object和Sun运行环境)

3、写测试类,注意在测试类中也要有业务接口

Step1:设置JNDI服务器入口信息( system.setProperty)

Step2:初始化上下文

Step3:查找JNDI服务器的Stub

Step4:调用对象

EJB调用过程:

(1) EJB容器将Stub绑定到JNDI服务器上,JNDI上使用的绑定(默认情况下)是远程业务接口的全限定名。

(2) 客户端通过上下文(Context)的方法来查找JNDI服务器上绑定的Stub。

在厂商的部署描述中可以配置EJB的实例池,可以一次创建多个EJB的实例。

注意:EJB一定要先部署到服务器,EJB需要部署环境才能运行

EJB客户端

public class Cilent {

public static void main(String[] args) throws NamingException {

System.setProperty("jndi.factory","com.sun.jndi.cosnaming.CNCtxFactory");

System.setProperty("jndi.provider.url","corbaloc::localhost:3007/NameSpace");

Context ctx=new InitialContext();

HelloRemote hello=(HelloRemote)ctx.lookup("test.HelloRemote");

System.out.println(hello.hello());

System.out.println(hello.helloword("lichen"));

}

}

注意:在写客户端时,要引入javaee.jar和appser-rt.jar还要引入已经编译好的EJB的jar文件。

EJB-02:EJB开发流程相关推荐

  1. SOPC设计02——硬件系统开发流程

    硬件系统开发流程 一.NiosII工程建立步骤 打开quartus 18.1软件建立工程 在工程中建立图形文件后缀名是***".bdf"***文件 在tools->platf ...

  2. 【愚公系列】2022年02月 U3D全栈班 002-Unity游戏结构和游戏开发流程

    文章目录 一.Unity游戏结构 二.Unity开发流程 三.Unity3D的Helloworld 1.纯拖界面的Helloworld 2.Unity3D脚本的Helloworld 总结 一.Unit ...

  3. 网站开发流程-WEB开发的流程

    网站开发流程-WEB开发的流程 web开发流程概括 1.)项目的角色划分 如果不包括前期和后期的市场推广及销售人员,开发团队一般可以划分为项目负责人.程序员.美工三个角色. 项目负责人习惯称为项目经理 ...

  4. web开发流程 - 网上商城示例

    一.需求确定 1:通过各种手段确定系统的功能与性能    1)功能:注册.浏览.搜索...    2)性能:可同时支持n个并发访问,并且响应时间不低于m毫秒...    3)手段:头脑风暴(brain ...

  5. 再聊机器人设计:如何加速开发流程?

     01 一套机械臂系统引发的思考  想让机器人与人类配合无间,或许是机器人领域里最难做的事了. 近日,来自加拿大舍布鲁克大学的研究人员开发出了一种固定在腰间的机械臂系统,它可以帮助你完成多种任务. 包 ...

  6. 某银行软件中心产品开发流程

    Technorati 标签: CMMI,过程改进,开发流程 根据瀑布式的软件开发模型,博科公司软件产品的开发流程分为几个阶段:售前阶段.需求分析.系统设计.系统实现.系统测试.验收测试.推广和维护. ...

  7. 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(一) 嵌入式Linux开发基本概念以及开发流程介绍

    文章目录 1.linux开发初了解 1.1 嵌入式Linux开发的基本概念 1.1.1关于Git的背景介绍 1.1.2关于repo的背景介绍 1.1 3 一些关于此背景知识的介绍 1.1.4关于Lin ...

  8. 3000字梳理大数据开发流程及规范(建议收藏)

    在大数据时代,规范地进行数据资产管理已成为推动互联网.大数据.人工智能和实体经济深度融合的必要条件.贴近业务属性.兼顾研发各阶段要点的研发规范,可以切实提高研发效率,保障数据研发工作有条不紊地运作.而 ...

  9. 虚拟现实项目开发流程

    http://www.unitymanual.com/thread-31034-1-1.html 本文介绍虚拟现实项目开发流程,共大家参考与学习,也希望各位提出意见...通过将现实中真实存在的构建在虚 ...

  10. 【VR】虚拟现实项目开发流程

    http://www.unitymanual.com/forum.php?mod=viewthread&tid=31034  原文出自游戏蛮牛 本文介绍虚拟现实项目开发流程,共大家参考与学习, ...

最新文章

  1. Java学习总结:7
  2. SQL Server的WAITFOR DELAY注入
  3. 【FJOI2015】最小覆盖双圆问题
  4. windows 10占用cpu和内存过高
  5. python 单线程_python的单线程多任务的实现
  6. [译]提案:在Go语言中增加对持久化内存的支持
  7. 好看的php表格样式,CSS_CSS实现的清爽、漂亮的表格样式分享,效果: 实现代码:复制代码 - phpStudy...
  8. 集宁哪有计算机培训班,集宁区有这么一个空间,叫共享自习室
  9. 36. Web 主机托管
  10. 开机未发现nvidia控制面板_Nvidia控制面板打不开,怎么办?
  11. 敏捷开发模式下的BA岗
  12. 数据结构与算法面试题80道
  13. 2021年美赛准备大全
  14. sin的傅里叶变换公式_正弦信号傅里叶变换
  15. 国美易卡依托大数据平台提供便捷服务
  16. 5操作系统的运行机制和体系结构
  17. Android studio通过科大讯飞的SDK实现文字转语音功能
  18. 图像处理——使用模板对矩阵进行中值滤波(中值滤波模板)
  19. 实验内容:编写程序,模拟抓狐狸小游戏。假设一共有一排5个洞口,小狐狸最开始的时候在其中一个洞口,然后玩家随机打开一个洞口,如果里面有狐狸就抓到了。如果洞口里没有狐狸就第二天再来抓,但是第二天狐狸会在
  20. IPv6技术精要(第2版)Rick Graziani

热门文章

  1. 交换机芯片vlan管理
  2. 真香警告!java时间格式转换工具
  3. PLECS的热模型无法导入的解决办法
  4. CentOS7系统中:安装tree命令的问题
  5. win7下装linux虚拟机,win7怎么在虚拟机安装linux系统|win7搭建linux虚拟机的方法
  6. 征信报告HTML文件修改,征信记录竟然可以修改!
  7. iOS AVPlayer的那些坑
  8. 自动脚本 android,原神自动脚本全功能版
  9. 遥感计算机的分类原理,遥感图像的计算机分类
  10. 我的世界java安装_我的世界游戏安装教程 我的世界怎么安装