분류 전체보기 (9) 썸네일형 리스트형 톰캣 세션공유(세션 클러스터링) 세션 클러스터링이란 두 개 이상의 WAS가 있을 때 두 개 이상의 WAS에서 같은 세션을 사용하게 처리하는것을 말합니다. 모든 서비스에서 세션이 중요하지만, 특히 실시간으로 빠르게 돈의 이동이 잦은 증권사나 은행같은 기관의 서비스 경우 서버가 아무리 이중화, 삼중화 돼있다고 해도 사용자가 속해있는 WAS서버가 다운됐을 때, 세션이 끊어지고 말텐데요. 아주 치명적이겠죠. 이럴 때를 대비해 어떤 기관에서는 세션만을 관리하는 별도의 세션 서버를 두기도 하죠. 이번 포스팅에서는 톰캣에서 세션을 공유하는 방법을 알아보려고 합니다. WAS별로 세팅방법이 조금씩 다르지만, WAS설정으로 세팅할 수 있습니다. 로드밸런싱과의 차이는 분산이라고 합니다. 저는 로드밸런싱은 길을 두개로 나눠 부하를 나누는 것이고 세션 클러스.. 부모-자식관계 트리구조 만들기 부서를 구현하고 싶을때, 3단계 까지 들어가는 부서가 있다고 치면 예를 들어 ○○실-□□부-△△팀 의 형식이라 해당하는 부서를 컬럼으로 따로 구분했었습니다. 기존에 이미 서비스중인 시스템의 데이터베이스였어서, 각각 실,부,팀의 컬럼 코드 조합해 키값을 만들어내는 식으로 구현했었는데 이후 더 효율적인 방법이 있을것으로 생각해 구현해보았습니다. 데이터베이스에 부모의 값을 가지는 컬럼만 추가해주고 자바코드에서 이를 구현하는것인데요. 데이터베이스는 이렇게만 구성해주면 자식이 무한대로 늘어날수 있는 부서구조가 되겠네요. 문제는 자바코드에서 뿌려줄때, 위와 같은 구조를 가지도록 구현하는것입니다. 먼저, 트리에 해당하는 VO를 만들어 주도록 하겠습니다. public class TreeNode { // 트리 기본 - .. 웹서비스 - CXF vs AXIS 오랜만에 글을 씁니다.. 이리저리 치여 많이 소홀했네요. 웹서비스에 관해 아무것도 모르다가 정보처리기사도 준비하고, 이번에 프로젝트를 하면서 새롭게 알게된 웹서비스를 구현해보려고 합니다. 우선, 묻지도 따지지도 않고 구현 결과를 쉽게 확인하기 위해 SoapUI를 다운받도록 합니다. (맨 마지막에 사용할 거에요) www.soapui.org/tools/soapui/ The World’s Most Popular API Testing Tool | SoapUI The Industry’s #1 API Testing Tool Built for developers and testers alike, SoapUI is the only open source tool that covers the entire testing s.. DB에 이미지 저장(파일서버x) 통상적으로 파일업로드를 구현할 때 개인 프로젝트의 경우 로컬PC에 폴더를 하나 만들고, 해당 폴더에 업로드한 파일의 명을 데이터베이스에 저장하는 방식으로 구현한다. 이과정에서 위 캡처와같이 UUID 혹은 날짜 등 랜덤변수를 넣어 파일명이 겹쳐지지 않도록 구현을 하는데, 오리지널 파일이름과 중복저장을 방지하기 위해 변경되어 저장된 파일이름 2개의 컬럼이 필요하겠다. 이 포스팅에서는 이렇게 저장하는 방식 외에 파일 자체를 데이터베이스에 저장하는것으로 알아보겠다. 환경은 스프링프레임워크, 데이터베이스는 MSSQL 사용. 먼저 데이터베이스에 저장될 컬럼을 만들어주자. 혹은 varbinary대신 image를 사용해도 무관하다. 둘의 차이는 다음과 같다. View에는 다음과 같은 파일박스를 만들어주자 EasyUI로.. MSSQL - IDENTITY 사용법 create table sales_client( business_id int IDENTITY(1, 1) NOT NULL PRIMARY KEY, business_name varchar(50) NOT NULL .................... ) sales_client 테이블을 만들고, 위 캡처와 같은 방식으로 BUSINESS_ID를 제외하고 데이터를 넣은 경우 BUSINESS_ID가 순차적으로 들어가는것을 확인할 수 있는데, 여기서 데이터를 삭제 후 조회 이후 다시 데이터를 넣게되면 다음과 같이 지우기 전부터 이어져 4번부터 시작되게 되는데 DBCC CHECKIDENT('sales_client', RESEED, 0); 코드로 초기화 시켜주자. 0이 아닌 숫자로 초기화시키면 그 숫자부터 시작 다시 데이터.. 톰캣 실행시 콘솔창 debug 설정 다음과 같이 콘솔창에 debug가 줄줄 뜨는경우 없애고싶다면 logback.xml에 다음과 같은 소스를 추가 UTF-8 %d{yyyyMMdd HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n D:\Tmi_account\Web\log\trace.log %d{yyyyMMdd HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n 100MB D:/Tmi_account/Web/log/logexample.%i.log.zip 1 10 물론 스프링 기준으로 pom.xml에 관련 라이브러리를 추가해주어야 한다. 이렇게 추가해주면 logback.xml에 추가되어있는 경로대로 txt파일에 로그가 남게되고, 일정 기간 또는 용량이 넘으면 z.. XSS(Cross Site Scripting) 크로스사이트스크립팅 방지처리 XSS란 약자를 줄이면 CSS가 맞으나, 우리가 흔히 아는 css와 용어가 겹치므로 XSS라고 정의된 해킹 기법이다. XSS 처리를 하지 않을 경우 사용자가 코딩지식이 조금이라도 있는 사람이라면 매우 치명적일 수 있다. 예를 들어보자. 다음과 같은 문자열을 넣은 게시글이 있다. 사람들이 이 글을 눌러서 본문을 볼때마다 다음과 같은 메시지를 만날수 있겠다. 먼저, 데이터베이스에 저장되어있는 XSS처리를 해준 내용과 XSS처리를 하지 않은 내용을 비교해서 살펴보자면 첫번째 row가 xss처리를 한부분, 두번째 row가 xss처리를 안한 부분이다. 이처럼 아무런 처리를 하지 않은 상태에서 주소창 혹은 페이지에 와 같은 코드를 넣는것을 허용하게 되면, 악의적으로 페이지를 망치거나, 세션 및 쿠키 정보 등을 해커.. Maven 오프라인 설정 스프링 프레임워크에서 pom.xml에 입력한 코드로 메이븐 라이브러리를 받아오게 될 경우 최초 1회는 인터넷에서 받아오게 된다. 이후 C:\Users\user\.m2 와 같은 내 로컬 경로에 저장이되는데 repository 폴더에 라이브러리들이 저장되고, settings.xml 파일 수정으로 기본 경로를 수정할 수 있다. 이상태에서 아무것도 손대지 않아도 인터넷이 되는 상황이거나 개인 프로젝트라면 무관하겠지만, 대부분의 프로젝트의 경우 그 사이트의 내부망을 사용하거나, 보안상 외부에서 인터넷을 통한 서버 접근을 막아놓는 것이 일반적이다. 인터넷을 끊고 실행해보면 라이브러리를 찾지 못해서 에러가 발생. 그래서 인터넷이 안되는 오프라인의 경우에도 메이븐으로 받아온 라이브러리를 사용해야 하는데, 몇 가지의 방.. 이전 1 2 다음