Tomcat 서버 구성
server.xml의
server.xml을 톰캣 톰캣 서블릿 컨테이너 (카탈리나)의 모든 구성을 포함하는 핵심 구성 파일 서버입니다
섬기는 사람
<Server port="8005" shutdown="SHUTDOWN">
...
</Server>
- 서버는 서버 인스턴스를 만들 server.xml에의 루트 요소, 기본 구현 클래스는 org.apache.catalina.core.StandardServer입니다.
- 하위 요소
- 포트 : 포트 차단 서버 다운 Tomcat은 듣고있다.
- 종료 : 서버 명령 문자열 종료합니다.
- 하위 라벨
-
리스너 : 리스너 (기본 오가지)
<!‐‐ 用于以日志形式输出服务器 、操作系统、JVM的版本信息 ‐‐> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <!‐‐ 用于加载(服务器启动) 和 销毁 (服务器停止) APR。 如果找不到APR库, 则会输出日志, 并不影响Tomcat启动 ‐‐> <Listener className="org.apache.catalina.core.AprLifecycleListener"SSLEngine="on" /> <!‐‐ 用于避免JRE内存泄漏问题 ‐‐> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <!‐‐ 用户加载(服务器启动) 和 销毁(服务器停止) 全局命名服务 ‐‐> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/> <!‐‐ 用于在Context停止时重建Executor 池中的线程, 以避免ThreadLocal 相关的内存泄漏 ‐‐> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
-
GlobalNamingResources : 글로벌 네임 서비스를 정의
<!‐‐ Global JNDI resources Documentation at /docs/jndi‐resources‐howto.html ‐‐> <GlobalNamingResources> <!‐‐ Editable user database that can also be used by UserDatabaseRealm to authenticate users ‐‐> <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"> ... </Service>
- 서버 A 서버는 여러 서비스 서비스를 포함 할 수 있습니다.
- org.apache.catalina.core.StandardService 기본.
- 기본적으로 Tomcat은 오직 서비스 "카탈"값의 이름을 지정합니다.
- 하위 섹션 :
-
리스너 : 서비스 라이프 사이클에 대한 리스너를 추가
-
집행 인 : 공유 스레드 풀 (당신이 다음, 공유 스레드 풀을 구성하는 각 Connecto 독립적으로 스레드 풀을 만들 포기하지 않는 경우, 공유 스레드 풀을 추가하지 않습니다 서비스의 기본 구성.) 구성 서비스에 사용되는
<Executor name="tomcatThreadPool" namePrefix="catalina‐exec‐" maxThreads="200" minSpareThreads="100" maxIdleTime="60000" maxQueueSize="Integer.MAX_VALUE" prestartminSpareThreads="false" threadPriority="5" className="org.apache.catalina.core.StandardThreadExecutor"/>
속성 설명 :
- 이름 : 커넥터 스레드 풀의 이름을 지정했습니다.
- namePrefix : 생성 된 각 스레드, namePrefix +의 ThreadNumber라는 별도의 스레드에 대한 이름 접두사.
- maxThreads : 풀에서 스레드의 최대 수입니다.
- minSpareThreads : 활성 스레드의 수가 코어가있는, 파괴되지 않은 이러한 스레드가 항상 존재하게 풀 스레드의 수입니다.
- maxIdleTime : 스레드 유휴 시간,이 시간 이후, 유휴 스레드가 파괴됩니다, 기본 값은 밀리 초 (일분) 6000입니다.
- maxQueueSize : 스레드의 최대 수는 기본 무한히 넓다 최대 INT, 인 라인 전에 실행합니다. 특별한 경우를 제외하고,이 값은 변화를 필요로하지 않는다, 또는 상황이 발생할 처리 요청이 없을 것입니다.
- prestartminSpareThreads : 스레드 시작 스레드 풀의 minSpareThreads 부분을 시작할지 여부를 지정합니다. 기본값은 false입니다 시작되지 않습니다.
- threadPriority : 우선 순위 스레드 풀은 기본 값은 5, 1에서 10까지의 값입니다.
- 클래스 이름 : 스레드 풀 구현 클래스, 상황이 지정되지 않은에서, org.apache.catalina.core.StandardThreadExecutor의 기본 구현 클래스. 사용자 지정 스레드 풀 org.apache.catalina.Executor 인터페이스를 구현하는 최초의 필요성을 사용합니다.
-
커넥터가 : 링크 구성은 기본적으로 (포함 서비스를 위해, server.xml에 두 링커로 구성, 각각 HTTP 프로토콜을 지원, 대부분의 경우 AJP 프로토콜 만이 필요, 새로운 링크 구성을 필요로하지 않습니다. 이 링커 최적화)
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
속성 설명 :
- 포트 : 포트 번호, 커넥터 및 소켓은 클라이언트 요청 링크를 기다리고, 서버를 기울인다을 만드는 데 사용. 이 속성을 0으로 설정하면, Tomcat은 무작위로 사용하는 현재의 커넥터에 사용 가능한 포트 번호를 선택합니다.
- 프로토콜 : 현재 커넥터 접속 프로토콜을 지원합니다. 기본값은 HTTP / 1.1과 기초 링커의 자동 선택을위한 스위칭 메커니즘 JAVA NIO 4 월 기반 로컬 또는 링커 (로컬 로컬 라이브러리 톰캣를 포함하는지 여부에 따라 결정됨). 당신이 자동 스위치기구 있지만, 명시 적으로 지정된 프로토콜을 사용하지 않으려면, 다음과 같은 값을 사용할 수있다.
- HTTP 프로토콜 :
- org.apache.coyote.http11.Http11NioProtocol 비 블록 자바 NIO 링커
* org.apache.coyote.http11.Http11Nio2Protocol 비 블록 JAVA NIO2 링커
* org.apache.coyote.http11.Http11AprProtocol 4 월 링커
- org.apache.coyote.http11.Http11NioProtocol 비 블록 자바 NIO 링커
- AJP 프로토콜
- org.apache.coyote.ajp.AjpNioProtocol는 자바 NIO 링커 비 - 블로킹 (non-blocking)
- org.apache.coyote.ajp.AjpNio2Protocol는 JAVA NIO2 링커 비 - 블로킹 (non-blocking)
- org.apache.coyote.ajp.AjpAprProtocol, 4 월 링커
- HTTP 프로토콜 :
- 은 ConnectionTimeout은 : 커넥터는 밀리 초 단위로 링크 타임 아웃을받은 후 대기. -1 시간 제한이 없음.
- 있는 redirectPort가 : 커넥터가 현재 SSL 요청을 지원하지 않는, 요청이 필요 받았으며, 또한 보안 제약 조건 제약 조건에 부합되는 SSL 전송은 카탈 자동으로 지정된 포트로 요청을 리디렉션합니다.
- 집행 인 : 지정 공유 스레드 풀의 이름, 당신은 또한 maxThreads, minSpareThreads 다른 속성에 의해 내부 스레드 풀을 구성 할 수 있습니다.
- URIEncoding : 문자 인코딩을 URI를 인코딩 지정된, Tomcat8.x 버전 기본 UTF-8 인코딩, ISO-8859-1의 Tomcat7.x의 기본 버전.
- 의 MaxConnections : 연결의 최대 수는, 그것은 2000 주위에 추천
- acceptCount : 대기의 최대 수 (연결의 MaxConnections = + acceptCount 거부한다 더 이상)
- maxThreads : 스레드의 최대 수
<Connector port="8080" protocol="HTTP/1.1" executor="tomcatThreadPool" maxThreads="1000" minSpareThreads="100" acceptCount="1000" maxConnections="1000" connectionTimeout="20000" compression="on" compressionMinSize="2048" disableUploadTimeout="true" redirectPort="8443" URIEncoding="UTF‐8" />
-
엔진 : 해당 링커 엔진 서블릿 컨테이너 구성 서비스
<Engine name="Catalina" defaultHost="localhost"> ... </Engine>
- 하위 요소 :
- 이름 : 엔진의 이름을 지정, 기본값은 카탈입니다. 이름은 (임시 파일) 톰캣 부분의 저장 경로에 영향을 미칠 것입니다.
- defaultHost에서 : 호스트에 유효하지 않은 클라이언트 요청은 기본 가상 호스트 처리에 제출됩니다 사용에 기본 가상 호스트 이름, 기본값은 localhost입니다.
- 하위 라벨
- 호스트 : 호스트 요소는 가상 호스트를 구성하는 데 사용됩니다
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> ... </Host>
- 속성 설명 :
- 이름 : 현재 호스트 일반적인 네트워크의 이름을 DNS 서버에 등록 된 정보와 일치해야합니다. 엔진은 호스트 defaultHost에서 엔진 설정의 이름과 일치가 있어야 포함되어 있습니다.
- appBase이 : 현재 호스트 응용 프로그램의 기본 디렉토리, 웹 응용 프로그램이 현재 디렉토리에있는 호스트에 배포 (디렉토리는 절대, 상대 경로 일 수 있습니다). 기본값은 웹 어플리케이션입니다.
- unpackWARs : 시작 디렉토리 것이다 appBase 전쟁 압축을 풀고 디렉토리에서 진정한 호스트로 설정합니다. false로 설정되어, 호스트 전쟁 파일에서 직접 실행됩니다.
- autoDeploy : 정기적으로 감지하고 자동 실행시에 신규 또는 변경된 웹 응용 프로그램을 배포할지 여부 바람둥이 제어 할 수 있습니다.
- 당신이 엔진에 영역을 구성 할 경우,이 구성은 현재 엔진에서 호스트의 모든 공유됩니다. 당신이 호스트 영역을 구성하는 경우 마찬가지로, 현재 호스트에있는 모든 상황에 공유.
- 우선 순위 영역에서 컨텍스트 영역의 우선 순위> 영역의 호스트 우선 순위>에서 엔진.
- 속성 설명 :
- 하위 라벨
- 별칭 : 별칭을 추가 할 수있는 호스트 (같은 여러 네트워크 호스트 이름을 달성 할 수 있습니다)
<Host name="www.web1.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Alias>www.web2.com</Alias> </Host>
- 컨텍스트 : 구성 웹 응용 프로그램은 기본 구성은 다음입니다
<Context docBase="myApp" path="/myApp"> .... </Context>
- 속성 설명 :
- Docbase의 : 웹 응용 프로그램 디렉토리 또는 경로 전쟁 배포 패키지. 그것은 절대 수 있지만 호스트 appBase 상대적인 경로 일 수있다.
- 경로 : 웹 응용 프로그램의 컨텍스트 경로. 우리가 호스트 localhost를 호출하면, 웹 응용 프로그램 루트 경로는 액세스 : 통해 http : // localhost : 8080 /을 myApp합니다.
- CookieProcessor, 로더, 관리자, 영역, 자원, WatchedResource, JarScanner, 밸브 : 인라인 요소를 지원합니다.
<Host name="www.tomcat.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="D:\servlet_project03" path="/myApp"></Context> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
- 속성 설명 :
- 별칭 : 별칭을 추가 할 수있는 호스트 (같은 여러 네트워크 호스트 이름을 달성 할 수 있습니다)
- 호스트 : 호스트 요소는 가상 호스트를 구성하는 데 사용됩니다
- 하위 요소 :
-
-
바람둥이-users.xml에서
- 구성 파일은 톰캣 사용자, 역할 및 기타 정보의 주요 구성입니다, 호스트 관리자에 대한 액세스 권한을 톰캣 매니저를 제어하는 데 사용됩니다.
- 톰캣 버전의 초기 때문에, 웹 관리 콘솔 버전을 제공, 그들은 webapps 디렉토리에있는 두 개의 별도의 웹 응용 프로그램입니다. 웹 응용 프로그램을 관리하기위한 호스트 관리 호스트 관리자 및 관리자를 위해 제공 톰캣 관리 응용 프로그램입니다.
호스트 관리자
-
// 로컬 호스트 : 8080 / 호스트 관리자 / html로 액세스 웹 응용 프로그램 Tomcat을 시작하면 HTTP 할 수 있습니다.
-
호스트 관리자는 사용자가 URL을 열 때, 당신은 사용자 이름과 암호 (구성 conf의 / 바람둥이 - users.xml에서)를 입력 할 필요가 기본 액세스 제어를 추가했습니다.
-
그래서이 페이지에 액세스하기 위해, 당신은 conf의 / 바람둥이 - users.xml 파일을 구성하고 해당 역할을 지정해야합니다 :
<role rolename="admin‐gui"/> <role rolename="admin‐script"/> <user username="yzx" password="yzx" roles="admin‐script,admin‐gui"/>
관리자-GUI : 제어 페이지 액세스에 사용되는
관리자-스크립트가 단순한 텍스트 형태의 액세스를 제어하는 데 사용됩니다
매니저
- // 로컬 호스트 : 8080 / 관리자 관리자 접속 주소는 HTTP입니다
- 관리자는 또한 우리가 사용자 로그인에 할당 할 역할에 필요하므로, 페이지 액세스 제어를 추가
<role rolename="manager‐gui"/> <role rolename="manager‐script"/> <user username="yzx" password="yzx" roles="admin‐script,admin‐gui,manager‐gui,manager‐script"/>
web.xml에
요소를 지원하고 서블릿 사양에서 정의 된 속성의 web.xml 웹 어플리케이션 설명 파일.
- 바람둥이 / conf의 / web.xml의 기본 구성에 포함하여 웹 톰캣, 웹 애플리케이션의 설명에서,
응용 프로그램의 WEB-INF / web.xml 파일의 사용자 정의 구성.
catalina.bat / catalina.sh
구성 JVM
- catalina.bat (창)
set JAVA_OPTS=‐server ‐Xms2048m ‐Xmx2048m ‐XX:MetaspaceSize=256m ‐
- catalina.sh (리눅스)
JAVA_OPTS="‐server ‐Xms1024m ‐Xmx2048m ‐XX:MetaspaceSize=256m ‐XX:MaxMetaspaceSize=512m ‐XX:SurvivorRatio=8"
톰캣 클러스터링 (세션 복제)
- 에서 톰캣의 conf / server.xml을 구성입니다 다음과 같습니다 :
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
- web.xml 파일의 Tomcat 응용 프로그램 전개 servlet_demo01을 다음과 같이 추가 :
<distributable/>
주의하십시오
- 작은 클러스터 환경에 대한 위의 방식 (이하 4 개 노드)
- 더, 다음의 클러스터에서 노드의 수는, 방송의 양식을 통해 세션 복제를 완료 할 경우, 네트워크 대역폭을 많이 소비하고 서비스의 성능에 영향을 미칠 것입니다.