<Executor name=&#34;tomcatThreadPool&#34; namePrefix=&#34;catalina-exec-&#34; maxThreads=&#34;1000&#34; minSpar" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > 7.Tomcat之參數(shù)配置

7.Tomcat之參數(shù)配置

時(shí)間:2023-06-30 16:33:01 | 來源:網(wǎng)站運(yùn)營

時(shí)間:2023-06-30 16:33:01 來源:網(wǎng)站運(yùn)營

7.Tomcat之參數(shù)配置:

0.連接器和線程池的重要參數(shù)

線程池參數(shù)

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="100" maxIdleTime="60000" maxQueueSize="Integer.MAX_VALUE" prestartminSpareThreads="false" threadPriority="5" className="org.apache.catalina.core.StandardThreadExecutor"/> name線程池名稱,用于 Connector中指定。namePrefix所創(chuàng)建的每個(gè)線程的名稱前綴,一個(gè)單獨(dú)的線程名稱為 namePrefix+threadNumbermaxThreads池中最大線程數(shù)。默認(rèn)值200minSpareThreads活躍線程數(shù)也就是核心池線程數(shù),這些線程不會(huì)被銷毀,會(huì)一直存在。默認(rèn)值10maxIdleTime線程空閑時(shí)間,超過該時(shí)間后空閑線程會(huì)被銷毀,默認(rèn)值為60001分鐘),單位毫秒。當(dāng)核心線程數(shù)滿了之后,新來的任務(wù)會(huì)添加到阻塞隊(duì)列,當(dāng)隊(duì)列滿了之后才會(huì)創(chuàng)建非核心線程,因?yàn)樯鲜鲇玫淖枞?duì)列是無界隊(duì)列所以不會(huì)創(chuàng)建非核心線程, 即該時(shí)間也沒用maxQueueSizelinkedQueue在被執(zhí)行前最大線程排隊(duì)數(shù)目,默認(rèn)為Int的最大值,也就是廣義的無限。除非特殊情況,這個(gè)值不需要更改,否則會(huì)有請(qǐng)求不會(huì)被處理的情況發(fā)生。默認(rèn):Integer.MAX_VALUEprestartminSpareThreads啟動(dòng)線程池時(shí)是否啟動(dòng) minSpareThreads部分線程。默認(rèn)值為false即不啟動(dòng)。threadPriority線程池中線程優(yōu)先級(jí)默認(rèn)值為5,值從1到10。className線程池實(shí)現(xiàn)類,未指定情況下,默認(rèn)實(shí)現(xiàn)類為org.apache.catalina.core.StandardThreadExecutor。如果想使用自定義線程池首先需要實(shí)現(xiàn) org.apache.catalina.Executor接口。 ...線程池的設(shè)置要考慮任務(wù)類型IO型還是計(jì)算密集型,還要兼顧機(jī)器的性能連接器參數(shù)博客

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="10000" redirectPort="8443" maxConnections="2" maxThreads="2" acceptCount="2"/>port:端口protocol:協(xié)議connectionTimeout:是建立TCP連接后,等待第一次客戶端發(fā)送請(qǐng)求的超時(shí)時(shí)間,如果超過則會(huì)斷開連接。默認(rèn)值是60000mskeepAlivedTime:是客戶端發(fā)送完第一次請(qǐng)求后到第二次的間隔超時(shí)時(shí)間時(shí)間。重要參數(shù)

Connector處理連接的過程就像是就餐的過程

1.acceptCount就是預(yù)約的人數(shù)限制,maxConnections就是餐廳中的位置限制,maxThreads就是廚師的數(shù)量 在BIO模型中,一個(gè)廚師只能給一個(gè)餐桌做飯,所以maxConnections=maxThreads,在NIO中一個(gè)廚師可以給 多個(gè)餐桌做飯,所以maxConnections>maxThreads.

2.當(dāng)maxConnections還沒有滿時(shí),就是有空位,不用預(yù)約直接就可以進(jìn)來,如果里面坐滿了,就是去外面排隊(duì)預(yù)約 而最多預(yù)約acceptCount個(gè),再來的人就會(huì)拒絕。

3.maxConnections為10,maxThreads為2,acceptCount為5 連接10個(gè),等待5個(gè),每次處理2個(gè)。

思考

問題:https://segmentfault.com/q/1010000011412748

解釋;https://stackoverflow.com/questions/29925681/tomcat-connector-relationship-between-connectiontimeout-and-keepalivetimeout

1.配置文件

1.Server.xml

是tomcat中容器的配置文件

<?xml version="1.0" encoding="UTF-8"?><!--關(guān)閉服務(wù)器的端口--><Server port="8005" shutdown="SHUTDOWN"> <!--日志形式輸出服務(wù)器,操作系統(tǒng),JVM的版本信息--> <Listener className="org.apache.catalina.startup.VersionLoggerListener"/> <!--用于加載服務(wù)器啟動(dòng)和銷毀服務(wù)器停止APR,如果找不到APR庫,則會(huì)輸出日志不影響tomcat的啟動(dòng)--> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/> <!--用于避免JRE內(nèi)存泄露--> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/> <!-- 全局命名服務(wù)--> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/> <!-- 用于Context停止時(shí)重建Executor中的線程,避免ThreadLocal相關(guān)的內(nèi)存泄露 --> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/> <!-- 全局命名服務(wù)--> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml"/> </GlobalNamingResources> <Service name="Catalina"> <!-- 配置Connector共享線程池 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="200" minSpareThreads="100" maxIdleTime="60000" 時(shí)間是毫秒,1分鐘 maxQueueSize="Integer.MAX_VALUE" prestartminSpareThreads="false" threadPriority="5" className="org.apache.catalina.core.StandardThreadExecutor"/> 如果沒有配置則各個(gè)connector用自己的線程池 --> <!-- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" executor="tomcatThreadPool"/> <!--executor指定共享線程池的名字 --> <!-- AJP協(xié)議監(jiān)聽端口 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> <!-- 默認(rèn)使用的虛擬主機(jī)名稱 當(dāng)客戶端請(qǐng)求指向的主機(jī)無效時(shí), 將交由默認(rèn)的虛擬主機(jī)處理, 默認(rèn)主機(jī)名為localhost --> <Engine name="Catalina" defaultHost="localhost"> <!--For clustering, please take a look at documentation at: /docs/cluster-howto.html (simple how to) /docs/config/cluster.html (reference documentation) --> <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> --> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <!-- Host 元素用于配置一個(gè)虛擬主機(jī), 它支持以下嵌入元素Alias、Cluster、Listener、Valve、Realm、Context 如果在Engine下配置Realm, 那么此配置將在當(dāng)前Engine下的所有Host中共享。 同樣如果在Host中配置Realm , 則在當(dāng)前Host下的所有Context中共享。 Context中的Realm優(yōu)先級(jí) > Host 的Realm優(yōu)先級(jí) > Engine中的Realm優(yōu)先級(jí)。 --> <!-- 1 name: 當(dāng)前Host通用的網(wǎng)絡(luò)名稱 必須與DNS服務(wù)器上的注冊(cè)信息一致。 Engine中包含的Host必須存在一個(gè)名稱與Engine的defaultHost設(shè)置一致。 2 appBase 當(dāng)前Host的應(yīng)用基礎(chǔ)目錄, 當(dāng)前Host上部署的Web應(yīng)用均在該目錄下可以是絕對(duì)目錄,相對(duì)路徑)。默認(rèn)為webapps。 3 unpackWARs 設(shè)置為true, Host在啟動(dòng)時(shí)會(huì)將appBase目錄下war包解壓為目錄設(shè)置為false, Host將直接從war文件啟動(dòng) 4 autoDeploy 控制tomcat是否在運(yùn)行時(shí)定期檢測(cè)并自動(dòng)部署新增或變更的web應(yīng)用。(將改完的包放到tomcat里,不用重新啟動(dòng),tomcat會(huì)自動(dòng)重新部署 --> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- 1 docBaseWeb應(yīng)用目錄或者War包的部署路徑。可以是絕對(duì)路徑也可以是相對(duì)于 Host appBase的相對(duì)路徑。 2 pathWeb應(yīng)用的Context 路徑。如果我們Host名為localhost, 則該web應(yīng)用訪問的根路徑為 http://localhost:8080/myApp。 --> <Context docBase="demon" path="/demon"> </Context> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b"/> </Host> </Engine> </Service></Server>一個(gè)完整的Connector配置

<Connector port="8080" protocol="HTTP/1.1" executor="tomcatThreadPool" maxThreads="1000" minSpareThreads="100" acceptCount="1000" maxConnections="20000" connectionTimeout="20000" compression="on" compressionMinSize="2048" disableUploadTimeout="true" redirectPort="8443" URIEncoding="UTF-8" />

2.多域名測(cè)試

發(fā)送域名---》hosts找域名對(duì)應(yīng)的ip------》找不到后會(huì)去DNS去找IP----------》服務(wù)器(tomcat)

1.在server.xml中創(chuàng)建兩個(gè)host

<Host name="flank1" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b"/> </Host> <Host name="flank2" appBase="webapps2" unpackWARs="true" autoDeploy="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b"/> </Host>
  1. 創(chuàng)建webapps2并將webapps1,webapps2的歡迎頁修改用來區(qū)分。



3.在hosts文件中配置域名和ip的對(duì)應(yīng)

4.啟動(dòng)tomcat測(cè)試 http://localhost:8080/ 此時(shí)已經(jīng)找不到了,是因?yàn)闆]有l(wèi)ocalhost的主機(jī)名都被改成了flank1,flank2




3 tomcat-users.xml

該配置文件中,主要配置的是Tomcat的用戶,角色等信息,用來控制Tomcat中manager, host-manager的訪問權(quán)限。

2.WEB應(yīng)用的配置

web應(yīng)用的配置主要在web.xml文件中,該文件有兩個(gè)地方一個(gè)是tomcat/conf下用來設(shè)置全部應(yīng)用的默認(rèn)設(shè)置,一個(gè)是web應(yīng)用/WEB-INF下面是用來設(shè)置單個(gè)應(yīng)用

2.1

用來設(shè)置當(dāng)前應(yīng)用的全局參數(shù),可以在servlet中獲取使用

<context-param> <param-name>database</param-name> <param-value>mysql</param-value> </context-param>public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { System.out.println("doGet....."); //獲取context-param參數(shù) String database = request.getServletContext().getInitParameter("database"); response.setContentType("text/html"); // Hello PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>" + message + "</h1>"); out.println("<h1>" + database + "</h1>"); out.println("</body></html>"); }





2.2

會(huì)話設(shè)置,什么是會(huì)話?會(huì)話是客戶端和服務(wù)器端的建立的TCP連接,在這個(gè)連接上可以發(fā)送多個(gè)http請(qǐng)求,因?yàn)閔ttp是無狀態(tài)協(xié)議,所以在服務(wù)器端使用Session來記錄用戶,當(dāng)瀏覽器第一次訪問服務(wù)器時(shí),會(huì)先創(chuàng)建Session,并把sessionID返回給瀏覽器,保存在cookie中,叫JSESSIONID, 等下次訪問時(shí)就帶上JSESSIONID,服務(wù)器根據(jù)id來查找對(duì)應(yīng)的Session,這樣服務(wù)器就可以知道是否是同一個(gè)瀏覽器發(fā)送的請(qǐng)求,如果沒有設(shè)置cookie的過期時(shí)間,關(guān)閉瀏覽器后瀏覽器會(huì)清除所有的cookie,再打開訪問瀏覽器就會(huì)創(chuàng)建一個(gè)新的連接,同時(shí)重新創(chuàng)建一個(gè)Session, 所以Session和Cookie都是用來進(jìn)行會(huì)話跟蹤的,服務(wù)器中的Session的存活時(shí)間是可以設(shè)置的。 會(huì)話跟蹤:用來表示一個(gè)TCP連接上的請(qǐng)求是同一個(gè)用戶,或者多個(gè)TCP連接上發(fā)送的請(qǐng)求是同一個(gè)用戶




配置session和cookie,有兩種方式可以在servlet代碼中配置,也可以在web.xml文件中配置。

這些配置也可以在代碼里面寫<!-- 配置Session--> <session-config> <!--session的失效時(shí)間默認(rèn)30分鐘--> <session-timeout>30</session-timeout> <cookie-config> <!--默認(rèn)的名字是JESSIONID也可以修改--> <name>JESSIONID-flank</name> <!--域名--> <domain>localhost</domain> <path>/</path> <!--注釋信息--> <comment>Session Cookie</comment> <!--表示這個(gè)Cookie只能通過瀏覽器發(fā)送http請(qǐng)求攜帶過來,不能通過JS發(fā)送--> <http-only>true</http-only> <!--如果為true則只有https的請(qǐng)求,才能攜帶session信息--> <secure>false</secure> <!--Cookie的有效時(shí)間,一個(gè)小時(shí)--> <max-age>3600</max-age> </cookie-config> <!--跟蹤模式,使用COOKIE進(jìn)行會(huì)話跟蹤,還有就是使用URL進(jìn)行跟蹤,就是將SESSION在URL上進(jìn)行賦值--> <tracking-mode>COOKIE</tracking-mode> </session-config>驗(yàn)證 服務(wù)器端通過代碼

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { System.out.println("doGet....."); //獲取context-param參數(shù) String database = request.getServletContext().getInitParameter("database"); //獲取sessionID String id = request.getSession().getId(); System.out.println("id = " + id); response.setContentType("text/html"); // Hello PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>" + message + "</h1>"); out.println("<h1>" + database + "</h1>"); out.println("<h1>" + id + "</h1>"); out.println("</body></html>"); }瀏覽器端




2.3

<servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>com.example.demo.HelloServlet</servlet-class> <!--設(shè)置servlet的初始化參數(shù),只對(duì)當(dāng)前servlet有效區(qū)別context-param--> <init-param> <!--可以用HttpServlet的getInitParameter方法來獲取值--> <param-name>name</param-name> <param-value>tom</param-value> </init-param> <!-- 應(yīng)用程序啟動(dòng)的時(shí)候加載該Servlet,如果值<0則是當(dāng)?shù)谝淮卧L問時(shí)加載, 可以用servlet的init方法什么時(shí)候調(diào)用來體現(xiàn). --> <load-on-startup>1</load-on-startup> <!--true:表示當(dāng)前servlet可用可以接收請(qǐng)求--> <enabled>true</enabled> </servlet> <!--請(qǐng)求路徑和servlet的映射--> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <!-- 配置應(yīng)用的參數(shù)--> <context-param> <param-name>database</param-name> <param-value>mysql8.2</param-value> </context-param>

2.4

Listener用于監(jiān)聽servlet中的事件,例如context,request,session對(duì)象的創(chuàng)建,修改,刪除,并觸發(fā)響應(yīng)的事件,主要用來對(duì)context,request,session對(duì)象的生命周期進(jìn)行監(jiān)控。

2.5

用來過濾資源請(qǐng)求及響應(yīng),經(jīng)常用于認(rèn)證,日志,加密,數(shù)據(jù)轉(zhuǎn)換等操作,

<filter> <filter-name>myFilter</filter-name> <filter-class>com.example.demo.LanguageFilter</filter-class> <init-param> <param-name>language</param-name> <param-value>CN</param-value> </init-param> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>public class LanguageFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { //獲取filter的配置參數(shù) String language = filterConfig.getInitParameter("language"); System.out.println("filter-init: " + language); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("doFilter"); chain.doFilter(request, response); } @Override public void destroy() { System.out.println("destroy"); }}如果是springboot項(xiàng)目就不用配置方式了,使用注冊(cè)MyFilterBean的方式來創(chuàng)建filter.和Intercepter的區(qū)別

2.6和

<!--歡迎頁面--> <welcome-file-list> <!--嘗試請(qǐng)求的順序,從上到下--> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 當(dāng)出現(xiàn)了異常時(shí)可以避免用戶看到. 用來配置訪問異常時(shí)定向到的頁面,支持HTTP響應(yīng)碼和異常類兩種形式--> <error-page> <error-code>404</error-code> <location>/404.html</location> </error-page> <error-page> <exception-type>java.lang.Exception</exception-type> <location>/505.html</location> <!--在servlet中使用i/0來造異常--> </error-page>





3. Tomcat的管理配置

tomcat提供了兩個(gè)管理程序,在安裝目錄下的webapps下面有兩個(gè)host-manager和manager,前者來管理虛擬主機(jī),后者來管理web應(yīng)用。

4.JVM的配置

tomcat的運(yùn)行需要jdk環(huán)境,啟動(dòng)一個(gè)main方法會(huì)創(chuàng)建一個(gè)JVM實(shí)例,而Tomcat也是通過Bootstrap里的main方法啟動(dòng),所以tomcat也是運(yùn)行在JVM之上的, 當(dāng)main方法運(yùn)行結(jié)束,JVM實(shí)例也就結(jié)束了。 1.JVM內(nèi)存模型圖

2.JVM的配置選項(xiàng),

配置之后, 重新啟動(dòng)Tomcat ,訪問 :

堆內(nèi)存=546.5+1365.5+68(from)+68(to)

5.Tomcat集群

1.安裝兩個(gè)tomcat,分別修改端口號(hào) tomcat_01:關(guān)閉端口號(hào)8015-----Connector端口號(hào)8081-------AJP服務(wù)器間通信協(xié)議端口號(hào)8019 tomcat_02:關(guān)閉端口號(hào)8025-----Connector端口號(hào)8082-------AJP服務(wù)器間通信協(xié)議端口號(hào)8029 2.安裝配置Nginx




  1. 修改tomcat的歡迎頁面,運(yùn)行tomcat01--->tomcat02---->nginx測(cè)試






5.2 負(fù)載均衡的策略

1). 輪詢 最基本的配置方法,它是upstream模塊默認(rèn)的負(fù)載均衡默認(rèn)策略。每個(gè)請(qǐng)求會(huì)按時(shí)間順序逐一分配到不同的后端服務(wù)器。 upstream serverpool{ server localhost:8888; server localhost:9999; } 參數(shù)說明:

2). weight權(quán)重 權(quán)重方式,在輪詢策略的基礎(chǔ)上指定輪詢的幾率。 upstream serverpool{ server localhost:8888 weight=3; server localhost:9999 weight=1; } weight參數(shù)用于指定輪詢幾率,weight的默認(rèn)值為1;weight的數(shù)值與訪問比率成正比,比如8888服務(wù)器上的服務(wù)被訪問的幾率為9999服務(wù)器的三倍。 此策略比較適合服務(wù)器的硬件配置差別比較大的情況。 3). ip_hash 指定負(fù)載均衡器按照基于客戶端IP的分配方式,這個(gè)方法確保了相同的客戶端的請(qǐng)求一直發(fā)送到相同的服務(wù)器,以保證session會(huì)話。這樣每個(gè)訪客都固定訪問一個(gè)后端服務(wù)器,可以解決session不能跨服務(wù)器的問題。 upstream serverpool{ ip_hash; server 192.168.192.133:8080; server 192.168.192.137:8080; }

5.3session 共享問題

session共享是集群中常見的問題,同一個(gè)用戶訪問兩個(gè)節(jié)點(diǎn),session不一樣




解決方法1:ip_hash,一個(gè)用戶固定的到一個(gè)服務(wù)器節(jié)點(diǎn) 解決方法2:通過tomcat集群廣播session,每個(gè)節(jié)點(diǎn)都有一整套的session信息 1) 在Tomcat的conf/server.xml 配置如下: 2) 在Tomcat部署的應(yīng)用程序 servlet_demo01 的web.xml 中加入如下配置 : 3) 配置完畢之后, 再次重啟兩個(gè) Tomcat服務(wù)

上述方案,適用于較小的集群環(huán)境(節(jié)點(diǎn)數(shù)不超過4個(gè)),如果集群的節(jié)點(diǎn)數(shù)比較多的話,通過這種廣播的形式來完成Session的復(fù)制,會(huì)消耗大量的網(wǎng)絡(luò)帶寬,影響服務(wù)的性能。 解決方法3:單點(diǎn)登錄(Single Sign On), 簡(jiǎn)稱為 SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng),也是用來解決集群環(huán)境Session共享的方案之一 。

6.Tomcaat安全

安全包括哪些方面的安全?能做到什么程度吶?

配置安全 主要體現(xiàn)在tomcat有自帶的manager和host-manager程序,同時(shí)提供了一個(gè)默認(rèn)的端口8005可以來監(jiān)聽SHUTDOWN命令,如果沒有修改用戶訪問到服務(wù)器時(shí),可以通過telnet連接到服務(wù)器的對(duì)應(yīng)端口發(fā)送命令來關(guān)閉服務(wù)器。另外當(dāng)出現(xiàn)錯(cuò)誤時(shí)要提供錯(cuò)誤頁面不能讓用戶看到堆棧記錄。 1.刪除webapps目錄下的所有文件, 2.更改端口或指令 更改端口號(hào)和指令: 禁用8005端口: 3.添加錯(cuò)誤頁面 在webapps/ROOT目錄下定義錯(cuò)誤頁面 404.html,500.html; 然后在tomcat/conf/web.xml中進(jìn)行配置 , 配置錯(cuò)誤頁面: 404 /404.html 500 /500.html 這樣配置之后,用戶在訪問資源時(shí)出現(xiàn)404,500這樣的異常,就能看到我們自定義的錯(cuò)誤頁面,而不會(huì)看到異常的堆棧信息,提高了用戶體驗(yàn),也保障了服務(wù)的安全性。

應(yīng)用安全 指的是后臺(tái)系統(tǒng)的權(quán)限管理模塊,通常是基于Springboot Security ,Apache Shiro 來實(shí)現(xiàn),一般分為認(rèn)證(登陸/單點(diǎn)登陸),授權(quán)(功能權(quán)限,數(shù)據(jù)權(quán)限)兩個(gè)部分。

傳輸安全 ** 使用https進(jìn)行數(shù)據(jù)加密,認(rèn)證的安全傳輸 1.使用jdk提供的keytool工具生成免費(fèi)的證書(這種證書是不被瀏覽器信任的)

之后生成密鑰庫文件

2. 將秘鑰庫文件 tomcatkey.keystore 復(fù)制到tomcat/ 目錄下。 3. 配置tomcat/conf/server.xml

<!--添加一個(gè)連接器用來監(jiān)聽8443端口--><Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" schema="https" secure="true" SSLEnabled="true"> <SSLHostConfig certificateVerification="false"> <Certificate certificateKeystoreFile="tomcatkey.keystore" certificateKeystorePassword="tomcat" type="RSA" /> </SSLHostConfig> </Connector>4.重啟tomcat測(cè)試



關(guān)鍵詞:配置,參數(shù)

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉