J2EE技术架构

更新时间:2023-08-15 14:53:01 阅读量: 人文社科 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

J2EE技术架构

《KINGOSOFT高校数字校园综合管理平台》采用先进的J2EE技术架构,基于多层软件构架(即客户层、表示层、业务层、集成层和资源层),采用面向服务的思想、使用WebService和XML等技术整合与集成各种应用系统,能够为高校数字校园建设提供先进实用、安全可靠、便于兼容、易于扩展的应用解决方案。技术架构如下:

J2EE(Java 2 Platform Enterprise Edition)是Java2平台企业版。J2EE是一套全然不同于传统应用开发的技术架构,包含大量组件,可简化且规范应用系统的开发与部署,进而提高可移植性、伸缩性、安全性与再用价值。 J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种遵循J2EE架构开发的软件存在良好的兼容性,解决过去使用的软件产品彼此之间无法兼容、导致内部或外部应用难以互通的窘境。

J2EE是使用JAVA技术开发企业级应用的一种事实上的工业标准,各个平台开发商按照J2EE规范分别开发了不同的J2EE应用服务器,使用J2EE技术开发的企业级应用可以部署在各种J2EE应用服务器上,具有良好可移植性。

J2EE企业级应用的不同部分纳入不同的容器(Container),每个容器中都包含若干组件(这些组件是需要部署在相应容器中的),同时各种组件都能使用各种J2EE Service与API。J2EE容器与相应的组件可以部署在网络中的任一服务器上,具有良好的可伸缩性。J2EE组件的安全是由各自的容器来负责的,组件的开发人员几乎可以不用或者很少在组件中添加有关安全的代码。这种安全逻辑和业务逻辑相对独立的架构,使得企业级应用系统有更好的灵活性和扩展性。

J2EE是以企业与企业之间的运算为导向的JAVA开发环境。J2EE架构定义各类不同组件,如WEB组件、EJB组件等,而各类组件可以复用,可以组装成不同的系统。

客户层是整个架构的最上层,主要用于将操作界面呈现给用户、建立与服务器的连接、接收并验证用户的输入、管理客户端与服务器的会话状态。

客户层分为浏览器客户端和桌面应用客户端。浏览器客户端使用HTML、CSS、JavaScript与AJAX等技术实现;桌面应用客户端使用PowerBuilder集成开发环境实现。

1、HTML(Hyper Text Mark-up Language):即超文本标记语言,是WWW的描述语言,是一种简单、通用的全置标记语言。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。

2、CSS(Cascading Style Sheets):即层叠样式表,是一种标记语言,它不需要编译,可以直接由浏览器执行。在标准网页设计中CSS负责网页内容的表现。

3、JavaScript:是一种由Netscape的LiveScript发展而来的脚本语言,JavaScript使网页增加互动性

。JavaScript使有规律地重复的HTML文段简化,减少下载时间。JavaScript 能及时响应用户的操作,对提交表单做即时的检查,无需浪费时间交由CGI(Common Gateway Interface)验证。

4、AJAX(Asynchronous JavaScript and XML):即异步JavaScript和XML,是指一种创建交互式网页应用的综合开发技术;涉及到:AJAX的定义,基于WEB标准的XHTML+CSS表示,使用DOM(Document Object Model)进行动态显示及交互,使用XML和XSLT(Extensible Stylesheet Language Transformations)进行数据交换及相关操作,使用XMLHttpRequest进行异步数据查询、检索,使用JavaScript进行绑定。

表示层是整个架构中最活跃的分层,由WEB服务器及其组件构成,主要用于处理客户端的请求、响应业务层组件的请求。

表示层引入了基于组件开发的Struts开源框架,采用Servlet与XML等技术实现,具有良好的可伸缩性和稳定性,降低了系统开发的复杂度、提高了开发效率,支持所有的J2EE应用服务器(包括Apache Tomcat、JBoss Application Server、IBM WebSphere Application Server与BEA Weblogic Application Server等)。

1、Servlet:是使用Java Servlet应用程序开发接口(API)及相关类和方法的JAVA组件。除了JAVA Servlet API,Servlet还可以使用用以扩展和添加到API的JAVA类软件包。Servlet在启用JAVA的WEB服务器上或应用服务器上运行并扩展了该服务器的能力。Java Servlet API定义了一个Servlet和JAVA服务器之间的一个标准接口,这使得Servlet具有跨服务器平台的特性。

2、XML(Extensible Markup Language):即扩展标记语言,是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以很方便地建立。虽然XML文件比二进制数据占用的空间更多,但XML极其简单、很容易掌握和使用。XML可以在任何应用程序中读写数据,这使得XML成为数据交换的唯一公共语言。

3、JSP(JavaServer Pages):是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(Tag),从而形成JSP文件(*.jsp)。WEB服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。JSP可以操作数据库、重新定向网页等,用于实现建立动态网页

所需要的功能。

4、Struts:是一个MVC(Model View Controller)框架,用于快速开发JAVA WEB应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和开发人员定制的Action,也为V(View)提供了一系列定制标签(Custom Tag)。Struts没有涉及M(Model),所以Struts可以调用JAVA实现的任何形式的业务逻辑组件。

5、Portal:是一种WEB应用,通常用来提供个性化、单点登录、聚集各个信息源的内容,并作为信息系统表现层的宿主。Portal由如下三个部分组成:

(1) Portal Server:一个Portal Server就是指一个Web-based系统,通常都会提供个人化设置、单点登录、以及将各种不同来源的信息放在网页之中组合后呈现的功能,门户会根据个性化设置提供定制的网页,不同的使用者浏览页面将获得不同的内容。

(2) Portlet Container:是提供Portlet执行的环境,包含了许多Portlet并且管理其生命周期。一个Portlet Container接收到来自Portal的请求后,将这个请求传递给存在Container中的Portlet执行。Portal Server和Portlet Container可以放在一起视为同一个系统的组件或者分开成为两个独立的组件。

(3) Portlet:Portlet是基于JAVA的WEB组件,由Portlet容器管理,并由容器处理请求,生成动态内容。Portal使用Portlet作为可插拔的用户接口组件,提供信息系统的表示层。

6、JSR168(Java Standardization Request 168):定义了一个Portlet的规范,包括Portlet容器和Portlet之间的合约。JSR168由JCP(Java Community Process)定义。

业务层是整个架构中最核心的分层,由应用服务器及其组件构成,主要用于处理业务逻辑。

业务层引入了基于组件开发的Spring开源框架,采用WebService与JavaBean等技术实现,具有良好的稳定性和可靠性,降低了系统开发复杂度、提高了开发效率,支持所有的J2EE应用服务器(包括JBoss Application Server、IBM WebSphere Application Server与BEA Weblogic Application Server)。

1、JavaBean:是一种JAVA语言写成的可重用组件,是一种JAVA类,通过封装属性和方法成为具有某种功能或者处理某个业务逻辑的对象,其他JAVA类可以通过自省机制发现和操作JavaBean的属性。JavaBean具有以下特点:可以重复使用;易编写、易维护、易使用;可以在任何安装了JAVA运行环境的平台上的使用,而不需要重新编译。

2、EJB(Enterprise Java Beans):是企业级JavaBean,是JAVA的核心代码,用于开发基于组件的企业应用程序。EJB包括Session Bean(会话Bean)、Entity Bean(实体Bean)和MessageDriven Bean(消息驱动Bean)。

(1) Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当接收到客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。

(2) Entity Bean用于实现O/R(Object/Relationl)映射,负责将数据库中的表记录映射为内存中的Entity对象,创建一个Entity Bean对象相当于新增一条记录,删除一个Entity Bean会同时从数据库中删除相应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。

(3) MessageDriven Bean(MDB)用于接收客户端发送的JMS(Java Message Service)消息然后做相应的处理。MDB实际上是一个异步的无状态Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。MDB适用于需要异步处理请求的场合,避免客户端长时间的等待一个方法调用直到返回结果。

3、WebService:是建立可互操作的分布式应用程序的新平台,作为一套标准,它定义了应用程序如何在WEB上实现互操作性。

4、Spring:是一个开源框架,由Rod Johnson创建,用以解决企业应用开发的复杂性。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。

5、POJO(Plain Old Java Object):是一类规则的、易组合的、运行于EJB容器之外且不依赖于EJB的对象。

集成层是整个架构中十分重要的分层,由若干接口组件和服务构成,主要用于集成学校的各类应用(系统、服务和数据),实现各个应用之间互联互通。

集成层引入了优秀的Hibernate开源框架,用于建立对象模型与关系模型的映射、持久化业务对象,支持各种流行的数据库管理系统(Oracle、SQL Server、DB2等);使用JNDI,用于集成基于目录服务的应用;使用JavaMail,用于集成邮件系统;使用JMS,用于集成基于消息中间件的应用。

1、Hibernate:是一个开放源代码的对象关系映射框架,它对JDBC(Java Data Base Connectivity)进行了非常轻量级的对象封装,使得JAVA程序员可以随心所欲地使用面向对象的编程思想来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在JAVA的客户端程序中使用,也可以在Servlet/JSP的WEB应用中使用。

2、JNDI(Java Naming and Directory Interface):即JAVA命名与目录接口。JNDI提供统一的客户端API,通过不同的访问提供者接口SPI(Service Provider Interface)实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得JAVA应用程序可以和这些命名服务和目录服务之间进行交互。

JNDI可访问的目录服务有:DNS(Domain Name System)、Xnam(一种开源的目录服务)、Novell目录服务、LDAP(Lightweight Directory Access Protocol)、CORBA(Common Object Request Broker Architecture)对象服务、文件系统、Windows注册表、RMI(Remote Method Invocation)和NIS(Network Information Service)。 JNDI具有如下优点:

(1) 包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务;

(2) 可以同时连接到多个命名和目录服务上;

(3) 允许把名称同JAVA对象或资源关联起来,而不必知道对象或资源的物理标识。

3、JavaMail:是用于访问邮件服务器、读取、撰写和发送电子邮件信息的应用程序接口,提供了一套邮件服务器的抽象类,不仅支持SMTP(Simple Mail Transfer Protocol)服务器,也支持IMAP(Internet Message Access Protocol )服务器。

JavaMail利用JAF(JavaBeans Activation Framework)来处理MIME(Multi-purpose Internet Mail Extensions)编码的邮件附件;MIME的字节流可以与JAVA对象相互转换。

4、JMS(Java Message Service):是一组JAVA应用程序接口,提供创建、发送、接收、读取消息的服务。JMS是一种与厂商无关的API,用来访问消息收发系统(消息中间件)。许多厂商目前都支持 JMS,包括 IBM的MQSeries、BEA的Weblogic JMS Service等。

JMS 能够通过消息收发服务从一个JMS客户机向另一个JMS客户机发送消息。消息是 JMS 中的一种类型对象,由两个部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型,可以将消息划分为:简单文本(TextMessage)、可序列化的对象(ObjectMessage)、属性集合(MapMessage)、字节流(BytesMessage)、原始值流(StreamMessage)和无有效负载的消息(Message)。

消息收发系统是异步的,即JMS客户机可以发送消息而不必等待回应。这完全不同于基于RPC(Remote Procedure Call)的系统,如EJB、CORBA和JAVA RMI等。在RPC中,客户机调用服务器上某个分布式对象的一个方法,在方法调用返回之前,该客户机被阻塞;该客户机在可以执行下一条指令之前,必须等待方法调用结束。

在JMS中,客户机将消息发送给一个虚拟通道(主题或队列),而其它JMS客户机则预订或监听这个虚拟通道,当JMS客户机发送消息时,它并不等待回应,它执行发送操作,然后继续执行下一条指令。消息可能最终转发到一个或许多个客户机,这些客户机都不需要作出回应。

JMS的通用接口集合以异步方式发送或接收消息。JMS采用一种宽松结合方式整合应用系统的方法,其主要的目的就是创建能够使用跨平台数据信息的、可移植的应用程序,而把开发人员解放出来。

JAVA消息服务支持两种消息模型:点对点消息(P2P)和发布/订阅消息(Publish Subscribe Messaging,简称Pub/Sub)。P2P消息模型是在点对点之间传递消息时使用;如果应用程序开发者希望每一条消息都能够被处理,

那么应该使用P2P消息模型。与Pub/Sub消息模型不同,P2P消息总是能够被传送到指定的位置。Pub/Sub模型在一到多的消息广播时使用;如果一定程度的消息传递的不可靠性可以被接受的话,那么应用程序开发者也可以使用Pub/Sub消息模型。

JMS通过允许创建持久订阅来简化时间相关性,即使消息预订者未激活也可以接收到消息。此外,使用持久订阅还可通过队列提供灵活性和可靠性。

资源层是整个架构的最底层,主要用于存储和管理持久化数据。数据的存储与管理系统可以是文件系统 、电子邮件系统、消息系统、目录数据库管理系统和关系数据库管理系统。

目录服务器支持基于LDAP协议的主流服务器,包括OpenLDAP;消息中间件使用支持JMS的消息传输系统;数据库采用Oracle、SQL Server和DB2等主流关系型数据库。

LDAP是一个访问在线目录服务的协议。LDAP的信息是以树型结构存储的,在树根一般定义国家或域名,在其下则往往定义一个或多个组织或组织单元。LDAP目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适合存储修改频繁的数据,而适合存储机构及人员信息 、数字证书和安全密钥、邮件地址、网址、IP等数据。

本文来源:https://www.bwwdw.com/article/p5xj.html

Top