
넥사크로 프로젝트를 유지보수하다 보면, 신규 개발할 때는 안 보이던 문제들이 운영 단계에서 갑자기 튀어나오는 경우가 많습니다. 특히 공공기관 민원처리 시스템 유지보수를 맡으면서 겪었던 에러들은, 넥사크로 공식 문서에는 잘 나와 있지 않아서 직접 부딪히며 해결해야 했습니다.
이번 글에서는 실무에서 실제로 만났던 에러 3가지와 그 해결 과정을 정리해보겠습니다.
에러 1: DataSet 바인딩이 갑자기 깨지는 현상
운영 중인 화면에서 특정 조건일 때만 Grid에 데이터가 표시되지 않는 문제가 발생했습니다. 개발 서버에서는 재현이 안 되고, 운영 서버 특정 사용자 계정에서만 발생해서 원인 파악이 쉽지 않았습니다.
시도했던 것: 처음에는 DataSet 컬럼 순서 문제인 줄 알고 서버 쿼리 결과를 하나씩 비교했습니다.
원인: 알고 보니 서버에서 내려주는 컬럼 개수와 클라이언트 DataSet에 정의된 컬럼 개수가 특정 조건(옵션값에 따라 컬럼이 추가되는 케이스)에서 불일치했던 것이 원인이었습니다.
해결: 서버 응답과 클라이언트 DataSet 스키마를 항상 로그로 비교할 수 있도록 디버깅 함수를 만들어두고, 컬럼 개수 불일치 시 콘솔에 경고가 뜨도록 처리했습니다. 이후 비슷한 문제를 훨씬 빨리 찾을 수 있게 됐습니다.
에러 2: 이벤트 중복 바인딩으로 인한 이상 동작
버튼을 한 번 눌렀는데 저장이 두 번 되는 문제가 간헐적으로 보고됐습니다. 처음에는 사용자가 실수로 두 번 클릭한 줄 알았습니다.
시도했던 것: 로그를 남겨서 실제 클릭 횟수와 이벤트 발생 횟수를 비교했습니다.
원인: 화면을 재진입할 때마다 onclick 이벤트가 addEventHandler로 계속 누적 등록되고 있었습니다. 화면 전환 시 이벤트 핸들러를 정리하지 않은 것이 원인이었습니다.
해결: 화면 종료(onunload) 시점에 removeEventHandler로 이벤트를 명시적으로 해제하도록 공통 함수를 만들어서, 앞으로 만드는 모든 화면에 동일한 패턴을 적용하도록 규칙을 정했습니다.
에러 3: Transaction 통신 중 화면이 멈추는 현상
특정 사용자에게서 "화면이 멈췄다"는 문의가 반복적으로 들어왔습니다.
시도했던 것: 네트워크 탭에서 Transaction 요청/응답을 확인했습니다.
원인: 서버 응답이 지연되는 상황에서, 로딩 처리가 없어 사용자가 반응이 없다고 느끼고 여러 번 같은 버튼을 눌러 요청이 쌓이는 것이 실제 원인이었습니다.
해결: Transaction 요청 시작과 종료 시점에 로딩 인디케이터를 붙이고, 요청 진행 중에는 버튼을 비활성화하도록 공통 처리를 추가했습니다.
마무리하며
세 가지 사례 모두 공통점이 있었습니다. 처음 봤을 때는 각기 다른 문제처럼 보였지만, 결국 **"화면 생명주기(진입-종료)를 제대로 관리하지 않아서 생긴 문제"**였다는 점입니다. 이후로는 새 화면을 만들 때 이벤트 등록/해제, 로딩 처리, DataSet 스키마 검증을 체크리스트로 만들어서 처음부터 챙기고 있습니다.
넥사크로 유지보수를 담당하고 계신 분들이라면, 이 세 가지만 미리 챙겨도 비슷한 문제를 상당히 줄일 수 있을 거라 생각합니다.
'개발기초' 카테고리의 다른 글
| 개발기초 Oracle에서 Tibero로 마이그레이션하면서 실제로 겪은 문제들 (에러 원인과 해결 과정) (0) | 2026.07.12 |
|---|---|
| 개발기초 Tibero 사용자 생성과 권한 부여 방법 총정리 (0) | 2026.07.10 |
| 개발기초 DBeaver에서 Tibero 연결하기와 실무 설정 방법 총정리 (0) | 2026.07.09 |
| 개발기초 Tibero Studio 사용법과 개발자가 자주 사용하는 기능 총정리 (0) | 2026.07.08 |
| 개발기초 Tibero 설치 및 접속 방법 총정리 (개발 환경 구축부터 첫 접속까지) (0) | 2026.07.07 |