Tomcat 사용시 주의점 – Java 웹개발시 초기설정

Tomcat 압축을 풀어보면

webapps 디렉토리에 기본 디렉토리가 존재한다.

docs
examples
host-manager
manager
ROOT

이 상태로 톰색을 실행시키면 이 디렉토리 경로로 접속이 되는데….

이것때문에 충돌이 발생하는 상황이 있다.

딱 봐도 개발하다보면 종종 사용될만한 주소 패턴이다.

문제는, ide에서 / 경로에 웹을 띄웠을 때

/docs
/manager
/examples

로 접속하면 톰캣 기본디렉토리가 우선 접속된다.

 

webapps 디렉토리는 꼭 비워주고 쓰자.

저번에 당했었는데.. 오랜만에 또 당해서..

 

 

Log4j – WebAppRootKey 문제 발생시 처리

개발서버 설정하기 귀찮아서 Tomcat 하나에 VirtualHost설정 후 App을 때려넣다가 발생

 

한개의 컨테이너에 두개의 Webapp을 올릴 경우 나는 오류로

Log4j에서 라는 System.property(“webapp.root”)를 사용해서 발생하는 문제다.

하나의 인스턴스내에서 System.property는 공유되니까.. 한마디로 전역변수 문제라고 할 수 있다.

해결방법은

web.xml에서 앱마다 저 키값을 고유하게 지정 해 주는 것이다.

기본값 - 아무것도 설정하지 않았을 경우
<context-param>
	<param-name>webAppRootKey</param-name>
	<param-value>webapp.root</param-value>
</context-param>

앱마다 다르게 설정.
<context-param>
	<param-name>webAppRootKey</param-name>
	<param-value>app1webapp.root</param-value>
</context-param>

말 그대로 log4j에서 webapp의 root 디렉토리를 가져올 때 사용하는 값이다.

{tomcat_home}/webpaps/{app war파일명?}

 

 

 

Spring JavaConfig 설정시 null pointer exception 등 알 수 없는 문제발생시

톰캣이 web.xml.bak web.xml.old 등등으로 파일명을 바꿔놔도 검색을 한다.

설정은 확실해야하고 오류상황에는 오류를 뱉아야하는데
어설픈 편의성 제공으로 지옥을 맛보게 해 놨다

말도안되는 오류가 생기고 구글검색도 안되는 경우에는 한줄한줄 디버깅을 해보자

Tomcat7 Virtualhost 설정

apache, nginx등과 연결할 때 사용하면 좋다.

서버 한개에 여러개 호스트를 띄워야 하는 경우..(홈서버나 소규모 사무실일듯)

<Host name=”api.beansugar.org” appBase=”webapps/ApiProvider”
unpackWARs=”true” autoDeploy=”true”
xmlValidation=”true” xmlNamespaceAware=”false”>
<Context path=”” docBase=”” reloadable=”true” privileged=”true”
antiResourceLocking=”false” anitJARLocking=”false”>
</Context>
</Host>

</Engine>
</Service>
</Server>

server.xml에 이런식으로 설정을 추가하면된다. 보안에 상관없는 부분이라 그냥 공개…

톰캣 설치시에 기본으로 깔려있는 host-manager기능을 사용해도 되겠지만…. 자주 쓰지도 않는 manager같은것들도 다 톰캣 메모리를 잡아먹으니.. 그런거 다 지워버리고 직접 하는게 낫다.

자바웹앱이 의외로 메모리를 많이 먹어서 하이버네이트앱같은거 실행시키면 메모리릭나서 다운되는 경우도 많으니…

 

Apach, Tomcat 환경에서 서버 부하관리

아파치 접속사용자 트래픽 제한걸기

http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=23995&sca=%BC%AD%B9%F6%BF%EE%BF%B5&page=10

 

 

 

apache의 jkmodule사용해서 loadbalance 이용

http://zosel.net/entry/Tomcat-%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0-%EA%B5%AC%EC%A1%B0?category=0