작업 하다가 어느 순간 page_stand_alone에서 오류가 발생하는 이유 #14
gabrielyoon7
started this conversation in
3. 이슈
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
어떤 문제인지는 정확하게 파악이 되지 않지만
제가 경험했던 문제가 #13 의 글과 같은 문제라면, 다음과 같은 원인과 해결책이 있을 것 같아요.
평소에 잘 돌아가던 학과 홈페이지가, 작업 도중 page.jsp의 구조에 갇혀있는 페이지만 뜨지 않는 현상들이 있었는데요, 당시 단톡방에서 있던 대화와 캡쳐가 몇 개 있어서 참고 자료를 복원할 수 있게 되었습니다.
혹시 @hyeonjun-Hev 이 2022년 1월 28일 단톡방 대화 내용이 있다면 오후 5시 38분 경에 @wwwls99 가 보낸 사진과 문제 제기를 확인해주시면 감사하겠습니다.
다만 학과 홈페이지가 java 8 버전으로 작성되어있고, swaig 홈페이지는 16 버전으로 작성되어 있으므로 감안해서 확인해주셔야 합니다.
오류가 어떻게 발생했는가?
당시 출력 된 오류 메시지 중 일부 발췌
위 자료는 사진을 OCR로 돌린거라서 오류가 있을 수 있습니다 ^^
(혹시 위 자료가 보안에 위험이 된다면 제거 하겠습니다.)
당시에 위 오류 메시지를 보고 원인을 파악하고자 했을 때 다음과 같은 특징이 보였습니다.
을 봤을 때 이 page.jsp가 과도한 메모리를 사용하는게 아닌가 하는 추정이 들게 됐습니다.
과거에 제가 공부했던 jsp는 모든 jsp 파일은 사실 java 코드로 변환되는 것이고 include된 부분은 한 파일로 합쳐서 작업한다고 기억하는데,
이게 맞는 정보인지는 확실하지 않지만아무튼 파일을 합치는 과정에서 코드가 너무 길어져서 발생하는 문제로 파악됩니다.예를 들면 page.jsp 하위에 include 되어있는 include.jsp, notice.jsp 등 여러 자식들을 하나로 합친 후, 부모로부터 받은 키워드 (ex. String jsp = (String) request.getAttribute("jsp");)를 참고하여 어떤 jsp를 보여줄 지 결정하게 됩니다.
이 부분이 제가 swaig 프로젝트에 처음으로 도입한 아이디어이기도 합니다.
당시에는 이런 문제가 발생할 줄 모르고 해당 구조로 프로젝트를 작성했어요.
이후에 학과 홈페이지에도 해당 구조를 역으로 이식했었고, 레거시 코드가 많이 있는 학과 홈페이지는 2022년 1월에 이미 해당 문제가 발생하여 업데이트를 하였고 그 해결방법에 대해서 공유하고자 합니다. (swaig 코드는 그 이후로 손을 놔서 업데이트가 되지 않았습니다 ^^)
당시에 파악했던 추정되는 원인
물론 java 전체의 코드가 길어서 발생하는 문제는 절대 아니고, 한 개의 파일(page.jsp)이 코드가 너무 길어져서 발생하는 문제라는 것 입니다.
2008년에 어떤 블로그에 작성된 글을 참고해보면 include file은 정적인 지시문을 사용하고, include page는 동적인 지시문을 사용합니다.
위 글을 읽어보시면 대충 감이 오시겠지만, include page는 자바로 바뀌고 컴파일 된 이후에 실행중에 값을 삽입할 수 있는 지시어 입니다.
추가 참고 글도 읽어보시면 좋을 것 같습니다.
근데 이렇게 하면 아주 중대한 문제가 발생하게 되는데, 동적으로 호출하게 되면 부모가 가진 속성 값을 사용할 수 없게 됩니다.
예를 들면
레이아웃을 잡고 있는 부모 파일이 현재 최상단에서
을 설정해주면, 그 자식들은 해당 값을 상단에서 굳이 선언하지 않아도 자유롭게 사용할 수 있었지만
include page를 사용하게 된다면 동적으로 바뀌기 때문에 컴파일 과정에서 분리되어 그 자식들이 부모가 뭘 가지고 있는지 참고하기 어려운 것 같습니다.
따라서 자식들이 필요한 값을 직접 상단에 호출해서 사용해야합니다.
해결책
기존 학과 홈페이지에서 해결한 커밋을 확인해보시면,
물론 이게 가능한 이유는, 현재 attribute 값은 어느 파일에서든 불러올 수 있기 때문이구요.
기존 학과 홈페이지에 이어서 swaig 홈페이지에도 적용했어야 했는데, 당시에 바빠서 미뤘던 일이 이제 터진 것 같아서 정리해서 알려드립니다.
한번 적용해보시고 확인해주시면 감사하겠습니다.
Beta Was this translation helpful? Give feedback.
All reactions