server.xml 是tomcat服务器的核心配置文件,包含了Tomcat的servlet容器(catalina)的所有配置。由于配置的属性特别多,我们在这里主要讲解其中的一部分重要配置。
Server是server.xml的根元素,用于创建一个Server实例,默认使用的实现类是org.apache.catalina.core.standardserver.
port:Tomcat监听的关闭服务器的端口。
shutdown:关闭服务器的指令字符串。
Server内嵌的子元素为Listener, GlobalNamingResources, Service.
默认配置的5个Listener的含义
GlobalNamingResources中定义了全局命名服务
该元素用于创建Service实例,默认使用org.apache.catalina.core.Standardservice,默认情况下,Tomcat仅指定了Service的名称,值为"Catalina",Service可以内嵌的元素为:Listener, Executor, connector, Engine ,其中Listener用于为Service添加生命周期监听器,Executor用于配轿渗备置Service共享线程池,Connector用于配置Service包含喊唤的链接器,Engine用于配置Service中链接器对应的Servlet容器引擎。一个Server服务器,可以包含多个Service服务。
默认情况下Service并未添加共享线程池配置,如果我们想添加一个线程池,可以在下添加如下配置:
属性说明
属性含义
name线程池名称,用于Connector中指定。
nameprefix所创建的每个线程的名称前缀,一个单独的线程名称为namePrefix+threadNumber.
maxThreads池中最大线程数。
minSpareThreads活跃线程数,也就是核心池线程数,这些线程不会被销毁,会一直存在。
maxIdleTime线程空闲时间,超过该时间后,空闲线程会被销毁,默认值为6000 (1分钟) ,单位毫秒。
maxQueuesize在被执行前最大线程排队数目,默认为Int的最大值,也就是广义的无限。除非特殊情况,这个值不需要更改,否则会有请求不会被处理的情况发生。
prestartminSpareThreads启动线程池时是否启动minSpareThreads部分线程。默认值为false,即不启动。
threadPriority线程池中线程优先级,默认值为5,值从1到10。
className
线程池实现类,未指定情况下,默认实现类为org.apache.catalina.core.standardThreadExecutor,如果想使用自定义线程池首先需要实现 org.apache.catalina.Executor接口。
JDK工具jconsole.exe观察线程池被创建
如果不配置共享线程池,那么Catalina各组件在用到线程池时会独立创建。
Connector用于创建链接器实例。默认情况下, server.xml配置了两个链接器,一个支持HTTP协议,一个支闭毁持AJP协议。因此大多数情况下,我们并不需要新增链接器配置,只是根据需要对已有链接器进行优化。
属性说明
1) port:端口号,Connector用于创建服务端Socket并进行监听,以等待客户端请求链接。如果该属性设置为0,Tomcat将会随机选择一个可用的端口号给当前Connector使用。
2)protocol :当前Connector支持的访问协议。默认为HTTP/1.1 ,并采用自动切换机制选择一个基于JAVA NIO的链接器或者基于本地APR的链接器(根据本地是否含有Tomcat的本地库判定)。
如果不希望采用上述自动切换的机制,而是明确指定协议,可以使用以下值。
Http协议:
AJP协议
3) connectionTimeOut: Connector接收链接后的等待超时时间,单位为毫秒。-1表示不超时。
4)redirectPort:当前Connector不支持SSL(HTTP协议证书)请求,接收到了一个请求,并且也符合security-constraint约束,需要SSL传输,Catalina自动将请求重定向到指定的端口。
5)executor:指定共享线程池的名称, 也可以通过maxThreads, minSpareThreads等属性配置内部线程池。
6)URIEncoding:用于指定编码URI的字符编码,
Tomcat8.x版本默认的编码为UTF-8,Tomcat7.X版本默认为ISO-8859-1(解决请求字符串乱码问题,Tomcat8版本默认UTF-8不需要指定URI字符编码)。
完整的配置如下:
Engine作为Servlet引擎的顶级元素,内部可嵌入:Cluster、Listener、Realm、Valve和Host。
属性说明:
1)name:用于指定Engine的名称,默认为Catalina。该名称会影响一部分Tomcat的存储路径(如临时文件)
2)defaultHost:默认使用虚拟主机名称,当客户端请求指向的的主机无效时将交由默认虚拟主机处理,默认为localhost。
Host元素用于配置一个虚拟主机,它支持以下嵌入元素:Alias,cluster,Listener,valve,Realm,context,如果在Engine下配置Realm,那么此配置将在当前Engine下的所有Host中共享。同样,如果在Host中配置Realm , 则在当前Host下的所有context中共享。Context中的Realm优先级>Host的Realm优先级>Engine中的Realm优先级。
属性说明:
1)name:当前Host通用的网络名称,必须与DNS服务器上的注册信息一致。Engine中包含的Host必须存在一个名称与Engine的defaultHost设置一致。
2)appBase:当前Host的应用基础目录,当前Host上部署的web应用均在该目录下(可以是绝对目录,相对路径)。默认为webapps。
3)unpackWARs:设置为true, Host在启动时会将appBase目录下war包解压为目录。设置为false,Host将直接从war文件启动。
4)autoDeploy:控制tomcat是否在运行时定期检测并自动部署新增或变更的web应用。
通过给Host添加别名,我们可以实现同一个Host拥有多个网络名称,配置如下:
Context用于配置一个web应用,默认配置如下:
属性描述 :
1)docBase:Web应用目录或War包的部署路径。可以是绝对路径,也可以是相对于Host appBase的相对路径。
2)Path:Web应用的Context路径。如果我们Host名为localhost,则该web应用访问的路径为: http://localhost:8080/myApp
它支持的内嵌元素为:CookieProcessor,Loader,Manager,Realm,Resources,WatchedResource,Jarscanner,Valve.
该配置文件中,主要配置的是Tomcat的用户,角色等信息,用来控制Tomcat中manager,host-manager的访问权限。
web.xml是web应用的描述文件, 它支持的元素及属性来自于servlet规范定义。在Tomcat中,web应用的描述信息包括tomcat/conf/web.xml中默认配置以及web应用WEB-INE/web.xml下的定制配置。
我们可以通过<context-param>添加ServletContext初始化参数,它配置了一个键值对,这样我们可以在应用程序中使用javax.servlet.ServletContext.getInitParameter()方法获取参数。 可以直接在servlet中进行应用 。
5.2 会话配置
<session-config>用于配置web应用会话,包括超时时间Cookie配置以及 会话追踪模式 。它将覆盖server.xml和context.xml
1)session-timeout:超时时间,单位分钟。
2)cookie-config:用于配置会话追踪Cookie
nane:Cookie的名称
domain:Cookie的域名
path: Cookie的路径
comment: 注释
http-only:cookie只能通过HTTP方式进行访问, JS无法读取或修改,此项可以增加网站访问的安全性。
secuze :设置true则此cookie只能通过HTTPS连接传递到服务器,而HTTP连接则不会传递该信息。注意是从浏览器传递到服务器,服务器端的Cookie对像不受此项影响。
max-age:以秒为单位表示cookie的生存期,默认为-1表示是会话Cookie ,浏览器关闭时就会消失。
3)tracking-mode:用于配置会话追踪模式,Servlet3.0版本中支持追踪模式:COOKIE,URL,SSL
ACOOKIE:通过HTTP Cookie 追踪会话是最常用的会话追踪机制, 而且Servlet规范也要求所有的Servlet规范都需要支持Cookie追踪。
B.URL:URL重写是最基本的会话追踪机制。当客户端不支持Cookie时,可以采用URI重写的方式。当采用URI追踪模式时,请求路径需要包含会话标识信息,Servlet容器会根据路径中的会话标识设置请求的会话信息。如:"http: //www.myserver.com/user/index.htmljessionid=1234567890。
C.SSL:对于SSL请求,通过SSL会话标识确定请求会话标识。
Servlet的配置主要是两部分,servlet和servlet-mapping;
配置说明:
1)sexvlet-name:指定servle的名称,该属性在web.xml中唯一。
2)servlet-class:用于指定servlet类名
3)init-param:用于指定servlet的初始化参数, 在应用中可以通过HttpServlet.getInitParameter获取。
4) load-on-startup:用于控制在Web应用启动时,Servlet的加载顺序。值小于0, web应用启动时,不加载该servlet,第一次访问时加载
5)enabled: true ,false。若为false ,表示servlet不处理任何请求。
6)url-pattern:用于指定URL表达式,一个servlet-mapping可以同时配置多个url-pattern。
Servlet 中文件上传配置
配置说明:
1)location:存放生成的文件地址。
2) max-file-size:允许上传的文件最大值。默认值为-1,表示没有限制。
3)max-request-size:针对该multi/form-data请求的最大数量,默认值为-1,表示无限制。
4)file-size-threshold:当数量量大于该值时, 内容会被写入文件。
Listener用于监听servlet中的事件,例如context、request、session对象的创建、修改、删除,并触发响应响应。Listener是 观察者模式 的 实现 ,在servlet中主要用于context、request、session对象的生命周期进行监控。在servlet 2.5规范中共定义了8重Listener。在启动时,ServletContextListener的执行顺序与web.xml中的配置顺序一致,停止时执行顺序相反。
配置说明:
1)filter-name:用于指定过滤器名称,在web.xm1中,过滤器名称必须唯一。
2)filter-class:过滤器的全限定类名,该类必须实现Filter接口。
3)async-supported:该过滤器是否支持异步。
4)init-param:用于配置Filter的初始化参数,可以配置多个,可以通过 FilterConfig.getInitParameter 获取
5)url-pattern:指定该过滤器需要拦截的URL。
Tomcat conf/web.xml中配置了web默认访问页面。
Tomcat启动后会尝从上到下的请求顺序。
如果在项目的WEB-INF目录下的web.xml中配置访问页面,则会覆盖Tomcat中的默认配置。
error-page用于配置web项目访问异常时定向的页面,支持HTTP响应码和异常类两种形式。优化用户体验,保证系统安全。
Tomcat中自定义错误页面放入ROOT目录下。
项目中将错误页面放在web目录下,并且会覆盖Tomcat中的配置。
从早期的Tomcat版本开始,就提供了web版的管理控制台,他们是两个独立的web应用,位于webapps目录下。Tomcat提供的管理应用有用于管理的Host的host-manager和用于管理web应用的manager。
这两个web应用主要作用就是为Tomcat提供了管理后台,可以通过这两个应用去管理Tomcat中所配置的虚拟主机、Tomcat中部署的web应用、Tomcat占用的JVM内存分配、JVM参数配比等
Host-manager主要用来管理 虚拟主机 信息。Tomcat启动之后,可以通过 http://localhost:8080/host-manager/html 访问该web应用。host-manager默认添加了访问权限控制,当打开网址时,需要输入用户名和密码(conf/tomcat-users.xml中配置) 。所以要想访问该页面,需要在conf/tomcat-users.xml中配置,并分配对应的角色:
1)admin-gui:用于控制页面访问权限
2)admin-script:用于控制以简单文本的形式进行访问
配置如下:
界面:
Manager用来管理部署在当前Tomcat上的web应用,访问路径为 http://localhost:8080/manager ,同样manager也添加了页面访问控制,因此我们需要为登录用户分配角色为:
Server Status查看服务器状态,给JVM内存优化参考数据
电脑屏幕颜色可以在系统设置的颜色中进行调整,本答案介绍了Windows电脑设置、Mac电脑设置等多个方法,以下是Windows电脑设置的 *** 作步骤:工具/原料:联想Y7000P&&MacBook Air、Windows10&&macOS Catalina10.15
1、点击显示器
进入Mac电脑主页茄轿面后,点击下面程序坞中的【设置图标】。打开系统偏好设置页面后,选择并点击【显示器】选项。
2、点击颜色
在跳转的显示器页面中,点击上面的【颜色】颤团肆选项。
3、选择文件即可
进或帆入颜色设置页面后,在左侧的描述文件中选择要设置的颜色文件即可。
第一种方法 在tomcat中的conf目录中 在server xml中的 <host/>节点中添加
<Context path= /hello docBase= D:\eclipse forwebtools\workspace\hello\WebRoot debug= privileged= true >
</Context>
至于Context 节点属性 可详细见相关文档
第二种方法 将web项目文件件拷贝到webapps 目录中
第三种方法 很灵活 在conf目录中 新建 Catalina(注意大小写)\localhost目录 在该目录中新建一个含喊xml文件 名字可以随意取 只要和当前文件中的文件名不重复就行了 该xml文件的内容为
<Context path= /hello docBase= D:\eclipse forwebtools\workspace\hello\WebRoot debug= privileged= true >
</Context>
第 个方法有个优点 可以定义别名 服务器端运行的项目名称为path 外部访问的URL则使用XML的文件名 这个方法很方便的隐藏了项目的名称 对一些项目名称被固定不能更换 但外部访问时又想换个路径 非常有效
第 还有优点 可以定义一些个性配置 如数据源的配置等
还有一篇详细的
直接放到Webapps目录下
Tomcat的Webapps目录是Tomcat默认的应用目录 当服务器启动时 会加载所有这个目录下的应用 也可以将JSP程序打包成一个war包放在目录下 服务器会自动解开这个war包 并在这个目录下生成一个同名的文件夹 一个war包就是有特性格式的jar包 它是将一个Web程序的所有内容进行压缩得到 具体如何打包 可以使用许多开发工具的IDE环境 如Eclipse NetBeans ant JBuilder等 也可以用cmd 命令 jar cvf applicationname war package *
甚至可以在程序执行中打包
try{
string strjavahome = system getproperty( java home )
strjavahome = strjavahome substring( strjavahome lastindexof(\\))+ \\bin\\
runtime getruntime() exec( cmd /c start +strjavahome+ jar cvf hello war c:\\tomcat \\webapps\\root\\* )
}
catch(exception e){system out println(e) }
webapps这个默认的应用目录也是可以改变 打开Tomcat的conf目录下的server xml文件 找到下面内容
<Host name= localhost debug= appBase= webapps unpackWARs= true autoDeloy= true xmlValidation= falase xmlNamespaceAware= false >
在server xml中指定
在Tomcat的配置文件中 一个Web应用就是一个特定的派基Context 可以通过在server xml中新建Context里部署一个JSP应用程序 打开server xml文件 在Host标签内建一个Context 内容如下
<Context path= /myapp reloadable= true docBase= D:\myapp workDir= D:\myapp\work />
其中path是虚拟路径 docBase是JSP应用程序的物理路径 workDir是这个应用的工作目录 存放运行是生成的于这个应用相关的文件
创建一谈羡野个Context文件
以上两种方法 Web应用被服务器加载后都会在Tomcat的conf\catalina\localhost目录下生成一个XML文件 其内容如下
<Context path= /admin docBase= ${catalina home}/server/webapps/admin debug= privileged= true ></Context>
可以看出 文件中描述一个应用程序的Context信息 其内容和server xml中的Context信息格式是一致的 文件名便是虚拟目录名 您可以直接建立这样的一个xml文件 放在Tomcat的conf\catalina\localhost目录下 例子如下
注意 删除一个Web应用同时也要删除webapps下相应的文件夹祸server xml中相应的Context 还要将Tomcat的conf
\catalina\localhost目录下相应的xml文件删除 否则Tomcat仍会岸配置去加载……
tomcat部署web应用主要有以下几种方式
)拷贝你的WAR文件或者你的web应用文件夹(包括该web的所有内容)到$CATALINA_BASE/webapps目录下
)为你的web服务建立一个只包括context内容的XML片断文件 并把该文件放到$CATALINA_BASE/webapps目录下 这个web应用本身可以存储在硬盘上的任何地方 这种context片断提供了一种便利的方法来部署web应用 你不需要编辑server xml 除非你想改变缺省的部署特性 安装一个新的web应用时不需要重启动Tomcat
)同方法 只是将context片断放在CATALINA_BASE\conf\Catalina\localhost目录下 这种方法比方法 >要有效 笔者经过多次实验发现方法 不如后面这种方法好用 前者多次出现系统打不开的情况
)直接在server xml中</Host>前加上Context片断 使用这种方法时 tomcat会自动在CATALINA_BASE\conf\Catalina\localhost目录下生成一个文件片断 方法同方法 具有同样效果 这种方式需要将ROOT目录删除才行
另外 为了让tomcat只运行conf/server xml中指定的web应用 可以有以下几种办法
实现一
)将要部署的WEB应用放在webapps以外的路径 并在server xml相应的context中的docBase指定
)删除webapps中的所有文件夹 以及conf/catalina/localhost下所有xml文件
注 webapps是server xml中的Host元素的appBase属性的值
实现二
)修改server xml中Host元素的属性 添加或修改 deployXML= false deployOnStartup= false autoDeploy= false
)含义
lishixinzhi/Article/program/Java/ky/201311/28718
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)