Tomcat 7. x 와 Tomcat 6. x 의 뚜렷 한 차이 + Context 작성 방법 + 기본 응용 설정 방법

오늘부터 회사 에서 Tomcat 7 을 홍보 하기 시 작 했 는데 뜻밖에도 많은 문제 에 부 딪 혔 다.이제 막 해결 한 것 이 많 지 않다.여기 서 소개 하 겠 습 니 다.
Tomcat 6 아래 프로그램 이 정상적으로 작 동 되 고 있 습 니 다. Tomcat 7 이 갑자기 사용 할 수 없 는 것 을 모두 보 러 왔 습 니 다 ~
---------- ---------- ---------- ---------- ----------
첫 번 째 문 제 는 데이터베이스 드라이버 로드 입 니 다.데이터베이스 구동 에 시 달 리 는 동포 들 은 Tomcat 7 아래 에 Tomcat 가 클래스 로 딩 실행 시 정적 코드 의 실행 을 제한 하기 때문에 대상 을 생 성 할 때 만 진정 으로 실행 할 수 있 기 때문에 Tomcat 6 이전에 익숙 했 던 데이터베이스 드라이버 로 딩 방식:
Class<?> cls = com.mysql.jdbc.Driver.class;
또는
Class.forName("com.mysql.jdbc.Driver");
다 못 쓰 겠 어 요.DriverManager 가 생 성 한 데이터베이스 연결 을 사용 할 때 'No suitable driver found for jdbc' 라 는 이상 이 발생 합 니 다.
현재 정확 한 데이터베이스 드라이버 로 딩 방식 은 데이터베이스 드라이버 의 대상 을 생 성 해 야 합 니 다.추천 하 다.
com.mysql.jdbc.Driver.class.newInstance();
이런 방식 은 이상 을 처리 하지 않 아 도 되 고 생 성 된 무용 대상 은 최 단 시간 에 쓰레기 로 회수 된다.
물론 인용 형식 변수 로 이 대상 을 연결 할 수도 있 지만 실제 용 도 는 없 겠 지........................................................
java.sql.Driver driver = com.mysql.jdbc.Driver.class.newInstance();
그 중에서 자바. sql. driver 는 각 데이터베이스 관리 시스템 이 제공 하 는 드라이버 류 의 인터페이스 로 JDBC 규범 에 속 하 며 import 자바. sql. driver 를 사용 하기에 적합 합 니 다.줄 임 말 을 쓰다.
---------- ---------- ---------- ---------- ----------
두 번 째 문 제 는 스 레 드 가 작 동 하 는 문제 입 니 다.Tomcat 7 이나 - server 방식 으로 실행 되 는 자바 가상 머 신 (JVM) 의 일부 내 가 아직 파악 하지 못 한 보호 메커니즘 때문에 하나의 스 레 드 가 빈 순환 을 겪 을 때 비 워 집 니 다.
while(flag) { }
그래서 flag 를 스 레 드 제어 변수 로 하 는 제어 방법 을 통 해 계속 사용 할 수 없습니다.이 럴 때 는 경직 되 지 않 고 항상 실행 할 수 있 도록 인공 카드 가 죽은 스 레 드 를 뛰 어 넘 어야 한다.
while(flag) { Thread.yield(); }

---------- ---------- ---------- ---------- ----------
Tomcat 7 설정 파일 에서 Context 설정, debug 속성 이 취소 되 었 습 니 다. 계속 사용 하면 경 고 를 보 냅 니 다.
또한 unpackWAR 속성의 기본 값 은 Tomcat 6 시 true 로 기본 상태 에서 압축 을 풀 고 war 를 실행 하 는 것 을 의미 합 니 다.톰 캣 7 은 기본 false 로 바 뀌 어 펼 치지 않 는 다.
---------- ---------- ---------- ---------- ----------
또 하 나 는 톰 캣 7 의 새로운 특징 이 아니다.이전에 conf / catalina / localhost 아래 에 ROOT. xml 이 자동 으로 생 성 되 었 는데 지금 은 그렇지 않 습 니 다.그리고 이 디 렉 터 리 에 있 는 프로필 은 path 속성 이 가리 키 는 경 로 를 '응용 경로' 로 합 니 다.현재 XML 파일 의 이름 을 응용 경로 로 사용 합 니 다.응용 경 로 를 입력 하지 않 고 접근 할 수 있 는 응용 프로그램 을 만 들 려 면 ROOT. xml 을 만 들 고 대소 문 자 를 구분 한 다음 에 < Context > 세 션 을 작성 해 야 합 니 다.
<Context
		crossContext="true"
		privileged="true"
		path=""
		docBase="/usr/local/example.war"
		reloadable="false"
		unpackWAR="true"
		cachingAllowed="true"
		cacheMaxSize="1024"
	></Context>
이 예 는 비교적 완전 하 다.그 속
crossContext = "true" 는 ServletContext. getContext () 를 통 해 다른 응용 프로그램 으로 통 하 는 request dispatcher 를 가 져 올 수 있 도록 합 니 다.물론 이 방법 은 현재 Tomcat 이 지원 하 는 가상 호스트 의 경 계 를 뛰 어 넘 을 수 없습니다.즉, 관통 접근 할 수 있 는 것 은 현재 와 하나의 < Host > 에 응용 되 어야 합 니 다.
privileged = "true" 는 Tomcat 자체 의 응용 을 의미 합 니 다. 예 를 들 어 Tomcat Manager 는 현재 이 응용 프로그램 에 접근 할 수 있 습 니 다.공식 문서 의 해석 에 따 르 면 이 메커니즘 은 응용 클래스 로 더 를 Server class loader 로 바 꾸 는 것 입 니 다.이러한 변 화 는 응용 프로그램 으로 하여 금 Tomcat 자체 의 종 류 를 발견 하 게 하고 자신의 클래스 로 더 에서 찾 을 수 있 게 할 것 이 라 고 생각 합 니 다.Tomcat 자체 응용 프로그램 방법 에 대한 호출 을 실현 합 니 다.
path 와 docBase 는 말 할 필요 도 없 이 이 두 속성 을 지정 해 야 합 니 다.그 중에서 docBase 는 디 렉 터 리 일 수도 있 고 구조 가 완전한 war 파일 일 수도 있 습 니 다.
reloadable = 'true' 는 Tomcat 이 응용 클래스 경로 (/ WEB - INF / classes / 와 / WEB - INF / lib /) 에 대한 모니터링 을 제공 한 다 는 것 을 의미한다.이 안에 내용 이 바 뀌 었 고 자바 가상 머 신 (JVM) 에 불 러 왔 을 때 Tomcat 은 스스로 이 를 다시 불 러 올 수 있 습 니 다.그러나 이 기능 은 Tomcat 의 안정 적 인 서비스 에 미 치 는 영향 이 적지 않 습 니 다. 디 버 깅 환경 은 사용 할 수 있 습 니 다. 생산 환경 은 그만 두 세 요. 물론 이것 은 제 개인 적 인 건의 일 뿐 입 니 다.
unpackWAR 는 말 그대로 unpackWAR = "true" 는 Tomcat 이. war 패키지 의 압축 해제 결 과 를 저장 하고 압축 해제 결 과 를 직접 실행 한 다 는 것 을 의미 합 니 다.저 는 개인 적 으로 자바 가상 컴퓨터 의 클래스 로드 체 제 를 고려 하여 모든 종 류 는 한 번 만 불 러 옵 니 다. 그러나 페이지 내용 은 비슷 한 효과 적 인 캐 시 가 없 기 때문에 war 는 압축 을 풀 고 실행 하 는 것 이 좋 습 니 다.그리고 로그 도 unpackWAR = "false" 를 재난 으로 만 들 것 입 니 다.
cachingAllowed = "true" 는 Tomcat 7 의 정적 캐 시 기능 을 열 었 음 을 의미 합 니 다.정적 파일 은 자 바스 크 립 트 프로그램, 그림 소리 등 네트워크 접근 을 허용 하 는 파일 과 HTML 페이지 를 포함한다.
cacheMaxSize 는 정적 캐 시 기능 버퍼 크기 의 설정 입 니 다.단 위 는 MB, 즉 1024 KB 이다.예 에서 1024 로 설정 하면 1GB 를 의미한다.

좋은 웹페이지 즐겨찾기