【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),本地文件系统或应用服务器中的对象.我们所写的EnterpriseJavaBeans对象实例运行在EJB容器中,以下代码范例就是使用JNDI查找应用服务器中的对象,这里的应用服务器是异于本地的应用服务器.

基础系统的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的伟大之处.

时间: 2024-11-06 19:14:03

【J2EE】在项目中理解J2EE规范的相关文章

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

Java中使用的路径,分为两种:绝对路径和相对路径.归根结底,Java本质上只能使用绝对路径来寻找资源.所有的相对路径寻找资源的方法,都不过是一些便利方法.不过是API在底层帮助我们构建了绝对路径,从而找到资源的! 在开发Web方面的应用时, 经常需要获取服务器中当前WebRoot的物理路径. 如果是Servlet , Action , Controller, 或者Filter , Listener , 拦截器等相关类时, 我们只需要获得ServletContext, 然后通过ServletCo

java项目中的命名规范

一.命名规范 1. 项目名全部小写 2. 包名全部小写 3. 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写. 如:public class MyFirstClass{} 4. 变量名.方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写. 如:int index=0; public void toString(){} 5. 常量名全部大写 如:public static final String GAME_COLOR="RED"; 6.所有命名规则必须

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

变量声明 变量声明方式 伴随js诞生的var // 语法 var varName = value var a = 1 // 这样子你就得到了一个变量 var缺陷场景分析 var specialUser = "cj"; // 在A文件定义 var specialUser = "fk"; // A文件很大,你没去寻找是否定义此变量,直接定义 getImportantInformation(specialUser); // 在B文件定义 我们在定义一个变量,通常是跳过检查

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

参考:http://www.cnblogs.com/zhengqiang/p/5557155.html Ant是跨平台的构建工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.安装与部署 1.1 下载 下载地址:https://archive.apache.org/dist/ant/binaries/ 我下载的是1.7.1版本.解压到某个目录(例如D:\ant-1.7.1),即可使用. 1.1 配置环境变量 1.添加

spring web(SpringBoot,SpringMVC)项目中返回自定义格式的JSON,不暴露不必要的字段

笔者的web项目中使用RESTFul规范和前台进行交互. 原始代码 返回的json数据格式如下: 对应的后台实体类及交互方法: JsonResult.java public class JsonResult { private int code; private String message; private String nextUrl; private Object data; public JsonResult(int code, String message) { this.code =

最近项目中代码管理学习

之前项目用的都是SVN进行代码管理的,最新的两个项目開始用git了.非常早之前就開始接触git.可是一直没有正规的使用过,所以对git的命令并非非常熟悉,基本上的命令都是使用诸如clone.checkout.add.commit之类的命令.没有使用过创建分支(branch)和打tag之类的操作.眼下项目中常常出现一种情况:项目開始的时候我们都在master分支上开发,然后等到一个阶段完毕之后我们会公布这个版本号,然后再创建一个develop分支.接着在develop分支上开发,然后对master

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

云智慧(北京)科技有限公司 高驰涛 什么是SeasLog SeasLog是一个C语言编写的PHP扩展,提供一组规范标准的功能函数,在PHP项目中方便.规范.高效地写日志,以及快速地读取和查询日志. 为什么使用SeasLog 无论在什么应用中,log日志都是架构中不可缺少的一个重要组成部分,它通常是系统或软件.应用的运行记录.通过log的分析,可以方便用户了解系统或软件.应用的运行情况:如果你的应用log足够丰富,也可以分析以往用户的操作行为.类型喜好.地域分布或其他更多信息:如果一个应用的log

[查异常网]-20160331-谈谈J2EE项目中的异常处理

为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”.笔者在初学java时也是这样认为的.如何在一个多层的j2ee项目中定义相应的异常类?在项目中的每一层如何进行异常处理?异常何时被抛出?异常何时被记录?异常该怎么记录?何时需要把checked Exception转化成unchecked Exception ,何时需要把unChecked Exception转化成checked Exception?异常是否应该

深入浅出J2EE之(一)—13规范

解决什么问题? 在许多企业级应用中,例如数据库连接.邮件服务.事务处理等都是一些通用企业需求模块,这些模块如果每次在开发都由开发人员来完成的话,将会造成开发周期长和代码可靠性差等问题.于是许多大公司开发了自己的通用模块服务.这些服务性的软件系列同称为中间件. 在上述的需求基础之上,许多公司都开发了自己的中间件,但其与用户的沟通都各有不同,从而导致用户无法将各个公司不同的中间件组装在一块为自己服务.从而产生瓶颈.为了通用必须要提出规范,不然无法达到通用,于是提出标准的概念. 简单理解:每个公司将通