【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. ...
随机推荐
- python批量下载色影无忌和蜂鸟的图片 爬虫小应用
有些冗余信息.由于之前測试正則表達式.所以没有把它们给移走.只是不影响使用. # -*- coding:utf-8 -*- import re,urllib,sys,os,time def getAl ...
- JAVA输出带BOM的UTF-8编码的文件
当从http 的response输出CSV文件的时候,设置为utf8的时候默认是不带bom的,可是windows的Excel是使用bom来确认utf8编码的,全部须要把bom写到文件的开头. 微软在 ...
- hdoj--1312--Red and Black(dfs)
Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- mysql InnoDB引擎 共享表空间和独立表空间(转载)
PS:innodb这种引擎,与MYISAM引擎的区别很大.特别是它的数据存储格式等.对于innodb的数据结构,首先要解决两个概念性的问题: 共享表空间以及独占表空间. 1.什么是共享表空间和独占表空 ...
- PostgreSQL Replication之第五章 设置同步复制(2)
5.2 理解实际影响和性能 在本章中,我们已经讨论了实际影响以及性能影响.但是,有什么好的理论性的例子吗?让我们做一个简单的基准测试,看看复制是怎么做的.我们做这样的测试来为您显示各种耐久性的级别不只 ...
- benchmark测试PostgreSQL数据库OLTP性能
1,安装配置PostgreSQL数据库 2,下载地址:http://sourceforge.net/projects/benchmarksql/?source=navbar Required:JDK7 ...
- C#派生类中使用基类protected成员的方法
我们知道C#中通过继承可以使一个具有公共数据和方法的基类被广泛应用从而减少代码量,这样派生类会具有基类中所有成员(除构造器等),我们理所当然可以通过派生类实例来使用基类的成员.那么当基类成员被prot ...
- ubuntu配置上网
一.通过修改配置文件配置: 编辑配置文件: #sudo vim /etc/network/interfaces auto ens33 #没有这句网卡不能启动 iface ens33 i ...
- pc端如何引用日期插件
页面的html部分 <li> <span>出生日期</span> <input type="text" placeholder=" ...
- 使用 validate 进行输入验证
validate 官方教程网址: http://www.runoob.com/jquery/jquery-plugin-validate.html 在表单页面引入两个核心 js 文件 #官方的两个文件 ...