赞
踩
EJB — J2EE的基石
CORBA — ORB是其核心
RMI
JSP
Java Servlet
JavaBean
JDBC
JMS
JTA
EJB模型特点
由一个EJB容器在运行时创建和管理EJB
在部署EJB时定制其运行方式
由EJB容器和服务器协调客户端的访问
可以部署到任何兼容的EJB容器中
客户端对EJB的视图由Bean开发人员决定
EJB规范内容
服务器
容器
类和实例
Home和Remote接口
客户端
EJB的运行环境,提供规范中定义的接口,使EJB类访问所需的服务
容器厂商也可在容器或服务器中提供额外服务接口
用于将客户机层与资源管理层连接
提供系统服务程序,如安全性和事务
有一个支持实体Bean和会话Bean的标准容器
为EJB管理和配置提供服务
配置EJB的工具
安全服务
工作负荷管理服务
持久性服务外命名服务
事务处理服务
有状态bean
表示客户与系统交互的短暂对象,操作完成后被删除
每个用户有一个会话bean
无状态bean
不在客户请求之间维护状态信息
所有无状态会话Bean的实例都是相同的(无状态会话Bean能支持多个客户端)
封装业务实体或业务过程的实现的组件
是持久数据组件,代表存储在外部介质中的持久(Persistence)对象或现有企业应用系统资源
实体bean的方法可以利用CMP(容器管理的持久性)或BMP(bean管理的持久性)来获取资源管理器中的状态
共享访问
可以被多客户端所共享
每一个实体bean实例都有一个唯一对象标识
这个唯一标识就是主键,可以让客户端找到对应的实体bean实例
与关系数据库中的表一样,实体bean之间也有关系
如在一个学校登记系统中,表示学生的StudentEJB和表示课程的CourseEJB因为学生必须登记上课而产生关系
EJB本地接口
定义一些方法供客户端create, remove,和find EJB对象使用
EJB远程接口
定义EJB的业务方法,EJB所有的业务方法必须在远程接口中定义才能被客户端访问
EJB类
实现在EJB远程接口中定义的业务方法
Ejb-jar.xml
包含EJB组件的配置信息
EJB类
Java类,实现业务方法及企业bean对象生命周期的方法
EJB客户-视图API:由EJB的home接口和EJB的remote接口构成
home接口定义create,remove及find方法,控制EJB对象的生命周期
remote接口定义客户在特定EJB对象上可调用的业务方法
部署描述符
是一个XML文档,包含有关这个EJB的声明信息
EJB名称
Home和remote接口的名称
EJB类名称
EJB类型
EJB期望容器所提供服务的信息,如事务处理
EJB的环境项
First.java(远程接口)
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
public interface First extends EJBObject {
public String Here() throws RemoteException;
public String There() throws RemoteException;
}
FistHome.java(本地接口)
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface FirstHome extends EJBHome{
public First create() throws RemoteException, CreateException;
}
import java.rmi.*;
import javax.ejb.*;
public class FirstBean implements SessionBean {
public void ejbCreate() {}
public void ejbRemove() throws RemoteException {}
public void ejbActivate() throws RemoteException {}
public void ejbPassivate() throws RemoteException {}
public void setSessionContext(SessionContext sessionContext) throws
RemoteException { this.sessionContext = sessionContext; }
public void Here(){
String strTarget = “I am here!”;
return strTarget;
}
public void There(){
String strSource = “You are there!”;
return strSource ;
}
}
First部署描述符
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar> <enterprise-beans> <session><ejb-name>First</ejb-name><home> com.javausr.example.FirstHome</home><remote> com.javausr.example.First</remote><ejb-class> com.javausr.example.FirstBean</ejb-class><session-type>Stateless</session-type></session></enterprise-beans> </ejb-jar>
客户端调用
public class MyStandAloneClient {
public static void main(String[] args) {
try {
Context initial = new InitialContext(); //创建jndi初始化环境
Object objref = initial.lookup(“First"); //找到ejb的Remote Home Interface
FirstHome home = (FirstHome)PortableRemoteObject.narrow(objref,
FirstHome.class);
First first = home.create(); //初始化ejb,得到Remote Interface
first.here(); //调用商业方法sayHello()
System.exit(0);
} catch (Exception ex) {
System.err.println("Caught an unexpected exception!");
ex.printStackTrace();
}
}
Common Object Request Broker Architecture
是一个分布式对象体系结构,独立于平台及语言
在该体系结构中,一个对象可以被本机上的客户或远程客户通过方法激活来存取
客户(一个对象或应用)无须知道被调用对象(称为服务对象)的运行环境,也无须知道实现这个对象的编程语言
客户只要知道服务对象的逻辑地址和提供的接口
其互操作性的关键是IDL(Interface Definition Language、接口定义语言)
IDL说明对象接口中的方法
这些方法可以被其它对象(或应用)激活
Remote Method Invoke
是一种被EJB使用的更底层的协议,RMI协议调用远程对象上方法,使用序列化方式在客户端和服务器端的对象之间传递数据
与CORBA对比
关键差别在于语言环境,Java RMI是纯Java解决方案
CORBA未定义安全服务,Java RMI继承了Java的安全性
CORBA有不同的实现
不同平台上的匹配比较困难,而且不是所有CORBA产品开发商都支持所有平台
但几乎所有平台都支持Java虚拟机,因此Java RMI具有更高的可移植性
IIOP已经提供了Java RMI和CORBA的互操作能力,而且两者的发展有互相借鉴的趋势
在HTML语言中混合Java程序代码,由服务器端Java语言引擎解释执行
HTML负责描述信息显示格式,JSP负责描述处理逻辑
JSP代码执行需要JSP引擎,如Tomcat和Apache
JSP开发的典型方式
直接使用:显示简单的动态效果
JSP + JavaBeans:需要与数据库连接,管理诸如帐号之类的信息
JSP + JavaBeans + Servlet:将事务逻辑与表现逻辑分开,JSP负责表现逻辑的处理和输出,Servlet专注于处理Web的关键业务逻辑
将JSP页面翻译成一个Servlet(Java文件)
JSP引擎调用Java编译器对这个Servlet进行编译,得到可执行的class文件
JSP引擎调用java虚拟机来解释执行class文件,生成向客户端发送的应答,然后发送给客户
上述步骤在JSP页面第一次被访问时才会执行,以后会因为类文件已经生成而提高效率
相似之处
均是运行于服务器,都属于动态网页生成技术
都使用HTML来决定网页的版面,在HTML 代码中混合某种程序代码,由语言引擎解释执行程序代码
HTML负责描述显示样式,程序代码描述处理逻辑
区别
JSP基于JavaServlet及整个J2EE体系,支持跨平台
ASP由微软推出,只能在Windows平台上运行
ASP下的编程语言是 VBScript 之类的脚本语言,而JSP 使用的是Java
ASP 与 JSP 还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码
在 ASP 下, VBScript 代码被 ASP 引擎解释执行
在 JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执行,这种编译操作仅在对 JSP 页面的第一次请求时发生
Servlets=Server +Applet
运行于Web服务器端的Java小程序,用来扩展Web服务器功能
一种扩展Web服务器功能的技术,且由于用Java编写,所以能够访问整个Java API库,包括用于访问企业数据库的JDBC API
用特定的Java解决方案替代了其它的Web服Servlets务器方编程模式(如:CGI,ISAPI等),因而继承了Java的所有特性(跨平台、多线程、OO)
用来编写Servlets的Servlet API对于服务器环境和协议没有任何特殊的要求,所以Servlets具有很强的可移植性,也不像利用CGI程序等其它方式那样具有性能局限
Servlets也同样使用HTTP协议与客户端进行通讯,所以有时也称Sevlets为“HTTP Servlets”
HTTPServletRequest对象
关于HTTP请求
请求Headers
查询字符串Query String
会话信息Session
Cookies
HTTPServletResponse对象
用于格式化 HTTP响应
Headers
Status codes
Cookies
实例化
Web容器创建servlet实例
初始化
容器调用实例的init()方法
服务
如果容器有请求要传送给servlet,就会调用实例中的service()方法,doGet()或 doPost()方法
消亡
实例消亡前,调用destroy()方法回收资源
不可获得
实例被删除,并且标记为可被进行垃圾回收
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SomeServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//使用“request”读取和请求有关的信息(比如Cookies)
//和表单数据
//使用“response”指定HTTP应答状态代码和应答头
//(比如指定内容类型,设置Cookie)
PrintWriter out = response.getWriter();
//使用“out”把应答内容发送到浏览器
}
}
相似之处
均基于Java技术,都继承了Java的所有特性,且都可以使用Java API
工作方式相似:JSP代码先被JSP容器转换为Servlet代码再编译为类
两者在J2EE体系结构中的工作层次相同,都负责与客户端的连接
区别
编程方式不同:Servlets是一些运行于Web服务器端的Java小程序;而JSP是脚本,编写起来更简单容易
应用目的不同:Servlet主要用于从客户端接收请求信息,而JSP主要负责将服务器端信息传送到客户端
JSP真正意义:可将界面设计和业务逻辑设计分离
JavaBean是基于Java的组件模型,类似于Microsoft的COM组件
JavaBean通过Java虚拟机执行
可以无限扩充Java程序的功能,通过组合快速生成新的应用程序
JavaBean传统的应用在于可视化的领域,如AWT下的应用
自从JSP诞生后,JavaBean更多的应用在了非可视化领域,在服务器端应用方面表现出来了越来越强的生命力
JavaBean区别于Java类的特点
有公共无参数的构造函数
每一个属性都要有set,get方法
实现Serializable接口
属性
在设计Bean时可以改变的外观和行为特征
开发工具通过对Bean进行内省来获知其属性,进而发布其属性
方法
JavaBean中的方法就是通常的Java方法,它可以从其他组件或在脚本环境中调用
默认情况下,所有bean的公有方法都可以被外部调用,但bean一般只会引出其公有方法的一个子集
事件
Bean与其他组件交流信息的主要方式是发送和接收事件
<jsp:useBean>:用于声明和实例化javabean类.
<jsp:useBean
id="object-name" scope="page | request | session | application" type="type-of-object" class="fully-qualified-classname" beanName="fully-qualified-beanName"/>
<jsp:setProperty>:用于设计javabean的值.
<jsp:setProperty name="id-of-the-JavaBean" property="name-of-property" param="name-of-request-parameter-to-use" value="new-value-of-this-property"/>
<jsp:getProperty>:用于获取javabean中特定propoerty的值.
<jsp:getProperty
name="name-of-the-object" property="name-of-property"/>
用于执行SQL语句的Java API
JDBC是一种低级API,是高级API的基础
用户只关注SQL语句本身
JDBC功能
与数据库建立连接
发送SQL语句
处理结果
支持两层模型(Applet)和三层模型
与ODBC区别
ODBC使用C语言接口,不适合在Java环境中使用
Java调用本地C代码在安全性、实现、坚固性和程序的自动移植性方面都有许多缺点
JDBC建立在ODBC基础之上,并保留了ODBC的基本设计特征
为消息服务定义了通用 Java 语言接口,支持最常见的消息传递模型
发布/订阅模型
点到点模型
通过对JMS API的访问可实现面向消息的通信
JMS通常用来实现异构系统之间的松散集成
消息是异步的
允许不同的应用程序之间进行通讯
消息应用程序之间是对等的
服务器与客户机之间没有明显的界限
消息的生产者可以消费消息,消费消息的应用程序也可以生产消息
JTA(Java Transaction API)是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务
JTS(Java Transaction Service)规定了支持JTA的事务管理器的实现规范
在高层API之下实现了Object Transaction Service(OTS) 1.1规范的Java映射
JTS使用IIOP来传播事务
JTA和JTS让J2EE应用服务器完成事务管理
开发者只需在部署描述符中声明事务管理属性,便可以使得EJB组件参与到事务之中,由应用服务器来负责事务的管理
Java Connector Architecture (JCA)
允许将支持访问EIS的资源适配器插入J2EE产品
定义了J2EE服务器与资源适配器之间的连接管理契约,允许建立到EIS的连接池
定义了事务管理器与EIS之间的事务管理契约,支持事务访问
也支持完全由EIS管理的事务
定义了安全契约,使得能够安全地访问EIS
是J2EE 1.4平台中Web服务的核心技术
类似于RMI的RPC机制,规定JAX-RPC运行环境
定义XML数据类型及WSDL(Web Services Description Language)
到Java类型的映射
定义JAX-RPC客户端编程模型
Stub接口、动态代理、动态调用
定义基于Servlet的服务端站点模型
定义SOAP消息Handler框架
提供复杂Java数据库类型映射的扩展框架
用于发送和接收基于SOAP的消息
定义两种发送和接收消息的模型
请求-响应模型:是一种基于阻塞的点对点模型
单向模型:通过JAXM消息提供者转发
JAXM的技术优点
发送面向文档的数据
发送大量的、粗粒度的复杂的流数据
需要使用异步数据交换模型
需要确保每个数据都被对方接收
为应用程序、设备、系统等植入管理功能的框架
装配层:定义信息模型,JMX中各种管理对象都以管理构件形式存在
代理层:定义各种服务以及通信模型,MBean服务器是核心,所有管理构件(包括协议适配器和连接器)都要向它注册后才能被管理
分布式服务层:包括协议适配器和连接器两种类型组件,定义能对代理层进行操作的管理接口和构件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。