J2EE核心技术构成

J2EE核心技术构成

EJB — J2EE的基石

CORBA — ORB是其核心

RMI

JSP

Java Servlet

JavaBean

JDBC

JMS

JTA

EJB概述

EJB模型特点

由一个EJB容器在运行时创建和管理EJB

在部署EJB时定制其运行方式

由EJB容器和服务器协调客户端的访问

可以部署到任何兼容的EJB容器中

客户端对EJB的视图由Bean开发人员决定

EJB规范内容

服务器

容器

类和实例

Home和Remote接口

客户端

EJB的运行环境,提供规范中定义的接口,使EJB类访问所需的服务

容器厂商也可在容器或服务器中提供额外服务接口

EJB服务器

用于将客户机层与资源管理层连接

提供系统服务程序,如安全性和事务

有一个支持实体Bean和会话Bean的标准容器

为EJB管理和配置提供服务

配置EJB的工具

安全服务

工作负荷管理服务

持久性服务外命名服务

事务处理服务

会话Bean

有状态bean

表示客户与系统交互的短暂对象,操作完成后被删除

每个用户有一个会话bean

无状态bean

不在客户请求之间维护状态信息

所有无状态会话Bean的实例都是相同的(无状态会话Bean能支持多个客户端)

实体bean

封装业务实体或业务过程的实现的组件

是持久数据组件,代表存储在外部介质中的持久(Persistence)对象或现有企业应用系统资源

实体bean的方法可以利用CMP(容器管理的持久性)或BMP(bean管理的持久性)来获取资源管理器中的状态

共享访问

可以被多客户端所共享

每一个实体bean实例都有一个唯一对象标识

这个唯一标识就是主键,可以让客户端找到对应的实体bean实例

与关系数据库中的表一样,实体bean之间也有关系

如在一个学校登记系统中,表示学生的StudentEJB和表示课程的CourseEJB因为学生必须登记上课而产生关系

EJB的客户-视图API

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的环境项

简单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();
    }
}

CORBA概述

Common Object Request Broker Architecture

是一个分布式对象体系结构,独立于平台及语言

在该体系结构中,一个对象可以被本机上的客户或远程客户通过方法激活来存取

客户(一个对象或应用)无须知道被调用对象(称为服务对象)的运行环境,也无须知道实现这个对象的编程语言

客户只要知道服务对象的逻辑地址和提供的接口

其互操作性的关键是IDL(Interface Definition Language、接口定义语言)

IDL说明对象接口中的方法

这些方法可以被其它对象(或应用)激活

RMI技术

Remote Method Invoke

是一种被EJB使用的更底层的协议,RMI协议调用远程对象上方法,使用序列化方式在客户端和服务器端的对象之间传递数据

与CORBA对比

关键差别在于语言环境,Java RMI是纯Java解决方案

CORBA未定义安全服务,Java RMI继承了Java的安全性

CORBA有不同的实现

不同平台上的匹配比较困难,而且不是所有CORBA产品开发商都支持所有平台

但几乎所有平台都支持Java虚拟机,因此Java RMI具有更高的可移植性

IIOP已经提供了Java RMI和CORBA的互操作能力,而且两者的发展有互相借鉴的趋势

JSP 技术

在HTML语言中混合Java程序代码,由服务器端Java语言引擎解释执行

HTML负责描述信息显示格式,JSP负责描述处理逻辑

JSP代码执行需要JSP引擎,如Tomcat和Apache

JSP开发的典型方式

直接使用:显示简单的动态效果

JSP + JavaBeans:需要与数据库连接,管理诸如帐号之类的信息

JSP + JavaBeans + Servlet:将事务逻辑与表现逻辑分开,JSP负责表现逻辑的处理和输出,Servlet专注于处理Web的关键业务逻辑

JSP引擎的工作原理

将JSP页面翻译成一个Servlet(Java文件)

JSP引擎调用Java编译器对这个Servlet进行编译,得到可执行的class文件

JSP引擎调用java虚拟机来解释执行class文件,生成向客户端发送的应答,然后发送给客户

上述步骤在JSP页面第一次被访问时才会执行,以后会因为类文件已经生成而提高效率

JSP和ASP的比较

相似之处

均是运行于服务器,都属于动态网页生成技术

都使用HTML来决定网页的版面,在HTML 代码中混合某种程序代码,由语言引擎解释执行程序代码

HTML负责描述显示样式,程序代码描述处理逻辑

区别

JSP基于JavaServlet及整个J2EE体系,支持跨平台

ASP由微软推出,只能在Windows平台上运行

ASP下的编程语言是 VBScript 之类的脚本语言,而JSP 使用的是Java

ASP 与 JSP 还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码

在 ASP 下, VBScript 代码被 ASP 引擎解释执行

在 JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执行,这种编译操作仅在对 JSP 页面的第一次请求时发生

Servlet概述

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”

Servlet的主要对象

HTTPServletRequest对象

关于HTTP请求

请求Headers

查询字符串Query String

会话信息Session

Cookies

HTTPServletResponse对象

用于格式化 HTTP响应

Headers

Status codes

Cookies

Servlet的生命周期

实例化

Web容器创建servlet实例

初始化

容器调用实例的init()方法

服务

如果容器有请求要传送给servlet,就会调用实例中的service()方法,doGet()或 doPost()方法

消亡

实例消亡前,调用destroy()方法回收资源

不可获得

实例被删除,并且标记为可被进行垃圾回收

Servlet基本结构

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 Servlet和JSP的比较

相似之处

均基于Java技术,都继承了Java的所有特性,且都可以使用Java API

工作方式相似:JSP代码先被JSP容器转换为Servlet代码再编译为类

两者在J2EE体系结构中的工作层次相同,都负责与客户端的连接

区别

编程方式不同:Servlets是一些运行于Web服务器端的Java小程序;而JSP是脚本,编写起来更简单容易

应用目的不同:Servlet主要用于从客户端接收请求信息,而JSP主要负责将服务器端信息传送到客户端

JSP真正意义:可将界面设计和业务逻辑设计分离

JavaBean概述

JavaBean是基于Java的组件模型,类似于Microsoft的COM组件

JavaBean通过Java虚拟机执行

可以无限扩充Java程序的功能,通过组合快速生成新的应用程序

JavaBean传统的应用在于可视化的领域,如AWT下的应用

自从JSP诞生后,JavaBean更多的应用在了非可视化领域,在服务器端应用方面表现出来了越来越强的生命力

JavaBean区别于Java类的特点

有公共无参数的构造函数

每一个属性都要有set,get方法

实现Serializable接口

属性

在设计Bean时可以改变的外观和行为特征

开发工具通过对Bean进行内省来获知其属性,进而发布其属性

方法

JavaBean中的方法就是通常的Java方法,它可以从其他组件或在脚本环境中调用

默认情况下,所有bean的公有方法都可以被外部调用,但bean一般只会引出其公有方法的一个子集

事件

Bean与其他组件交流信息的主要方式是发送和接收事件

JSP调用JavaBean的方法

    <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"/>

JDBC概述

用于执行SQL语句的Java API

JDBC是一种低级API,是高级API的基础

用户只关注SQL语句本身

JDBC功能

与数据库建立连接

发送SQL语句

处理结果

支持两层模型(Applet)和三层模型

与ODBC区别

ODBC使用C语言接口,不适合在Java环境中使用

Java调用本地C代码在安全性、实现、坚固性和程序的自动移植性方面都有许多缺点

JDBC建立在ODBC基础之上,并保留了ODBC的基本设计特征

JMS技术

为消息服务定义了通用 Java 语言接口,支持最常见的消息传递模型

发布/订阅模型

点到点模型

通过对JMS API的访问可实现面向消息的通信

JMS通常用来实现异构系统之间的松散集成

消息是异步的

允许不同的应用程序之间进行通讯

消息应用程序之间是对等的

服务器与客户机之间没有明显的界限

消息的生产者可以消费消息,消费消息的应用程序也可以生产消息

JTA和JTS、JCA

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

XML_RPC基本概念

是J2EE 1.4平台中Web服务的核心技术

类似于RMI的RPC机制,规定JAX-RPC运行环境

定义XML数据类型及WSDL(Web Services Description Language)

到Java类型的映射

定义JAX-RPC客户端编程模型

Stub接口、动态代理、动态调用

定义基于Servlet的服务端站点模型

定义SOAP消息Handler框架

提供复杂Java数据库类型映射的扩展框架

JAXM

用于发送和接收基于SOAP的消息

定义两种发送和接收消息的模型

请求-响应模型:是一种基于阻塞的点对点模型

单向模型:通过JAXM消息提供者转发

JAXM的技术优点

发送面向文档的数据

发送大量的、粗粒度的复杂的流数据

需要使用异步数据交换模型

需要确保每个数据都被对方接收

JMX ( Java Management Extensions)

为应用程序、设备、系统等植入管理功能的框架

装配层:定义信息模型,JMX中各种管理对象都以管理构件形式存在

代理层:定义各种服务以及通信模型,MBean服务器是核心,所有管理构件(包括协议适配器和连接器)都要向它注册后才能被管理

分布式服务层:包括协议适配器和连接器两种类型组件,定义能对代理层进行操作的管理接口和构件

时间: 2024-10-11 03:00:56

J2EE核心技术构成的相关文章

二 J2EE 概述

一 WEB 应用 1. WEB 应用工作方式:B/S 模式 (浏览器/服务器模式) 2. WEB 应用结构组成: a. WEB 服务器:是安装在 WEB 服务器计算机上的一个软件包,负责接收用户请求并相应. b. HTTP 协议:是浏览器和服务器之间的通信协议,基于请求/应答模式. 3. 企业级软件:就是用来实现商业企业业务的软件. 4. 企业级软件开发的主要关注问题:大范围代码的重用性 5. 企业级软件开发的主要关注问题的解决方法:设计软件组件,并利用组件的接口将这些组件合并成目标应用程序.

总会有一个是你需要的

http://www.shouce.ren/post/d/id/112300 黑客攻防实战入门与提高.pdfhttp://www.shouce.ren/post/d/id/112299 黑客入门新手特训.pdfhttp://www.shouce.ren/post/d/id/112298 黑客与设计-剖析设计之美的秘密(彩印).pdfhttp://www.shouce.ren/post/d/id/112297 鸟哥的LINUX私房菜:服务器架设篇 (第二版).pdfhttp://www.shouc

【Smallfan的ios学习笔记】卷首引

[关于自己] 似乎先要自我介绍一下.首先我是一名三流专科院校的工科男生,所学的专业是计算机信息管理.计算机信息管理这个专业,说实话当时填报也并不了解,就冲着学校专业简介上面写着oracle开发运维而去,结果上天跟我开了个玩笑,这个专业分了两个方向,一个是系统开发与运用(SQL方向),一个是数据库运维与应用(oracle方向),很荣幸就被分到了SQL方向.一进这个专业,第一件事就是查询这三年将会开什么课程,课表如下: 简要筛选一下主要课程就是JAVA编程基础.JSP程序设计.JavaScript.

J2EE的13种核心技术

一.JDBC(Java Database Connectivity) JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDBC对数据库的访问也具有平台无关性. 二.JNDI(Java Name and Directory Interface) JNDI API被用于执行名字和目录服务.它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象. 三.EJB(Enterprise JavaBea

(转)J2EE的13种核心技术

一.JDBC(Java Database Connectivity)  JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDBC对数据库的访问也具有平台无关性. 二.JNDI(Java Name and Directory Interface) JNDI API被用于执行名字和目录服务.它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象. 三.EJB(Enterprise JavaBe

Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis+KafKa j2ee分布式架构核心技术

内置功能(只列了一部分功能) 1.用户管理:用户是系统操作者,该功能主要完成系统用户配置. 2.机构管理:配置系统组织机构(公司.部门.小组),树结构展现,可随意调整上下级. 3.区域管理:系统城市区域模型,如:国家.省市.地市.区县的维护. 4.菜单管理:配置系统菜单,操作权限,按钮权限标识等. 5.角色管理:角色菜单权限分配.设置角色按机构进行数据范围权限划分. 6.字典管理:对系统中经常使用的一些较为固定的数据进行维护,如:是否.男女.类别.级别等. 7.操作日志:系统正常操作日志记录和查

JavaEE包括13中核心技术

java的大方向就是JavaEE,JavaEE不仅仅是socket编程,具体包括13中核心技术. JAVAEE的核心API与组件 JAVAEE平台由一整套服务(Services).应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对JAVAEE中的13种技术规范进行简单的描述(限于篇幅,这里只进行简单的描述): 1.JDBC(Java Database Connectivity) JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对

J2EE初探

J2EE概述 Java 2平台有3个版本,分别是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME).适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE).适用于创建服务器应用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE).J2EE是一种利用Java 2平台来简化企业解决方案的开发.部署和管理

J2EE、J2SE、J2ME

http://developer.51cto.com/art/200906/130453.htm 本文介绍Java的三大块:J2EE.J2SE和J2ME.J2SE就是Java2的标准版,主要用于桌面应用软件的编程:J2ME主要应用于嵌入是系统开发,如手机和PDA的编程:J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统. AD:51CTO网+ 首届中国APP创新评选大赛火热招募中…… Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE