J2EE :是java平台企业的简称,开发与部署企业级应用的一个框架,统一的,多平台
模块: 构件、服务和通信
构件:
客户端构件:Apples 和Application Clients
服务器端构件:web构件(Servlet与JSP)EJBs
服务:J2EE平台提供商实现 Service API(开发时使用)和运行时服务
通信:由容器提供的支持协作构件之间的通讯
J2EE常用的术语:
(1)Web服务器:在Internet上的计算机程序 接收返回客户端请求,被动程序 、服务程序
最流行IIS和 Apache
(2)Web容器(Web应用服务器)服务程序给运行在其中的程序提供一个运行的环境
常见Web容器:Tomcat 、Jboss、Weblogic、WebSphere等
(3)EJB容器:服务器端容器、J2EE应用的业务层的技术标准、EJB组件不能显示地使用EJB容器的API。为EJB组件隐式地提供中间件服务。
用于开发和部署多层的分布式的以及面向对象的应用系统的跨平台体系结构
(4)Applet容器:客户端容器,组件Applet,嵌入在浏览器中的轻量级客户端, 替代Web页面的手段, 安全方面:Applet无法使用Service和API
(5)APPlication Client 容器:客户端容器、较重量级客户端,可以使用大多数Service和API
(6)JNDI(java命名和目录接口)提供一个目录系统
快速查找和定位分布式应用程序的功能、应用程序有更好的扩展性
(7)JMS(java消息服务)面向消息中间件API
(8)JTA(java事物服务)
(9)JAF(javaBeans激活框架)专用的数据处理框架,提供统一处理数据格式飞方法。
(10)RMI(远程方法调用)不同计算机进行函数调用
EJB类型
(1)Session Bean(会话 Bean): 服务器端的业务逻辑、协调Bean 、存在客户应用于服务器交互的时间段内、不保存在数据库
Statless Session Bean(无状态)
调用期间不维护任何状态,所有事物处理都是在一个方法中处理完成,多个客户共享,
记录客户应用请求的状态、
Stateful Session Bean(有状态)
记录客户应用的状态、不能被共享、开销较大
(2)EntityBean(实体Bean):资料组件、代表数据库的记录,相同的生存周期 共享
数据持久化的处理方式:
①CMP(容器管理的持续性)自动完成数据库操作 EJB Container维护
②BMP(Bean管理的持续性)开发人员通过JDBC编程来实现 Bean自行维护
三种状态:
no-state:Bean实例还没被创建
pooled: Bean实例已经被创建 ,没有和EJB Object关联起来
ready: 与EJB Object关联起来,若断开关联,则回到pooled状态
(3)Message Driven Bean(消息驱动Bean)处理异步消息,用户调用
EJB是如何管理事务的?
EJB通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS),Sun Micr-osystems的Java Transaction Service(JTS)、Java Transaction API(JTA),开发组X/Open)的XA接口。
EJB的激活机制是什么?
激活机制是当客户端调用某个EJB实例业务方法时,若对应EJB Object发现自己没有绑定对应的Bean实例,则从其去激活Bean存储中(通过序列化机制存储实例)恢复(激活)此实例。状态变迁前会调用对应的ejbActive()和ejbPassivate()方法。以Stateful Session Bean为例,其Cache大小决定了内存中可以同时存在的Bean实例的数量,根据MRU(Most Recently Used,最近最常使用)算法或NRU(Not Recently Used,最近未使用)算法,实例在激活和去激活状态之间迁移。
EJBj角色
EJB开发流程:
1)定义Romote接口
2)编写一个接口继承javax.ejb.EJBHome
3)编写bean类的实现类
4)在项目的META-INF目录中创建edj-jar.xml和jboss.xml.
5)EJB项目发布到JBoss容器中,客户端可以调用该EJB对象
EJB规范规定EJB中禁止的操作有以下8种:
1)不能操作线程和线程API(线程API指非线程对象的方法,例如notify、wait等)。
2)不能操作AWT(Abstract Windowing Toolkit,抽象窗口工具包)。
3)不能实现服务器功能。
4)不能对静态属性存取。
5)不能使用IO操作直接存取文件系统。
6)不能加载本地库。
7)不能将this作为变量,不能将this返回。
8)不能循环调用。
Web Service是一种基于网络的分布式模块组件,
实现的协议:XML、WSDL、UDDI、SOAP
优点:完好的封装性、松耦合、高度客户操作性、动态性
XML:可扩展标记语言:定义语义标记规则的语言,可以被用来描述业务数据、数学数据等
优点:实用性强、访问速度快、可扩展性好、扩平台性好
缺点:数据量过大,效率低
两种文档形式:DTD、Schema
J2EE开发有那些调优方式:
1)优化设计
2)尽可能使用数据库连接池
3)给Web容器配置合理的线程数量客户端的HTTP请求。
4)根据实际情况设置Java虚拟机中推空间的大小
5)使用框架来提高效率
6)配置线程池的大小以便他能够在平均负载和高峰期都能够处理EJB请求
7)经常访问的Servlet或JSP存起来了
8)优化i/o性能
9)优化查询
10)对session进行合理管理与设置