使用Eclipse+GlassFish构建简单EJB
EJB,即企业级JavaBean。它是一个标准,而不是一个产品。其存在的目的是为后台开发人员提供一个标准的开发标准。它主要分成SessionBean,EntityBean和MessageDrivenBean。简而言之就是**服务器端**的一个标准。
在开发中我们需要先创建一个EJB项目,并在此EJB项目的ejbModule下创建一个带包名的SessionBean。然后在这个SessionBean中可以实现它的远程接口和本地接口,(以远程调用方式发布或者以本地调用方式发布)给出具体处理逻辑。当客户端和EJB位于同一JVM下时将进行本地调用或者远程调用,而当客户端和EJB位于两个不同的JVM时将必须通过远程调用的方式处理。
远程调用EJB,客户端拥有的是一个EJB的拷贝,调用是以值传递的方式进行的。具体见下图所示(盗图求原谅)通过远程方式调用时,传递的参数若是一个PoJo类,则其必须实现序列化接口,以字节码方式传递参数,而使用本地调用则相应的PoJo类可以不必实现序列化接口。
远程调用因为客户端和服务器不在同一个JVM上,就涉及到诸多有关分布式系统中的概念,如存根,骨架等,这些概念可以自行查找理解。
本地调用EJB是以传地址方式进行的。
远程调用与本地调用相比多了建立socket连接和将参数序列化进行传输和在服务器端将参数进行反序列化的过程,因此,远程调用比本地调用的开销要大很多。
上面搞清楚了EJB的远程调用和本地调用的区别和联系。
①下图是创建的第一个项目,是一个EJB项目,里面创建一个Session Bean,实现本地接口和远程接口,并给出相应的处理逻辑:
EJB项目结构图
SessionBean本地接口
SessionBean远程接口
SessionBean具体实现
②以远程调用为例,创建第二个项目,它是一个DWeb项目,实现远程调用EJB。
首先BuildPath中引入我们的HelloEJB项目,具体作用就是导入jar包啊,通过buildpath方式引入jar只是将指针指向存放jar包的位置,在同一台电脑中没有问题,在不同电脑中则会找不到资源。在不同电脑中通过lib中引入jar包的方式导入jar。
然后在src下建立一个java类,目的是在DWeb中实现对EJB的SessionBean的调用,通过实例化一个SessionBean的对象来调用该对象的接口实现功能。例子如下:
接着,在DWeb项目的WebContent下建一个JSP页面,来实例化一个我们刚刚在src目录下创建的类,来将调用结果展现在页面上:
③最后,再创建一个Enterprise Application Project,将上面的EJB和DWeb项目进行整合发布,这样我们在部署时就不需要将我们的EJB项目HelloEJB和我们的DWeb项目两个项目发布(设想一下,要是有多个EJB项目和多个DWeb项目,这样的发布必然是麻烦的,而且容易出现问题的),创建的过程如下图所示:
创建完成时,记得在Modules目录下面将上述两个项目引入,这样在部署在服务器上的时候只需要将最后第三个企业级项目部署即可:
综上,就完成了一个简单的EJB项目啦哈哈哈,这是在学习学校开设的WEB服务技术与应用课上所学的知识,自己学识尚浅,还会将EJB这方面进行深度的学习并且更新相关博文!!!
使用Eclipse+GlassFish构建简单EJB相关推荐
- eclipse创建神经网络_使用Eclipse Deeplearning4j构建简单的神经网络
eclipse创建神经网络 神经网络导论 深度学习包含深度神经网络和深度强化学习,它们是机器学习的子集,而机器学习本身就是人工智能的子集. 广义地说,深度神经网络执行机器感知,该机器感知从原始数据中提 ...
- 使用Eclipse Deeplearning4j构建简单的神经网络
神经网络导论 深度学习既包含深度神经网络又包含深度强化学习,这是机器学习的子集,而机器学习本身就是人工智能的子集. 广义上讲,深度神经网络执行机器感知,该机器感知从原始数据中提取重要特征,并对每个观察 ...
- eclipse maven 构建简单springmvc项目
环境:eclipse Version: Oxygen.3a Release (4.7.3a) 创建maven Project项目,目录结构 修改工程的相关编译属性 修改pop.xml,引入spring ...
- Android 第三课 构建简单的用户界面
构建简单的用户界面 上一课下一课 该课程教你 创建线性布局 添加文本框 添加字符串资源 添加按钮 使输入框宽度充满整个屏幕 你也应该阅读 布局 Android的图形用户界面通过 View 和 View ...
- Eclipse GlassFish 5.1就在这里!
Eclipse GlassFish 5.1的发布是Jakarta EE的重要里程碑! 首先,这证实了Oracle提供的GlassFish源代码可以在Eclipse Infrastructure上构建和 ...
- 【SUMO】一文学会构建简单的交通路网仿真模拟器
系列文章目录 最近在做一个自动驾驶的项目,实验的时候需要用到SUMO跑仿真,于是就去学习了一下SUMO. 本文将手把手教你使用SUMO构建简单的城市道路交通模拟器. 笔者将会构建一个长1000m单向5 ...
- 如何仅使用HTML和JavaScript构建简单的URL缩短器
by Palash Bauri 由Palash Bauri 如何仅使用HTML和JavaScript构建简单的URL缩短器 (How to build a simple URL shortener w ...
- R语言使用lmPerm包应用于线性模型的置换方法(置换检验、permutation tests)、使用lm模型构建简单线性回归模型、使用lmp函数生成置换检验回归分析模型
R语言使用lmPerm包应用于线性模型的置换方法(置换检验.permutation tests).使用lm模型构建简单线性回归模型.使用lmp函数生成置换检验回归分析模型(Permutation te ...
- 分布式计算Hadoop系列之如何Eclipse中构建Hadoop项目
前言 之前根据Hadoop官方文档对HDFS.MapReduce的架构.配置管理等进行了学习,但某些地方官方文档讲解的比较模糊.做过开发的人都能够体会,官方文档有些类似业务规则或者要求,而真正的细节还 ...
最新文章
- 设置VSCode代码编辑器右侧的Minimap代码缩略图滚动条切换显示、隐藏的快捷键Alt+M
- 《c++语言导学》——1.7 常量
- linux之文件基本操作学习笔记
- Operation category READ is not supported in state standby
- layui select 修改_layui修改select的值的方法
- ETL异构数据源Datax_使用数据分片提升同步速度_05
- python实现抢劵_用Python实现微信自动化抢红包,再也不用担心抢不到红包了
- OpenShift 4 - DevSecOps - 视频
- 前端如何实现网络速度测试功能_如何通过fiddler的断点功能,来实现不同场景的测试...
- 2013-09-16 构建C1000K的服务器(1) – 基础
- SnagIt - 专业的截图工具
- FANUC服务器维修,FANUC系统401报警维修处理
- tp5模型belongsTo和hasOne以及hasMany的区别与用法
- 【1401】机器翻译
- 阿里云ecs服务器安装RabbitMQ
- 捋一捋python日期时间处理(下)
- 银行中台与互联网中台有什么不同?该怎么建?
- USB声卡噪音问题,USB声卡中文名设置,基于STM32F411
- P2071 座位安排(二分图最大匹配)
- Extremely hard RSA 低加密指数攻击