java ejb jsp 架构_JavaEE架构

B/S 体系结构

cbc519f0a98b

image.png

Java EE 经典架构

cbc519f0a98b

image.png

Java EE 13规范

JDBC

cbc519f0a98b

image.png

JDBC 对象与接口

java.sql.DriverManager:

用于管理JDBC驱动的服务类,当JDBC驱动加载至内存后,DriverManager会自动注册JDBC驱动,然后通过getConnection方法建立Java应用至DBMS的连接;

java.sql.Connection:

数据库连接对象,通过createStatement创建SQL声明;

java.sql.Statement:

SQL语句接口,通过executeQuery或executeUpdate执行一个静态的SQL语句;

java.sql.ResultSet:SQL语句执行结果对象,包含了若干维护表记录的操作方法;

java.sql.SQLException:SQL操作期间的异常处理,所以异常均通过该类抛出;

JDBC 连接池

cbc519f0a98b

image.png

JNDI

Java Naming and Directory Interface(Java命名和目录服务接口),是命名目录服务的抽象接口集合,为企业级应用提供了统一的标准化连接,使Java能无缝获取任何可目录化的企业信息。

JNDI包含API与SPI(服务提供接口),JNDI SPI用于命名和目录服务的设计与实现,使各类数据服务标准化,JNDI API用于快速方便的访问任何目录服务。

JNDI由3个包组成:

javax.naming:定义了命名服务的类型,以及所有 存取标准接口;

javax.naming.directory:是javax.naming的扩展,提供了所有对于目录服务的 访问标准操作与接口;

javax.naming.spi:定义了命名目录的服务接口,遵循这些标准接口,开发者能够为不同数据服务编写出统一的命名目录服务;

RMI

定义

基于 TCP/IP 套接字方式的分布式调用,是 Java 开发分布式应用的基础,简单来说,就是把接口(Interface)与实现从本地移到了远程的服务器上,从而实现了接口与实现的分布式调用。

cbc519f0a98b

image.png

Servlet

Servlet的定义:

是部署在Java的Web服务器上的组件,整个Java服务端程序都构建在Servlet之上,以多线程方式提供服务,具有效率高,可扩展,可移植的特点;

JSP的定义:

Java Server Page,所有JSP页面在执行时都会被编译成Servlet,由JSP页面生成的Serlvet叫作“JSP页面实现类”,甚至可以把JSP认为是嵌入了Java语句的HTML页面文件;

Servlet / JSP的关系:

在页面展现上,Servlet通过输出HTML语句来实现动态页面,如果SUN不推出JSP标准,那么Java的Web页面开发(动态页面的交互过程)将会十分痛苦

EJB

整体结构

cbc519f0a98b

image.png

从上图中可以看到,JavaBEAN,RMI与JNDI,在EJB中是基础,起到关键作用;

1、EJB被成功发布后,客户端通过JNDI获得对HOME接口的引用;

2、然后通过HOME对象得到EJB对象;

3、最后,客户端就可以通过EJB对象来调用EJB实例的业务方法

EJB作用示意图

cbc519f0a98b

image.png

EJB包括3种类型的Bean:

会话Bean(Session):用于描述业务处理过程,可以作为其他Bean的客户端,用来调用其他Bean;

实体Bean(Entity):用于描述数据,提供了持久数据的操作与表示,可同时与多个客户机进行交互,运行结束后,其状态仍能保留;有2种类型的实体Bean,CMP与BMP;

消息驱动Bean(Message-Driven):集成了JMS和EJB的功能,不向客户端开放,只用于系统内部的交互;

JTA

JTA(Java Transaction API),Java事务API,其定义为:

是一组事务接口定义,描述了对于不同资源(包括数据库,EJB,服务通讯等)的事务处理规范;

需要注意的是:

JTA只提供了接口,并没有提供实现类,完全需要自行实现;

JTA可以实现同一事务对应不同的资源,但是不能实际事务的嵌套;

JTA的主要组成

javax.transaction.UserTransactoin定义了事务的操作范围,包括启动、提交以及回滚;

javax.transaction.xa.XAResource是面对各类资源的事务接口,JTA采用XA接口规范作为自身的资源标准,所以,只要是符合XA的资源,JTA都能够处理

JMS

JMS(Java Message Service)的定义

提供了一列创建、发送、接收、和读取企业消息的通用方法;

JMS中的消息通讯都是异步方式的;

JMS可以处理由其他类型客户端所发消息;

具体JMS应用的组成

客户端:用来处理消息的应用,分为JMS客户与非JSM客户端,区别在于实现的技术有所不同;

消息(Message):在不同应用或组件中进行异常通讯的请求、事件或报告;

JMS Provider:实现了JMS标准的应用服务;

被管理对象:事先配置的JMS对象,由管理员为使用JMS的客户端所创建

JMS的消息传递方式

PTP:点对点方式,以队列的方式进行消息的处理;

Pub/Sub:发布/订阅方式,包含了“消息调适器(Topic)”,通过这个调用器来处理消息;

2种方式也可以同时存在一个应用中;

cbc519f0a98b

image.png

Java EE 轻量级架构

Mybatis

MyBatis是一个数据持久层(ORM)框架,在实体类和关系数据库之间建立了sql映射关系,是一种半自动化的ORM实现。

Spring

特点:Ioc/DI(控制反转/依赖注入)、AOP(面向切面)

Spring 包含并管理 应用对象 的配置和生命周期,在这个意义上它是一种容器,Spring 可以配置bean如何被创建,基于一个可配置原型 (prototype),bean可以创建一个单独的实例或者每次需要时都生成一个新的实例,以及bean之间是如何相互关联的。

cbc519f0a98b

image.png

cbc519f0a98b

image.png

Spring容器了很多服务,但这些服务并不是默认打开的,应用需要某种服务,需要先指明使用该服务,如果应用使用的服务很少,如:只使用了spring核心服务,那么我们可以认为此时应用属于轻量级的,如果应用使用了spring提供的大部分服务,这时应用就属于重量级。

EJB容器就因为它默认为应用提供了EJB规范中所有的功能,所以它属于重量级。

SpringBoot

核心

自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置

起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。

命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。

Actuator:能够监控运行中的Spring Boot应用程序

经典架构

cbc519f0a98b

image.png

轻量级架构

cbc519f0a98b

image.png

轻量级微服务架构

cbc519f0a98b

image.png

轻量级前后端分离架构

cbc519f0a98b

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最大开源代码sourceforge 简介 及视音频方面常用的开源代码

所有的音视频凯源代码在这里:http://sourceforge.net/directory/audio-video/os:windows/,你可以下载分析,视频不懂请发邮件给我,帮你分析。 0.视频项目 0.1 VLC media player VLC 多媒体播放器(最初为VideoLAN Clien…

notepad编译java_Notepad++直接编译运行java代码的具体步骤

最近不少朋友表示还不会Notepad直接编译运行java代码的操作步骤,使用下面小编就带来了Notepad直接编译运行java代码的操作方法哦,一起去看看吧。Notepad直接编译运行java代码的具体步骤下载Notepad,找到Plugin Manager。插件--->Plugin Ma…

基于linux 的2048

于 debian 接着写 2048, 的影响,如下面的: 感兴趣的朋友能够在这里(http://download.csdn.net/download/kamsau/7330933)下载。 版权声明:本文博客原创文章,博客,未经同意,不得转载。…

架构师之路

1. 架构师之路(1)---面向过程和面向对象 1、引言 机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的…

r语言做断轴_R语言用nls做非线性回归以及函数模型的参数估计

非线性回归是在对变量的非线性关系有一定认识前提下,对非线性函数的参数进行最优化的过程,最优化后的参数会使得模型的RSS(残差平方和)达到最小。在R语言中最为常用的非线性回归建模函数是nls,下面以car包中的USPop数据集为例来讲解其用法。数…

day8-异常处理与网络编程

第1章 异常处理 1.1 什么是异常? 1.1.1 描述 #1 什么是异常? # 异常是错误发生的信号,一旦程序出错,就会产生一个异常,应用程序未处理该异常, # 异常便会抛出,程序随之终止 异常就是程序运行时发生错误的信…

进程(并发,并行) join start 进程池 (同步异步)

一、背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的…

xamarin怎么调用java的_XamarinSQLite教程在Xamarin.Android项目中使用数据库

XamarinSQLite教程在Xamarin.Android项目中使用数据库在Xamarin.Android项目中使用预设数据库的具体操作步骤如下:(1)创建一个Xamarin.Android项目,如AndroidSQLiteDemo。(2)在AndroidSQLiteDemo项目的Resources文件夹下创建一个Raw文件夹。(3)将上一节中…

服务框架及服务治理组件——业界调研

声明:主要内容来自公司内部 对业界的调研,不一定恰当、准确、实时。 表格文字较多,APP阅读体验较差 团队服务相关组件\方案通信框架监控负载均衡\路由是否开源腾讯完全自研;BG内部自治,每个BG有自己相应的解决方案,单独…

Swift快速入门(一)第一个Swift程序

1. 本系列说明 本系列只是一个Swift快速入门的教程,并没有详尽的介绍Swift,Swift也并不是一个简单的编程语言,所以要想详尽的系统的学习Swift,本系列并不适合你,此系列只是让开发者可以快速的用Swift来进行开发。另外学…

Scala学习之爬豆瓣电影

简单使用Scala和Jsoup对豆瓣电影进行爬虫,技术比較简单易学。写文章不易,欢迎大家採我的文章,以及给出实用的评论,当然大家也能够关注一下我的github;多谢。 1、爬虫前期准备 找好须要抓取的链接:https://m…

[JMX一步步来] 9、基于JBoss来写MBean

前面都是用JDK自带的JMX实现来写的MBean,JMX的实现不独SUN一家,JBOSS也有自己的JMX实现。如果你使用JBOSS来做WEB服务器,那么基于JBOSS的实现来写MBean,是一个不错的选择。象我们公司就是用JBOSS的,因此所有MBean都是基…

一个漂亮的输出MySql数据库表结构的PHP页面

经常为了方便和直观,我们会首先直接在数据库中设计出表,但是接下来又要将表的结构和设计编写在设计文档中,以便编码的时候可以直观的查询,一旦数据库表非常多,字段非常多的时候,这无疑是件非常郁闷的工作。…

java 属于以下哪种语言_Java属于以下哪种语言?( )

对于宝来(Bora2004)轿车EPS系统,属于当转向扭矩传感器G269发生故障时,只需单独更换转向扭矩传感器就行了。一般说来,下语可以根据下列因素判断趋势线的有效性 ( )。关于股价的移动规律,属于下列论述不正确的是( )。如果希望预测未…

C#设计模式(19)——状态者模式(State Pattern)

原文:C#设计模式(19)——状态者模式(State Pattern)一、引言 在上一篇文章介绍到可以使用状态者模式和观察者模式来解决中介者模式存在的问题,在本文中将首先通过一个银行账户的例子来解释状态者模式,通过这个例子使大家可以对状态…

如何规范 CSS 的命名和书写

我开始学前端的时候也是对于规范问题头疼,后来看了网易的NEC规范,惊呼牛逼 NEC : 更好的CSS样式解决方案 只遵循横向顺序即可,先显示定位布局类属性,后盒模型等自身属性,最后是文本类及修饰类属性。 →显示属性自身属性…

《学做程序经理》完整版

文/Joel Spolsky 译/罗小平 指派一名优秀的程序经理,是团队产出优秀软件的重要前提之一。你的团队里可能没有这样的人,其实绝大多数团队都没有。 Charles Simonyi,这位曾与MarthaStewart(译者注:美国女富豪&#…

java工程mvn引用jar_maven 项目加载本地JAR

将jar安装到本地的maven仓库1.首先确定本地有maven环境。2.安装本地jar模板:mvn install:install-file -Dfile -DgroupId -DartifactId -Dversion -Dpackaging示例:mvn install:install-file -DfileF:\jave-ffmpegjave-1.0.2.jar -DgroupIdffmpegjave -D…

优秀的软件企业为何倒下?

最近不到一个月,就看到两家著名公司——SUN公司和Borland公司相继被收购,引起IT界不小的震动,让人感慨万分。在此之前有北电(Nortel)、摩托罗拉的衰退,再往前有 美国数字设备公司Digital(Digita…

kafka exporter v0.3.0 发布: Prometheus官方推荐,欢迎试用

2019独角兽企业重金招聘Python工程师标准>>> 时隔1个半月,kakfa exporter v0.3.0于今日正式发布,欢迎大家试用。 项目地址 Github: https://github.com/danielqsj/kafka_exporter Docker Hub: https://hub.docker.com/r/danielqsj/kafka-expo…