[일상] 지오서버에서 레이어 발행시 FileNotFoundException (Is a Directory) 에러를 뱉었던 일
기존에 되던 기능이 인프라 이전을 하고나서 먹통이 되었다. 뭐가 문제인지 몰라 소스를 보는데
소스는 변경사항이 없었으니 인프라 문제겠거니 했다. 결론은 마운트가 해제되어서 마운트를 해주는 것으로 해결함
java에서 FileNotFoundException (Is a Directory) 에러를 찾는 것은 디렉토리 경로를 찾을 수 없어서 떨어지는
에러인데 처음 봤을때 분명히 저 경로에 디렉토리 및 파일이 있는데 왜 에러가 떨어지는거지?
고민을 많이 했다.
에러가 나게 된 로직은 대충 아래와 같았다.
1) WAS서버에서 레이어로 발행 할 이미지영상 파일을 업로드하면 특정 경로에 디렉토리 및 파일을 생성하게 되고
2) 지오서버에서는 저장소에 명시된 경로를 통해 해당 파일을 읽어 SHP으로 변환하고 레이어를 발행하게 된다.
지오서버의 저장소에 들어가보면 위의 이미지와 같이 URL에 어떤 경로가 지정되어 있다.
결론은 저 경로에 해당 디렉토리와 파일이 없으니 FileNotFoundException (Is a Directory) 에러를 뱉는 것..
문제는 WAS서버에서 파일을 업로드 하였으니 WAS서버에는 디렉토리와 파일이 제대로 생성이 되었는데..
지오서버에는 해당 경로에 해당 디렉토리 및 파일이 존재하지 않는다는 것이다..
나는 지오서버에서 직접 WAS서버에 접근하여 해당 파일들을 가져오는지 알고 있었다.. ( 이 믿음 때문에 시간날림.. )
예전에 썼던 글인데 아래 로직처럼 흘러가는 줄 알았었다.
https://bongra.tistory.com/324
그럼 결국 문제를 해결하는 방법은 2가지가 있다.
1) WAS서버와 지오서버를 마운트 하는 방법
2) WAS서버에서 파일을 업로드 할 때, 지오서버에도 똑같은 경로에 디렉토리 및 파일을 생성해주는 방법
하지만 2번과 같은 방법은 같은 디렉토리 및 파일을 생성해주기 때문에 디스크라던지 성능상으로 좋지 못하다.
그래서 마운트를 하면 WAS서버에 있는 디렉토리 및 파일에도 접근이 가능하다. ( 물론 Read 권한이 있어야겠지만.. )
그림이 조금 이상하지만 이런 느낌이라고 보면 된다. 실제로 마운트 공간이 존재하는 건 아니고..
WAS서버에 있는 디렉토리 및 파일 등을 지오서버에서도 접근할 수 있다는 의미로 받아들이자..
이렇게 되면 지오서버의 저장소에서 명시하고 있는 디렉토리 및 파일에 지오서버도 접근이 가능하기 때문에
해당 파일을 가지고 SHP파일을 생성하고 레이어까지 발행할 수 있어진다.
그리고 이걸 보면서 알게 된건데 이미지 영상인 TIFF파일은 해당 파일을 읽어
SHP을 생성하고 레이어까지 발행 한다는 것을 알았다.