본문 바로가기

Langauge

(81)
[Spring framework] 멀티서버 스프링 스케줄러 처리를 위한 ShedLock Spring famework 사용 시 멀티서버 즉, 2개 이상의 서버로 구성된 환경에서 스프링 스케줄러를 사용하게 되면 중복된 cron 이 실행된다. 이는 cron 작업이 was마다 실행되기 때문에 발생하는 문제로 was 개수만큼 중복된 cron 이 실행되어 한 번만 실행되는 것이 아닌 두번 이상 실행이 되는 것이다. 서버를 삭제 후 재 생성하기도 했지만 결국 스프링 스케줄러 중복실행 문제는 해결하지 못했고, 2개 이상의 서버에서 중복실행을 막기위해서 Lock기능을 이용하여 DB를 공통참조하도록 제공하는 라이브러리(Lock API)인 ShedLock 를 통해 해결할 수 있었다. 처리방식은 ShedLock 테이블에 동일한 데이터가 있는지 여부를 파악한 후, 만약 동일한 이름의 데이터가 있다면 Schedul..
[Spring] 스프링 오류 (22) - 500번 에러 처리(에러이미지 표시) 500번 에러 처리 (오류발생 이미지로 대체) 첫번째 이미지와 같이 500 에러가 떨어지면, 왜 에러가 발생했는지 상세하게 오류메시지로 나오기 때문에 해커들의 공격에 노출되기 쉬워진다. 즉, 500번 에러메시지 대신 두번째 이미지와 같은 오류발생 이미지로 대체해서 보여줄 것이다. BoardController.java 파일 @ExceptionHandler 란? @ExceptionHandler 에 대해서..... ==> 어떤 컨트롤러내에서 발생하는 익셉션이 있을시 익셉션 처리를 해주려고 한다면 @ExceptionHandler 어노테이션을 적용한 메소드를 구현해주면 된다. 컨트롤러내에서 @ExceptionHandler 어노테이션을 적용한 메소드가 존재하면, 스프링은 익셉션 발생시 @ExceptionHandle..
StarUML 프로그램 사용법 Use Case Diagram 생성하기 System Boundary Actor Generalization Association Object = 클래스 Stimulus text ClassDiagram 생성하기 MemberVO isRequirePwdChange() setRequirePwdChange() getAge() . . 오른쪽마우스 - Add - Parameter 로 입력하기!! InitialValue = 초기값 아래와 같이 static 메소드일 경우, StarUML 프로그램에서 메소드 생성 후 "OwnerScope" 을 INSTANCE -> CLASSIFIER 로 변경해준다. MemberRegister 클래스는 재정의(@Override) 할 경우, MemberVO 와 MemberDAO 를 new (객..
[Oracle 오류] 오라클 및 크롬 웹브라우저 무한로딩 해결방법 (오라클 완전 제거하기 + 데이터베이스 복구) 잘 실행되던 오라클 서버 접속시 아래와 같이 무한로딩 상태와 함께 오류메시지가 떴는데, 정확한 원인없이 하루 아침에 오라클 db 가 뻑나는 상황이 발생하였다. Spring 프로그램 STS 를 시작한 기간과 맞물려서 Spring 과 Oracle 프로그램과의 충돌로 인한 문제라고 생각하였기 때문에 처음에 시도해본 방법은 다음과 같다. 1. 사용자 계정에서 repository 폴더 안에 있는 파일들을 모두 삭제하고 STS 프로그램를 재 실행하여 작업 진행중이던 Project 에서 pom.xml 파일을 새롭게 붙여 넣는다. 단, repository 파일을 삭제시 주의할 점은 repository 폴더를 삭제하는 것이 아닌 폴더 안에 들어가면 있는 모든 파일들을 삭제해야 한다. 2. 기존의 Project 파일을 아..
Cookie 와 Session http 프로토콜에서 클라이언트(브라우저) 와 서버(웹컨테이너) 의 연결 및 유지시켜 주기 위한 Cookie 와 Session 방식이 있다. http 프로토콜은 특징으로 수많은 클라이언트가 서버에 연결시 부하가 걸리는 것을 방지하기 위해 클라이언트가 한번 요청(requset) 한 정보를 서버가 응답(response) 하자마자 바로 연결을 해제해버린다. 단, 이런 경우에 웹사이트 상 로그인 접속의 의미가 없어진다는 단점이 있다. 예를 들어 사용자가 로그인 후 장바구니에 하나의 제품을 담은 이후 서버와의 연결이 끊어지면 사용자가 저장해두었던 데이터(기존연결정보) 가 유지되지 않아 로그인과 장바구니의 기능이 상실된다.. 이러한 단점을 보완하고자 클라이언트(브라우저) 와 서버(웹컨테이너) 가 연결한 흔적을 남겨..
싱글톤 패턴(Singleton pattern) 싱글톤 패턴(Singleton pattern) 이란 프로그래밍 세계에 OOP 의 개념이 생기면서 객체 자체에 대한 많은 연구와 패턴(pattern)들이 생겨났다. singleton pattern은 인스턴스가 사용될 때에 매번 새로운 인스턴스를 만들어 내는 것이 아니라, 동일 인스턴스 1개만을 사용하도록 하는 것이다. 소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스란? 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나뿐이고, 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴해준다. 이와 같은 디자인 유형을 가지는 클래스를 싱글톤 패턴(Singleton pattern)을 따르는 클래스라고 한다. 그러므로 싱글톤 패턴(Singleton p..
DB 커넥션 풀 설정하는 방법 Connection 은 데이터베이스 서버에 연결하기 위해 사용되어지는 객체이다. 객체는 새롭게 만들어질때 시스템의 자원(CPU, 메모리)의 많은 소모와 시간이 걸리게 된다. DAO 클래스에서 생성되어지는 메소드(insert, select, update, delete 등)를 작성하려면 매번 Connection 객체 생성을 필요로 하게된다. 그런데 DAO 클래스의 메소드를 호출할때 마다 매번 Connection 객체를 생성해서 사용해야 한다는것은 시스템의 자원(CPU, 메모리)의 많은 소모와 시간이 걸리게 되므로, 이를 해결하기 위해 나온 방법이 Connection Pooling 기법이다. Connection Pool 은 미리 처음부터 여러개의 Connection 객체를 만들어 두고서 DAO 클래스의 메소드..
MVC 패턴 model 2 사용 이유 MVC ver.2 을 사용하는 이유 MVC ver.1 은 작동은 하지만, 일일이 해당 클래스를 열어서 찾아봐야 하기 때문에 유지보수 하기 힘들다. 이러한 이유로, 한단계 업그레이드된 버전을 사용할 것이다. Dynamic Web Project 의 하위폴더인 WEB-INF 폴더 안에 있는 하나의 file 을 열면, 목차처럼 모든 url 주소가 나와있어서 유지보수 하기 용이하다.