关于java:029期JavaEE面试题一Web应用服务器

7次阅读

共计 3439 个字符,预计需要花费 9 分钟才能阅读完成。

开篇介绍

大家好,我是 Java 最全面试题库 的提裤姐,明天这篇是 JavaEE 面试题系列的第一篇,次要总结了 Web 应用服务器 相干的问题,在后续,会沿着第一篇开篇的常识线路始终总结上来,做到日更!如果我能做到百日百更,心愿你也能够跟着百日百刷,一百天养成一个好习惯。

Tomcat 是什么

tomcat 是一个web 应用服务器。比方,咱们写的我的项目打包成 war 包当前须要放到 tomcat 指定的目录下。在启动 tomcat 就能够拜访。

Tomcat 缺省端口是多少,如何批改?

Tomcat 缺省端口是8080

批改 tomcat 端口:
1、找到 tomcat 目录下的 conf 文件夹;
2、进入 conf 文件夹找到 server.xml 文件
3、在server.xml 文件外面找到Connector 标签,把port="8080",改成需要端口即可。

Tomcat 有那几种 Connector 运行模式?

bio
<Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="HTTP/1.1"/>

nio
<Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="org.apache.coyte.http11.Http11NioPortocol"/>

aio
<Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="org.apache.coyte.http11.Http11NioPortocol"/>

什么是 Servlet?

Servlet(Servlet Applet),全称 Java Servlert。是用 Java 编写的服务器端程序。其次要性能在与交互式的浏览和批改数据,生成动静 Web 内容。广义的 servlet 是指 Java 语言实现的一个接口,狭义的 Servlet 是指任何实现了这个 Servlet 的类,个别状况下,人们将 Servlet 了解为后者。比方 HttpServlet 类继承自 Servlet 类,能够利用继承 Http Servlet 来实现 Http 申请,当不是 Http 申请的时候,也能够定义其余模式的 Servlet。

Servlet 申请过程?

  • Tomcat 容器中通过 web.xml 加载所有的 Servlet。
  • 用户在浏览器输出不同的地址,向 Tomcat 容器申请资源。
  • Tomcat 容器依据地址首先在容器内找到利用 ServletTest。
  • Tomcat 容器再依据地址去 web.xml 找到相应的 servlet 地址。
  • Tomcat 容器依据找到的 servlet 地址去 web.xml 找到相应的 Servlet 类,并实例化。
  • Tomcat 容器实例化相应的 Servlet,首先调用 init 办法。
  • Tomcat 容器实例化相应的 Servlet,首先调用 service 办法解决用户申请,比方 post 或者是 get。
  • Servlet 解决实现之后,先将数据给 Tomcat 容器,Tomcat 容器再把处理结果给浏览器客户端。
  • Tomcat 容器调用 servlet 实例的 destory 办法销毁这个实例。

Tomcat 执行流程

1. 申请被发送到本机端口 8080,被在那里侦听的 Coyote HTTP/1.1 Connector 取得
2.Connector 把该申请交给它所在的 Service 的 Engine 来解决,并期待来自 Engine 的回应
3.Engine 取得申请localhost/ 我的项目 / 页面.jsp,匹配它所领有的所有虚拟主机 Host
4.Engine 匹配到名为 localhost 的 Host(即便匹配不到也把申请交给该 Host 解决,因为该 Host 被定义为该 Engine 的默认主机)
5.localhost Host 取得申请/ 我的项目 / 页面.jsp,匹配它所领有的所有 Context
6.Host 匹配到门路为/ 我的项目的 Context(如果匹配不到就把该申请交给路径名为””的 Context 去解决)
7.path="/ 我的项目" 的 Context 取得申请 / 页面.jsp,在它的 mapping table 中寻找对应的 servlet
8.Context 匹配到URL PATTERN*.jsp的 servlet,对应于 JspServlet 类
9. 结构 HttpServletRequest 对象和 HttpServletResponse 对象,作为参数调用 JspServlet 的 doGetdoPost办法
10.Context 把执行完了之后的 HttpServletResponse 对象返回给Host
11.Host 把 HttpServletResponse 对象返回给Engine
12.Engine 把 HttpServletResponse 对象返回给Connector
13.Connector 把 HttpServletResponse 对象返回给客户browser

Tomcat 部署形式?

1. 间接把 Web 我的项目放在 webapps 下,Tomcat 会主动将其部署
2. 在server.xml 文件上配置 <Context>\ 节点,设置相干的属性即可
3. 通过Catalina 来进行配置: 进入到 confCatalinalocalhost 文件下,创立一个 xml 文件,该文件的名字就是站点的名字。

什么是 JBoss ?

JBoss 是一个基于 J2EE 的凋谢源代码的应用服务器

在 JBoss 7 中拜访治理控制台的默认端口是什么?

默认端口为 9990

独立模式和域模式有什么区别?

独立模式是单个 JVM 过程, 其中每个 JBoss 服务器都有其配置。如果你只须要一个 JVM 或开发环境, 那么独立运行将是完满的抉择。
域模式可能具备多个服务器, 其中所有配置都集中管理, 并且常常在生产环境中应用。

<validate-on-match> 和 <background-validation> 有什么区别?

每次都验证数据库连贯, 如果连贯有效, 它将在日志中写正告。
配置”匹配时验证”可能会给数据库带来一些高负载, 因为它可能会创立很多申请。
依据为 ”background-validation-millis” 配置的频率定期验证连贯。默认配置设置为零示意禁用。
将 ”background-validation” 设置为 true 将会创立更少的数据库连贯, 并且如果连贯生效, 它的副作用将无奈立刻检测到。

可用于标记文件部署的重要类型有哪些?

  • .dodeploy –批示部署
  • .deployed –示意文件已部署
  • .pending –部署仍在期待中
  • .undeployed- 确认应用程序已勾销部署
  • .failed –因为某种原因部署失败
  • .skipdeploy –批示 JBoss 疏忽文件以进行主动部署

JBoss 中能够部署哪些文件类型?

  • WAR – Web 应用程序档案
  • SAR –服务档案
  • JAR – Java 存档
  • EAR –企业应用程序档案

什么是 Jetty?

Jetty 是一个提供 HTTP 服务器、HTTP 客户端和 javax.servlet 容器的开源我的项目

Jetty 启动过程?

  • 首先启动设置到 Server 的 Handler
  • 这些 Handler 将组成一个 Handler 链
  • Server 会启动链上所有的 Handler
  • 启动 Connector,关上端口,承受客户端申请。

Jetty 和 Tomcat 的区别?

架构
Jetty 的架构比 Tomcat 的更为简略 Jetty 的架构是基于 Handler 来实现的,次要的扩大性能都能够用 Handler 来实现,扩大简略。Tomcat 的架构是基于容器设计的,进行扩大是须要理解 Tomcat 的整体设计构造,不易扩大。

性能
Jetty 和 Tomcat 性能方面差别不大 Jetty 能够同时解决大量连贯而且能够长时间放弃连贯,适宜于 web 聊天利用等等。Jetty 的架构简略,因而作为服务器,Jetty 能够按需加载组件,缩小不须要的组件,缩小了服务器内存开销,从而进步服务器性能。Jetty 默认采纳 NIO 完结在解决 I / O 申请上更占优势,在解决动态资源时,性能较高

解决能力
Tomcat 适宜解决多数十分忙碌的链接,也就是说链接生命周期短的话,Tomcat 的总体性能更高。Tomcat 默认采纳 BIO 解决 I / O 申请,在解决动态资源时,性能较差。

其它
Jetty 的利用更加疾速,批改简略,对新的 Servlet 标准的反对较好。Tomcat 目前利用比拟宽泛,对 JavaEE 和 Servlet 的反对更加全面,很多个性会间接集成进来。

正文完
 0