Spring
-
로드 밸런서(Load Balancer) 이용한 클러스터(Cluster) 처리Spring/클러스터 2018. 9. 7. 10:42
웹 사이트를 운영할 때 보통 하나의 서버에서 모든 요청을 처리 할 수 없다. 따라서 요청을 여러 서버로 나눠 처리하는 분산환경이 필수적인데, 이때 요청 처리하는 서버들에 적절하게 요청을 분배하는 것이 더 효율적일 것이다. 이를 위해 톰캣, 아파치에서 로드 밸런서(Load Balancer)를 지원하고 있다. 1) http://tomcat.apache.org 접속 -> Download -> Tomcat 8 -> 64 bit Windows zip 다운2) http://www.apachehaus.com -> download -> Apache 2.4.25 x64 검색 -> 독일 국기 클릭하면 자동 다운로드 된다.3) Mod_jk 다운 (Tomcat, Apache 통신 돕는 라이브러리) http://archive...
-
EhCacheSpring/클러스터 2018. 9. 7. 10:35
톰캣9는 http2를 지원 1) Tomcat.apache.org -> Download -> Tomcat 8 -> 64 bit Windows zip 다운 2) Apache 3) Mod_jk 다운 (Tomcat, Apache 통신 돕는 라이브러리) http://www.apachehaus.com -> download -> Apache 2.4.25 x64 검색 è 독일 국기 클릭하면 자동 다운로드 http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/ 150k 검색해 받음 Bin 폴더 경로로 이동해 service install 명령 제어판 – 관리도구 – 서비스에 Apache Tomcat 등록됨. 수동으로 되어 있는데 마우스 오른..
-
배치 프로그램 (Batch Program) 예제 두번째Spring/배치 프로그램 2018. 9. 7. 10:34
앞서 말했던 배치 프로그램으로 비밀번호 변경 메일 송신 여부를 관리할 수 있다. 가입일로부터 현재가 1년 이상 지났다면 그 계정에 대한 정보를 가져와 적절한 처리를 할 수 있도록 한다. 이전 예제를 참조해야 더 정확한 이해가 가능하다.이해 안가는 부분 있다면 이전 포스팅 참조MBR 테이블에 4명의 사용자가 있고, 가입일이 2015년으로 현재보다 2년 이전이다. 쿼리문을 통해 가입일이 현재 기준으로 1년 이상 된 계정의 ID 5초마다 출력하는 배치 프로그램 작성해보자.테이블에 해당하는 모델 VO 작성 후 myBatis 이용해 MVC 구조로 코드 작성.Dao 인터페이스. MemberVO 리스트를 가져온다.DaoImpl 클래스. MVC 패턴을 벗어나지 않는다.Biz 인터페이스. List가 아니라 Stream을..
-
배치 프로그램 (Batch Program) 작성 예제Spring/배치 프로그램 2018. 9. 7. 10:29
웹사이트에서 로그인할 때 비밀번호를 변경하라는 공지를 심심찮게 받아볼 수 있다. 서버에서는 비밀번호 설정 후 일정 기간이 지났는지를 파악해 일정 기간(90일 등)이 지나면 변경 권장을 해야 한다. 이를 로그인 요청마다 체크할 수도 있지만 주기적으로(1일 혹은 2일에 한번 등...) 모든 계정에 대해 일정 기간이 지났는지 확인하는 방식으로 처리하면 오버헤드를 줄일 수 있다. 이와 같이 주기적으로 특정 동작을 수행하도록 하는 프로그램을 배치(Batch) 프로그램이라 하고, 실무에서도 굉장히 필수적일 것이라고 생각된다. 휴면계정 관리, 광고, 업데이트 소식, 알림, 청구 등의 기능을 배치프로그램으로 작성할 수 있다. 작성 방법 포스팅 ( STS 사용했다. 이클립스의 경우 같은 역할을 수행하는 방법이 상이할 수..
-
스프링(Spring) 테이블 조인(Join) 예제Spring/컨셉 2018. 9. 7. 10:23
스프링 테이블 조인 예제. 게시글 작성할 때 작성자에 대한 정보를 갖기 위해 조인이 필요하다. 게시글 객체인 BoardVO에 작성자 객체인 UserVO를 멤버변수로 만들어 사용한다. package com.blog.naver.user.vo; import org.hibernate.validator.constraints.NotEmpty; public class UserVO { // userId @NotEmpty(message="userId 입력하세요") private String userId; @NotEmpty(message="userName 입력하세요") private String userName; @NotEmpty(message="userPassword 입력하세요") private String userPa..
-
스프링(Spring) AOP(Aspect Oriented Programming) 이용한 트랜잭션(Transaction) 처리 패턴Spring/컨셉 2018. 9. 7. 10:18
트랜잭션이란 '하나의 업무 처리단위' 를 뜻한다. 이해를 돕기 위해 대표적으로 사용하는 것이 예금 입금 및 출금이다. ATM기로 예금을 출금하는 경우를 하나의 트랜잭션으로 본다면 1) 사용자는 ATM기에 원하는 출금액을 입력 2) ATM기는 출금액 확인 후 DB에서 사용자의 잔고를 갱신 ( 잔고 - 출금액으로 ) 3) ATM기는 출금액만큼 투입구에 반환 여기서 문제는 ATM기에 출금액만큼의 돈이 없는 경우이다. 출금액만큼의 금액을 줄 수 없는 경우 ATM은 출금액만큼 사용자에게 줄 수 없지만 DB에서는 사용자의 잔고가 출금액만큼 줄어 있다. 따라서 사용자의 경우 클레임을 걸어 올 것이다. 이를 방지하기 위해 1 ~ 3까지를 하나의 업무 처리단위로 보고 모두 충족시키지 않는 경우 DB를 이전 상황으로 돌려..
-
스프링(Spring) ORM : MyBatis 예제Spring/컨셉 2018. 9. 7. 10:11
ORM : Object Relational Mapping Framework로 객체 관계 매핑을 좀더 쉽게 돕는 프레임워크이다. 서블릿으로 작성할 때에는 DAO 코드에 쿼리문을 넣고 그에 해당하는 정보를 가져와 멤버에 대해 하나하나 rs.getxx() 메소드 등으로 값을 직접 제어했다면, MyBatis에서는 데이터 타입에 관계 없이 멤버명만으로 값 설정이 가능하다. 이를 위해서 환경 설정이 만만치 않다. 실무에서는 이러한 설정이 잘 되어 있는 프로젝트를 하나 가지고 복사해 사용하면 된다. MyBatis 연동 방법 포스팅 연동에 필수적인 세가지가 있는데 1) Connection Pool 2) MyBatis 3) Ojdbc6.jar 파일이다. 1번은 commons-dbcp(dbcp가 Database Conne..
-
스프링(Spring) 유효성 검사(Validation Check)Spring/컨셉 2018. 9. 7. 10:00
스프링의 큰 강점 중 하나가 name 속성명만 맞추면 그에 해당하는 VO객체 매개변수에 set된다는 것이다. 이와 같이 스프링에서는 모든 데이터를 VO 객체단위로 관리하는데 이를 커맨드(Command) 객체라고도 칭한다. 스프링에서는 커맨드 객체의 멤버들 검증을 보다 간편하게 제공한다. pom.xml에서 hibernate-validator 검색해 org.hibernate hibernate-validator 검색해 org.hibernate hibernate-validator의 최신 Final 버전 선택 후 OKDispatcherServlet 에 등록한 Bean Spring Configuration 파일에 다음과 같이 LocalValidatorFactoryBean 등록. Annotation을 통해 값을 검증..