【J2EE】在项目中理解J2EE规范
J2EE平台由一整套服务(Service),应用程序接口(API)和协议构成,它对开发企业级应用提供了功能支持.13个核心技术各自是JDBC, JNDI, EJB, RMI, JSP, SERVLET, XML, JMS, JAVAIDL/CORBA, JTS, JTA, JAVAMAIL和 JAF.
何为企业级应用?
1.数据量特别大.
2.用户特别多.
3.性能要求高.
4.安全性要求高.
5.生命周期长.
这时候我们就要考虑数据存储和查询的问题,系统訪问快慢即性能问题,怎样使用事务保证安全的问题,怎样使系统可扩展易维护的问题.这就要用到分布式,涉及远程方法调用,服务通信,事务和服务等技术,也就是EJB, RMI, JNDI, JTA等.
J2EE提供了一个框架-一套标准接口,用于开发分布式结构的应用,但它并没有提供实现.接口的意义在于让不同的厂商由于遵循共同的接口而全然解除依赖关系.举个样例,一个仅仅能装5号电池的手电筒,能够装不同牌子的5号电池.有了5号电池的规范,生产手电筒和电池的厂商就能够各自生产了.J2EE提供接口之后,第三方厂商或专注于整个J2EE架构中的特定组件,如Apache的Tomcat,实现了JSP和Servlet;或对J2EE规范提供了一个较为完整的实现,如JBoss和BEA公司的WebLogic.
J2EE包括的容器大概有这么几类:
Web容器
EJB容器
Applet Client容器
Application Client容器
如图所看到的.
所以,Tomcat实际上是Web容器,包括JSP容器和Servlet容器.JBoss和WebLogic是Web容器和EJB容器.这两年JBoss非常火.我们已经非常熟悉当前布在JBoss上的ITOO项目.JBoss和J2EE帮助我们处理了大量常规的编程任务,如提供事务服务,安全领域,可靠的消息,名称和文件夹服务,数据库訪问和连接池,线程池,集群,负载均衡和容错处理等.
我们来看看诸如JDBC和EJB等技术详细是怎样为我们的分布式应用提供支持的.
JDBCAPI以一种统一的方式来对各种数据库进行存取.这是一个统一的接口,屏蔽掉了不同数据库的特性.不知道朋友们是否还记得最初使用JDBC时写的代码,得到Connection和statement...我们还使用了连接池,从连接池中拿到连接,管理连接.我们的数据持久层使用了Hibernate,而Hibernate是JPA规范的实现.前面J2EE的13个规范中并没有提到JPA,这里要补充一点,J2EE规范并不仅仅有13个,这13个仅仅是人们经常使用的.正如设计模式不止23个一样,我们仅仅是最经常使用这些罢了.JPA封装了JDBC,所以我们系统中用好Hibernate而不用关心JDBC了.
EJB在J2EE规范中属于被广泛应用的.它提供了开发和实施分布式商务逻辑的框架,定义了EJB组件在何时怎样与他们的容器进行交互作用.EJB容器负责提供公共服务如文件夹服务,事务管理,资源缓冲池等.
JNDI被用于执行名字和文件夹服务.怎么理解呢,它提供了一个一致的模型来存取和操作企业级的资源(DNS和LDAP),本地文件系统或应用server中的对象.我们所写的EnterpriseJavaBeans对象实例执行在EJB容器中,下面代码范例就是使用JNDI查找应用server中的对象,这里的应用server是异于本地的应用server.
基础系统的spring-mvc.xml文件里配置了例如以下bean.
<jee:jndi-lookup id="InstitutionBean"
jndi-name="ejb:itoo-basic-institution-ear/itoo-basic-institution-core-0.0.1-SNAPSHOT/InstitutionBean!com.tgb.itoo.basic.service.InstitutionBean"
>
</jee:jndi-lookup>
其它系统远程调用基础系统的该接口,使用JNDI查找就可以
/**
* 获得全部学院
*/
@Override
public List<Institution> getAllColleageInfo() {
InstitutionBean institutionBean = null;
try {
institutionBean = (InstitutionBean) this
.lookupRemoteBean("itoo-basic-institution-ear/itoo-basic-institution-core-0.0.1-SNAPSHOT/InstitutionBean!com.tgb.itoo.basic.service.InstitutionBean");
} catch (NamingException e) {
e.printStackTrace();
}
return institutionBean.queryAllColleage();
}
J2EE的博大精深还非常值得我们去研究,项目驱动是我们是我们越来越深入的良好模式.随后我们一起探索EJB的伟大之处.
【J2EE】在项目中理解J2EE规范的更多相关文章
- J2EE web项目中解决所有路径问题
Java中使用的路径,分为两种:绝对路径和相对路径.归根结底,Java本质上只能使用绝对路径来寻找资源.所有的相对路径寻找资源的方法,都不过是一些便利方法.不过是API在底层帮助我们构建了绝对路径,从 ...
- 从项目中理解SSM框架
我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教学课堂中,也会把SSH作为最核心的教学内容. 但是,我们在实际应用中发现,SpringMVC可以完全替代Struts,配 ...
- 从项目中理解let和const为什么如此重要
变量声明 变量声明方式 伴随js诞生的var // 语法 var varName = value var a = 1 // 这样子你就得到了一个变量 var缺陷场景分析 var specialUser ...
- Ant在Java项目中的使用(一眼就看会)
参考:http://www.cnblogs.com/zhengqiang/p/5557155.html Ant是跨平台的构建工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将A ...
- 使用SeasLog打造PHP项目中的高性能日志组件(一)
云智慧(北京)科技有限公司 高驰涛 什么是SeasLog SeasLog是一个C语言编写的PHP扩展,提供一组规范标准的功能函数,在PHP项目中方便.规范.高效地写日志,以及快速地读取和查询日志. 为 ...
- J2EE项目中异常处理
为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”.笔者在初学java时也是这样认为的.如何在一个多层的j2e ...
- (转)J2EE中13个规范
今天在做连接oracle数据库的时候,感受到了什么是规范.平时听到别人说学习j2ee一定要学习他的十三个规范,大概的知道每个规范是做什么的,每个“接口”是做什么的. 很早就听过 ...
- J2EE项目中后台定时运行的程序
转自:http://www.2cto.com/kf/201311/260676.html 在开发J2EE项目中,有时候需要在后台定时执行一些代码. 比如定时对web数据建立倒排索引.定时发送邮件.定时 ...
- J2EE开源项目
这篇文章写在我研究J2SE.J2EE近三年后.前3年我研究了J2SE的Swing.Applet.Net.RMI.Collections.IO.JNI……研究了J2EE的JDBC.Sevlet.JSP. ...
随机推荐
- 福利贴——爬取美女图片的Java爬虫小程序代码
自己做的一个Java爬虫小程序 废话不多说.先上图. 目录命名是用标签缩写,假设大家看得不顺眼能够等完成下载后手动改一下,比方像有强迫症的我一样... 这是挂了一个晚上下载的总大小,只是还有非常多由于 ...
- 一次误报引发的DNS检测方案的思考:DNS隧道检测平民解决方案
摘自:http://www.freebuf.com/articles/network/149328.html 通过以上分析得出监控需要关注的几个要素:长域名.频率.txt类型.终端是否对解析ip发起访 ...
- 手机验证 发送验证码倒计时js
html: <input name="Tel" class="weui-input" type="tel" placeholder=& ...
- Pycharm在创建py文件时,如何自动添加默认文件头注释?
PyCharm是一款很好用的编写Python工程的IDE,用PyCharm创建一个Python文件或者向工程添加一个.py文件时,为了更好的使所编写的代码在各操作环境更好的运行,我们往往需要在.py文 ...
- MyBatis多参数传递之注解方式示例--转
原文地址:http://legend2011.blog.51cto.com/3018495/1015003 若映射器中的方法只有一个参数,则在对应的SQL语句中,可以采用#{参数名}的方式来引用此参数 ...
- 使用goroutine+channel和java多线程+queue队列的方式开发各有什么优缺点?
我感觉很多项目使用java或者c的多线程库+线程安全的queue数据结构基本上可以实现goroutine+channel开发能达到的需求,所以请问一下为什么说golang更适合并发服务端的开发呢?使用 ...
- 05-数据类型转换(bool转换)
05-数据类型转换(bool转换)
- struts2.x + Tiles2.x读取多个xml 配置文件
在web.xml中配置如下即可: <context-param> <param-name>org.apache.tiles.impl.BasicTilesContainer.D ...
- KVM硬件辅助虚拟化之 EPT in Nested Virtualization
在嵌套虚拟环境(Nested Virtualization)下,执行在hypervisor上的Virtual Machine仍能够作为hypervisor去执行其他的Virutal Machine,而 ...
- Spark技术内幕:Client,Master和Worker 通信源代码解析
Spark的Cluster Manager能够有几种部署模式: Standlone Mesos YARN EC2 Local 在向集群提交计算任务后,系统的运算模型就是Driver Program定义 ...