Tomcat—— 4.Server组件

服务器(server):表示一个正在JVM运行的Tomcat实例 (单例的);Server代表整个catalina servlet容器;包含一个或多个service子容器。  在这里插入图片描述
Server代表完整的Tomcat实例,在Java虚拟机中是单例,主要是用来管理容器下各个Serivce组件的生命周期。
Server实例是通过server.xml配置文件来配置的;其根元素所代表的正是Tomcat实例,默认实现为org.apache.catalina.core.StandardServer。但是,你也可以通过标签的class属性来自定义服务器实现。
服务器重要的一方面就是它打开了8005端口(默认端口)来监听关闭服务命令(默认情况下命令为SHUTDOWN)。当收到shutdown命令后,服务器会优雅的关闭自己。同时出于安全考虑,发起关闭请求的连接必须来自同一台机器上的同一个运行中的Tomcat实例。
Server还提供了一个Java命名服务和JNDI服务,可以通过这两个服务可以使用名称来注册专用对象(如数据源配置)。在运行期,单个组件(如Servlet)可以使用对象名称来通过服务器的JNDI绑定服务来查找需要的对象相关信息。虽然JNDI实现并不是Servlet容器的功能,但是它属于JavaEE规范一部分,并且可以为Servlet从应用服务器或者servlet容器中获取所需要的信息提供服务。
虽然在一个JVM中通常只有一个服务器实例,但是完全可以在同一台物理机器中运行多个服务器实例,每个实例对应一个JVM实例(一台物理服务器上可以在启动多个JVM的情况下在每一个JVM中启动一个Tomcat实例,每个实例分属于一个独立的管理端口。);这种做法将运行在一个JVM中的应用中的错误与其他JVM中应用的错误隔离开来互不影响,这也简化了维护使得JVM的重启与其他独立开来。这是一个共享主机环境的机制(另一种是虚拟主机机制,很快我们将会看到),这种机制下需要将运行在同一物理主机下的多个web应用隔离开来。
启动一个server实例(即一个JVM),它监听在8005端口以接收shutdown命令,使用 telnet 连接8005 端口可以直接执行 SHUTDOWN 命令来关闭 Tomcat。各Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例,必须配置它们使用不同的端口。这个端口的定义用于为管理员提供一个关闭此实例的便捷途径,因此,管理员可以直接telnet至此端口使用SHUTDOWN命令关闭此实例。不过,基于安全角度的考虑,这通常不允许远程进行。

<Server port="8005" shutdown="SHUTDOWN" debug="0">

server标签内参数
className: 指定实现org.apache.catalina.Server接口的完全限定类的名称.默认值为org.apache.catalina.core.StandardServer
port: 服务器等待关机命令的TCP/IP端口号。设置为-1以禁用关闭端口。默认仅允许通过本机访问,默认为8005;
shutdown: 必须通过TCP/IP连接接收到指定端口号的命令字符串,以关闭Tomcat。默认为SHUTDOWN
address: 服务器等待关机命令的TCP/IP地址。如果没有指定地址,则使用localhost。
测试:

[root@node2 bin]# pwd
/share/soft/tomcat9/bin
[root@node2 bin]# ./startup.sh 
Using CATALINA_BASE:   /share/soft/tomcat9
Using CATALINA_HOME:   /share/soft/tomcat9
Using CATALINA_TMPDIR: /share/soft/tomcat9/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /share/soft/tomcat9/bin/bootstrap.jar:/share/soft/tomcat9/bin/tomcat-juli.jar
Tomcat started.
[root@node2 bin]# ps aux | grep java
root      18859 38.5  1.4 6085556 118052 pts/1  Sl   13:25   0:03 /usr/bin/java -Djava.util.logging.config.file=/share/soft/tomcat9/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /share/soft/tomcat9/bin/bootstrap.jar:/share/soft/tomcat9/bin/tomcat-juli.jar -Dcatalina.base=/share/soft/tomcat9 -Dcatalina.home=/share/soft/tomcat9 -Djava.io.tmpdir=/share/soft/tomcat9/temp org.apache.catalina.startup.Bootstrap start
root      18898  0.0  0.0 112712   964 pts/1    S+   13:26   0:00 grep --color=auto java
[root@node2 bin]# telnet localhost 8005
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SHUTDOWN
Connection closed by foreign host.
[root@node2 bin]# telnet localhost 8005
Trying ::1...
telnet: connect to address ::1: Connection refused

————Blueicex 2020/2/28 12:25 blueice1980@126.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值