2011. 3. 30. 10:23ㆍWas/Tomcat
AIX에서 심볼릭 링크(소프트링크)를 이용하여 웹으로 접근 할 수 있는 context아래로 경로를 생성했다. 작업 후 java의 IO로는 해당 파일을 접근 할 수 있으나 브라우저에 해당 파일의 경로를 열심히 타이핑 했으나 404에러를 뿜는다. 즉. 톰켓으로는 심볼릭 링크 상에 존재하는 파일을 서비스 할 수 없었다. 이 상황을 알기쉽게 예로 들어보자. root/a 경로에는 100개의 jpg 파일이 있다고 하자. 그리고 root/tomcat/b 라는 경로는 톰켓의 컨텍스트로 설정되어 서비스 되고 있다. 즉 root/tomcat/b 하위에 위치한 파일들은 브라우저에서 http://localhost/b/파일명 형식으로 접근하면 파일을 볼 수 있다. 이런 환경에서 root/a 하위의 이미지를 http://localhost/b/a/이미지명.jpg와 같은 주소로 보여주고싶다. 그래서 나는 단순하게 root/a를 바라보는 심볼릭 링크를 root/tomcat/b/a 라고 생성했다. 콘솔이나 ftp로 붙어보면 정확하게 root/tomcat/b의 하위로 a라는 디렉터리가 존재하며 하위에 이미지파일이 보인다. java의 File 객체의 생성에도 문제가 없다. 즉 OS 차원의 IO는 문제가 없었다. 그러나 내가 원하는 브라우저 주소창에 http://localhost/b/a/이미지명.jpg 를 실행하면 파일이 열리는 것은 불가능 했다. 자랑스럽게 404에러를 뿜어댄다. (404를 계속 만나다보면 좀 머슥 해 지는 것은 wake 뿐일까요? ) 먼가 이상하다. 검색 해 보니 톰켓에서 심볼릭 링크를 디렉터리나 파일로 인식이 안된다고 한다. (이런 웃다가 뒷통수 맞을 일이 있나. 해당 정보의 출처는 프라이버시?상 묻어 두겠다.) 그래 어쩔 수 없는 거구나! 바로 root/a 의 경로를 톰켓에서 별도의 컨텍스트로 잡아 띄워 버렸다. (위의 설정은 서버의 /root/a 경로를 /b/a의 웹 컨텍스트로 띄운다는 말이다. 용어로는 가상링크라고 한단다.) 멋진가? 하나의 심볼릭 링크를 서비스하기 위해 이런 엄청난 일을 벌여버렸다. 훗 = ㅠ = 그래도 이건 아니다.. 결국 머리 식히고 다시 네이버질을 시작한다. 역시! 방법은 있었다. 오늘도 나의 얄팍한 네이버 검색실력에 낚인 게다... - ㅁ -;;; 잘 찾아보니 네이버의 다른 곳에는 이런 귀중한 정보가 있었다. 하하하.. 어이없다.. 그냥 b를 서비스하고 있던 컨텍스트에 allowLinking="true" 속성 하나 추가 하면 되는 거 였다.. 이 자리를 빌려 지원아빠님께 감사를.. ㅠㅠ 머 어찌되었던 방법은 1. 심볼릭 링크를 서비스할 전용 Context를 하나 더 잡는다.(가상링크) 2. 심볼릭 링크를 서비스할 Context에 allowLinking="true" 속성을 설정한다. ex) <Context ... 중략 allowLinking="true"></Context> 주의 할 점으로 윈도우 환경에서는 사용하지 말라고한다.(경험이지만 설정 없이 돌아간다.) 방법에 대한 선택은 여러분에게.. = ㅠ =;
</Context>
'Was > Tomcat' 카테고리의 다른 글
[Tomcat] UTF-8 한글 처리 (1) | 2010.05.28 |
---|---|
[Tomcat] 톰켓에서 Context Reload를 빨리해보장. (0) | 2010.05.28 |
[Tomcat] 톰캣에서 Multiple Instance띄우기. (0) | 2010.05.28 |
[Tomcat] Tomcat 6 JNDI 설정 (0) | 2010.05.28 |
[Tomcat] tomcat 6 admin probe (0) | 2010.05.28 |