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的伟大之处.

最新文章

  1. [原创] 【2014.12.02更新网盘链接】基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装
  2. pl/sql配置连接远程数据库oracle,本地没有安装oracle数据库的情况下
  3. KnockoutJS 3.X API 第四章(14) 绑定语法细节
  4. Json.Net
  5. Android-开发工具
  6. EasyUI中动态生成标签页
  7. 边工作边刷题:70天一遍leetcode: day 84-3
  8. python读取数据库数据,读取出的中文乱码问题
  9. Hadoop构成
  10. Linux使用fdisk进行磁盘管理
  11. (转)最小二乘法拟合圆公式推导及vc实现[r]
  12. Linux root密码忘记了怎么办?
  13. 进程之multiprocessing
  14. 和我一起打造个简单搜索之ElasticSearch集群搭建
  15. 课堂Beta发布
  16. bzoj1677
  17. [LeetCode&amp;Python] Problem 876. Middle of the Linked List
  18. if 条件为假(不成立),对应的语句块不会执行. 然后往下走
  19. 【JavaScript】颜色选择器
  20. [Python 多线程] Barrier (十一)

热门文章

  1. GridView中使用CheckBox
  2. poj--2385--Apple Catching(状态dp)
  3. &lt;a&gt;标签是什么意思 怎么使用?
  4. Java基础学习(三) -- OOP的三大特征、向上和向下转型、内部类之详解
  5. MyBatis+mysql查询和添加数据
  6. vuejs scope
  7. pip源
  8. 常用模块re模块(正则表达式)
  9. AWK的介绍学习
  10. 一个Web报表项目的性能分析和优化实践(二):MySQL数据库连接不够用(TooManyConnections)问题的一次分析和解决案例