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 의 경로를 톰켓에서 별도의 컨텍스트로 잡아 띄워 버렸다.
</Context>
(위의 설정은 서버의 /root/a 경로를 /b/a의 웹 컨텍스트로 띄운다는 말이다. 용어로는 가상링크라고 한단다.)
멋진가?
하나의 심볼릭 링크를 서비스하기 위해 이런 엄청난 일을 벌여버렸다. 훗 = ㅠ =
그래도 이건 아니다..
결국 머리 식히고 다시 네이버질을 시작한다.
역시! 방법은 있었다.
오늘도 나의 얄팍한 네이버 검색실력에 낚인 게다... - ㅁ -;;;
잘 찾아보니 네이버의 다른 곳에는 이런 귀중한 정보가 있었다.
하하하.. 어이없다.. 그냥 b를 서비스하고 있던 컨텍스트에 allowLinking="true" 속성 하나 추가 하면 되는 거 였다.. 이 자리를 빌려 지원아빠님께 감사를.. ㅠㅠ
머 어찌되었던 방법은
1. 심볼릭 링크를 서비스할 전용 Context를 하나 더 잡는다.(가상링크)
2. 심볼릭 링크를 서비스할 Context에 allowLinking="true" 속성을 설정한다.
ex) <Context ... 중략 allowLinking="true"></Context>
주의 할 점으로 윈도우 환경에서는 사용하지 말라고한다.(경험이지만 설정 없이 돌아간다.)
방법에 대한 선택은 여러분에게.. = ㅠ =;
'IT > JAVA' 카테고리의 다른 글
이클립스 설정: 대용량 JSP 작업속도 향상 팁 (0) | 2009.11.27 |
---|---|
iBATIS의 namespace 특성(무시되는 경우) (0) | 2009.05.22 |
JDK 5.0, 6.0 강화된 스팩 (1) | 2009.05.04 |
받은 파라미터를 모두 input으로 셋팅 예제 (1) | 2008.12.10 |
Java VS .net - 트렌드인가 아니면 잠재능력인가? (5) | 2006.08.09 |