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规范的更多相关文章

  1. J2EE web项目中解决所有路径问题

    Java中使用的路径,分为两种:绝对路径和相对路径.归根结底,Java本质上只能使用绝对路径来寻找资源.所有的相对路径寻找资源的方法,都不过是一些便利方法.不过是API在底层帮助我们构建了绝对路径,从 ...

  2. 从项目中理解SSM框架

    我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教学课堂中,也会把SSH作为最核心的教学内容. 但是,我们在实际应用中发现,SpringMVC可以完全替代Struts,配 ...

  3. 从项目中理解let和const为什么如此重要

    变量声明 变量声明方式 伴随js诞生的var // 语法 var varName = value var a = 1 // 这样子你就得到了一个变量 var缺陷场景分析 var specialUser ...

  4. Ant在Java项目中的使用(一眼就看会)

    参考:http://www.cnblogs.com/zhengqiang/p/5557155.html Ant是跨平台的构建工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将A ...

  5. 使用SeasLog打造PHP项目中的高性能日志组件(一)

    云智慧(北京)科技有限公司 高驰涛 什么是SeasLog SeasLog是一个C语言编写的PHP扩展,提供一组规范标准的功能函数,在PHP项目中方便.规范.高效地写日志,以及快速地读取和查询日志. 为 ...

  6. J2EE项目中异常处理

     为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”.笔者在初学java时也是这样认为的.如何在一个多层的j2e ...

  7. (转)J2EE中13个规范

       今天在做连接oracle数据库的时候,感受到了什么是规范.平时听到别人说学习j2ee一定要学习他的十三个规范,大概的知道每个规范是做什么的,每个“接口”是做什么的.          很早就听过 ...

  8. J2EE项目中后台定时运行的程序

    转自:http://www.2cto.com/kf/201311/260676.html 在开发J2EE项目中,有时候需要在后台定时执行一些代码. 比如定时对web数据建立倒排索引.定时发送邮件.定时 ...

  9. J2EE开源项目

    这篇文章写在我研究J2SE.J2EE近三年后.前3年我研究了J2SE的Swing.Applet.Net.RMI.Collections.IO.JNI……研究了J2EE的JDBC.Sevlet.JSP. ...

随机推荐

  1. PHP使用数组实现队列(实际就是先进先出怎样实现)

    PHP的数组处理函数还能够将数组实现队列,堆栈是"先进后出". 在堆栈中,最后压入的数据(进栈),将会被最先弹出(出栈).而队列是先进先出.就如同银行的排号机 PHP中将数组当做一 ...

  2. LeakCanary:简单粗暴的内存泄漏检測工具

    差点儿每一个程序猿在开发的过程中都会遇到内存泄漏.那么我们怎样检測到app是否哪里出现内存泄漏呢?square公司推出了一款简单粗暴的检測内存泄漏的工具-- LeakCanary 什么是内存泄漏? 内 ...

  3. 经常使用传感器协议1:CJ/T-188 水表协议解析1

          本文以实例说明CJ/T-188水表协议的解析过程,下面数据未经特殊说明,均指十六进制. 数据发送:         FE FE FE FE 68 10 44 33 22 11 00 33 ...

  4. Ubuntu系统中中文的设置

    这几天心血来潮,在实习公司真的没什么事情做,在学长的推荐下就学习了一下Ubuntu系统,感觉还是挺不错的,这个系统,所以我也推荐刚开始学习liunx系统的妹子们也可以先学一下这个. 1>你可以在 ...

  5. MinGW安装和使用基础教程

    MinGW全称Minimalist GNU For Windows,是个精简的Windows平台C/C++.ADA及Fortran编译器,相比Cygwin而言,体积要小很多,使用较为方便.MinGW提 ...

  6. POJ 3225 线段树+lazy标记

    lazy写崩了--. 查了好久 /* U-> [l,r]–>1 I-> [1,l-1] [r+1,+无穷] –>0 D-> [l,r]–>0 C-> [1,l ...

  7. Android实现App版本自动更新

    现在很多的App中都会有一个检查版本的功能.例如斗鱼TV App的设置界面下: 当我们点击检查更新的时候,就会向服务器发起版本检测的请求.一般的处理方式是:服务器返回的App版本与当前手机安装的版本号 ...

  8. PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(5)

    2.5 XLOG的内部结构 我们将使用事务贯穿本书,并让您在技术层面上更深地洞察事情是如果工作的,我们已经增加了这部分专门处理XLOG的内部工作机制.我们会尽量避免前往下降到C级,因为这将超出本书的范 ...

  9. 洛谷3871 [TJOI2010]中位数 维护队列的中位数

    题目描述 给定一个由N个元素组成的整数序列,现在有两种操作: 1 add a 在该序列的最后添加一个整数a,组成长度为N + 1的整数序列 2 mid 输出当前序列的中位数 中位数是指将一个序列按照从 ...

  10. rsync---远程数据同步工具

    rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而 ...