본문 바로가기
개발기초

개발기초 넥사크로 유지보수하다가 실제로 만난 에러 3가지 (원인과 해결 과정)

by bestdevgear 2026. 7. 13.
반응형

넥사크로 프로젝트를 유지보수하다 보면, 신규 개발할 때는 안 보이던 문제들이 운영 단계에서 갑자기 튀어나오는 경우가 많습니다. 특히 공공기관 민원처리 시스템 유지보수를 맡으면서 겪었던 에러들은, 넥사크로 공식 문서에는 잘 나와 있지 않아서 직접 부딪히며 해결해야 했습니다.

이번 글에서는 실무에서 실제로 만났던 에러 3가지와 그 해결 과정을 정리해보겠습니다.

에러 1: DataSet 바인딩이 갑자기 깨지는 현상

운영 중인 화면에서 특정 조건일 때만 Grid에 데이터가 표시되지 않는 문제가 발생했습니다. 개발 서버에서는 재현이 안 되고, 운영 서버 특정 사용자 계정에서만 발생해서 원인 파악이 쉽지 않았습니다.

시도했던 것: 처음에는 DataSet 컬럼 순서 문제인 줄 알고 서버 쿼리 결과를 하나씩 비교했습니다.

원인: 알고 보니 서버에서 내려주는 컬럼 개수와 클라이언트 DataSet에 정의된 컬럼 개수가 특정 조건(옵션값에 따라 컬럼이 추가되는 케이스)에서 불일치했던 것이 원인이었습니다.

해결: 서버 응답과 클라이언트 DataSet 스키마를 항상 로그로 비교할 수 있도록 디버깅 함수를 만들어두고, 컬럼 개수 불일치 시 콘솔에 경고가 뜨도록 처리했습니다. 이후 비슷한 문제를 훨씬 빨리 찾을 수 있게 됐습니다.

에러 2: 이벤트 중복 바인딩으로 인한 이상 동작

버튼을 한 번 눌렀는데 저장이 두 번 되는 문제가 간헐적으로 보고됐습니다. 처음에는 사용자가 실수로 두 번 클릭한 줄 알았습니다.

시도했던 것: 로그를 남겨서 실제 클릭 횟수와 이벤트 발생 횟수를 비교했습니다.

원인: 화면을 재진입할 때마다 onclick 이벤트가 addEventHandler로 계속 누적 등록되고 있었습니다. 화면 전환 시 이벤트 핸들러를 정리하지 않은 것이 원인이었습니다.

해결: 화면 종료(onunload) 시점에 removeEventHandler로 이벤트를 명시적으로 해제하도록 공통 함수를 만들어서, 앞으로 만드는 모든 화면에 동일한 패턴을 적용하도록 규칙을 정했습니다.

에러 3: Transaction 통신 중 화면이 멈추는 현상

특정 사용자에게서 "화면이 멈췄다"는 문의가 반복적으로 들어왔습니다.

시도했던 것: 네트워크 탭에서 Transaction 요청/응답을 확인했습니다.

원인: 서버 응답이 지연되는 상황에서, 로딩 처리가 없어 사용자가 반응이 없다고 느끼고 여러 번 같은 버튼을 눌러 요청이 쌓이는 것이 실제 원인이었습니다.

해결: Transaction 요청 시작과 종료 시점에 로딩 인디케이터를 붙이고, 요청 진행 중에는 버튼을 비활성화하도록 공통 처리를 추가했습니다.

마무리하며

세 가지 사례 모두 공통점이 있었습니다. 처음 봤을 때는 각기 다른 문제처럼 보였지만, 결국 **"화면 생명주기(진입-종료)를 제대로 관리하지 않아서 생긴 문제"**였다는 점입니다. 이후로는 새 화면을 만들 때 이벤트 등록/해제, 로딩 처리, DataSet 스키마 검증을 체크리스트로 만들어서 처음부터 챙기고 있습니다.

넥사크로 유지보수를 담당하고 계신 분들이라면, 이 세 가지만 미리 챙겨도 비슷한 문제를 상당히 줄일 수 있을 거라 생각합니다.

반응형

소개 및 문의 면책조항 개인정보처리 방침

© 2026 블로그 이름