HEstory - IT, JPOP, ANIMATION 심볼릭 링크의 경로를 톰켓(웹)으로 서비스하는 방법
BLOG main image
거북이는 생각보다 빠르다.
분류 전체보기 (266)
IT (119)
사진 (6)
영화 (9)
애니 (33)
일드 (8)
음악 (22)
신변잡기 (55)
포트폴리오 (6)
지난이야기 (8)
346,785
어제 39 / 오늘 15
 
1 articles
simbol에 관련된 글
2009/02/23
심볼릭 링크의 경로를 톰켓(웹)으로 서비스하는 방법
2009/02/23 23:13

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 path="/b/a" docBase="/root/a" crossContext="false" debug="0" reloadable="true">
  </Context>

(위의 설정은 서버의 /root/a 경로를 /b/a의 웹 컨텍스트로 띄운다는 말이다. 용어로는 가상링크라고 한단다.)

 

멋진가?

하나의 심볼릭 링크를 서비스하기 위해 이런 엄청난 일을 벌여버렸다. 훗 = ㅠ =

 

그래도 이건 아니다..

결국 머리 식히고 다시 네이버질을 시작한다.

역시! 방법은 있었다.

오늘도 나의 얄팍한 네이버 검색실력에 낚인 게다... - ㅁ -;;;

 

잘 찾아보니 네이버의 다른 곳에는 이런 귀중한 정보가 있었다.

톰켓에서 심볼릭 링크 인식하도록 하기

하하하.. 어이없다.. 그냥 b를 서비스하고 있던 컨텍스트에 allowLinking="true" 속성 하나 추가 하면 되는 거 였다.. 이 자리를 빌려 지원아빠님께 감사를.. ㅠㅠ

 

머 어찌되었던 방법은

1. 심볼릭 링크를 서비스할 전용 Context를 하나 더 잡는다.(가상링크)

2. 심볼릭 링크를 서비스할 Context에 allowLinking="true" 속성을 설정한다.

    ex) <Context  ... 중략 allowLinking="true"></Context>

주의 할 점으로 윈도우 환경에서는 사용하지 말라고한다.(경험이지만 설정 없이 돌아간다.)

방법에 대한 선택은 여러분에게.. = ㅠ =;

 

 

Trackback Address
http://hestory.net/trackback/2511090 관련글 쓰기
NAME HOMEPAGE    PASSWORD



#1