目前,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技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如"编写一次、随处运行"的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。
J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。
J2EE为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制:
J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。事实上,sun设计J2EE的初衷正是为了解决两层模式(client/server)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想,而且经常基于某种专有的协议�D�D通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。现在J2EE 的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层,以下是 J2EE 典型的四层结构:
J2EE应用程序组件
J2EE应用程序是由组件构成的.J2EE组件是具有独立功能的软件单元,它们通过相关的类和文件组装成J2EE应用程序,并与其他组件交互。J2EE说明书中定义了以下的J2EE组件:
客户层组件
J2EE应用程序可以是基于web方式的,也可以是基于传统方式的.
web 层组件
J2EE web层组件可以是JSP 页面或Servlets.按照J2EE规范,静态的HTML页面和Applets不算是web层组件。
正如下图所示的客户层那样,web层可能包含某些 JavaBean 对象来处理用户输入,并把输入发送给运行在业务层上的enterprise bean 来进行处理。
业务层组件
业务层代码的逻辑用来满足银行,零售,金融等特殊商务领域的需要,由运行在业务层上的enterprise bean 进行处理. 下图表明了一个enterprise bean 是如何从客户端程序接收数据,进行处理(如果必要的话), 并发送到EIS 层储存的,这个过程也可以逆向进行。
有三种企业级的bean: 会话(session) beans, 实体(entity) beans, 和 消息驱动(message-driven) beans. 会话bean 表示与客户端程序的临时交互. 当客户端程序执行完后, 会话bean 和相关数据就会消失. 相反, 实体bean 表示数据库的表中一行永久的记录. 当客户端程序中止或服务器关闭时, 就会有潜在的服务保证实体bean 的数据得以保存.消息驱动 bean 结合了会话bean 和 JMS的消息监听器的特性, 允许一个业务层组件异步接收JMS 消息.
企业信息系统层
企业信息系统层处理企业信息系统软件包括企业基础建设系统例如企业资源计划 (ERP), 大型机事务处理, 数据库系统,和其它的遗留信息系统. 例如,J2EE 应用组件可能为了数据库连接需要访问企业信息系统
这种基于组件,具有平台无关性的J2EE 结构使得J2EE 程序的编写十分简单,因为业务逻辑被封装成可复用的组件,并且J2EE 服务器以容器的形式为所有的组件类型提供后台服务. 因为你不用自己开发这种服务, 所以你可以集中精力解决手头的业务问题.
容器和服务
容器设置定制了J2EE服务器所提供得内在支持,包括安全,事务管理,JNDI(Java Naming and Directory Interface)寻址,远程连接等服务,以下列出最重要的几种服务:
容器类型
J2EE应用组件可以安装部署到以下几种容器中去:
J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述):
文章浏览阅读4k次。简单的按键程序,只是为了熟悉STM32CubeMx开发环境的开发流程。_配置key-up按键管脚的工作模式(
文章浏览阅读3.1k次。bios_bios进不去
文章浏览阅读1.7k次。windows docker使用centos7装宝塔后,服务不会自动启动问题解决_宝塔面板开启没有自启
文章浏览阅读1.8k次。原文地址:http://blog.sina.com.cn/s/blog_455245fc01000a43.html今天想写个程序,需要对话框在屏幕的右下角。懒得想就去网上搜搜,不过却没找到什么好的。大部分都是给个函数MoveWindow,或者SetWindowPos却不给大家写用法。比如怎么的到对话框的大小等等!反正就是不方便向我一样新手学习。 所以我今天就献丑了,把这写出来。虽然没..._帆软弹窗只能在中间吗
文章浏览阅读4.1w次,点赞29次,收藏69次。参考博文:https://blog.csdn.net/Jonms/article/details/804646221.简单粗暴法对于判断一个数n是否为素数,按素数的定义,试除以从2开始到m-1的整数,如果都不能整除,则该数一定是素数。#include <iostream>#include <algorithm>using namespace std;bool ..._c++判断素数
文章浏览阅读6.5k次,点赞5次,收藏6次。解决关于Git无法提交 index.lock File exists的问题问题今天提交代码时,在一次提交,莫名其妙没成功后,再次用git commit -a命令时,出现以下错误,无论是用git还是TortoiseGit等其他客户端都会出现以下这个问题。。错误日志 $ git commit -a fatal: Unable to create ‘XXXXXX/.git/index.lock..._d:/sdnyspringcloudcode/procurementcloud_sdny/.git/index.lock': file exists.
文章浏览阅读6.3k次,点赞3次,收藏4次。webGL可以让我们在canvas上实现3D效果。而three.js是一款webGL框架,由于其易用性被广泛应用。如果你要学习webGL,抛弃那些复杂的原生接口从这款框架入手是一个不错的选择。自己虽然在去年6月份接触过一段时间,但是一直没有时间研究一下,对webGL了解的也不是很多,近来有些时间,总结一下自己掌握的这些WEBGL的东西,也给大家分享一下。在本篇文章当中,会以一个demo为例,读_three.js (webg)
文章浏览阅读9.4k次,点赞3次,收藏2次。原理:播放视频,canvas截图,base64转文件播放视频:input file选择文件,video播放视频 <video :src="file.src" id="video" controls="controls" style="width:100%;max-height:400px;"> </video>截图_js获取视频缩略图
文章浏览阅读591次。一、使用CacheBuilder.newBuilder() .方法包:package com.google.common.cachemaven依赖:<dependency><groupId>com.geogle.guava</groupId><artifactId>guava</artifactId><version>11.0.2</version>..._cachebuilder.newbuilder()
文章浏览阅读1.5k次。实验配置拓扑1:配主机IP地址2:在交换机1和2上创建vlan10,vlan20,把相应拓扑图示端口加入vlan中SW1配置:使用show vlan命令查看端口是否加入vlan中SW2配置:SW3配置:此时交换机划分vlan,但交换机之间没有打trunk模式,测试此时pc能否联通。3:对交换机打上trunk模式交换机3在f0/1-2两个接口先进行封装协议,再打trunk此时发现pc端相同vlan间能够ping通。配置步骤:创建vlan划分端口设置交换机之间t_*跨交换机配置vlan的目的是什么,步骤和命令是什么?
文章浏览阅读2.9k次,点赞7次,收藏30次。效果图如下:对于任意图标都不需要自定义模板,直接程序生成,不过需要注意,图中的表格必须是水平的,无法适配倾斜的表格。直接上代码:import cv2import numpy as npimport mathimport xlwtsrc='图片路径'raw = cv2.imread(src, 1)# 灰度图片gray = cv2.cvtColor(raw, cv2.COLOR_BGR2GRAY)binary = cv2.adaptiveThreshold(~gray, 255, c_opencv 提取图像中的excel
文章浏览阅读7.2k次,点赞3次,收藏9次。LinearLayout是开发中使用率很高的控件,大部分开发人员感觉应该是很熟悉了,不过LinearLayout还有如下几个需要注意的地方,深刻了解以下几点可以让我们更加全面地认识LinearLayout的真正功能,避免开发中不自觉的踩坑。 一、当父控件orientation为vertical时,只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left、right、center_h..._linearlayout的divider和showdividers属性