본문 바로가기

Computer/JAVA

(6)
Spring Transaction Timeout 설정하기 *Spring XML 기반의 설정 및 어노테이션 설정을 기준으로 설명합니다. DB를 조회하다 보면 여러 이유에서 응답이 느려질 경우가 있다. 튜닝등을 통해서 개선들을 할 수 있겠으나 프로그램 입장에서는 마냥 기다릴 수 없을 경우가 발생한다. DBMS에서 timeout을 설정해 응답을 차단할 수 있겠으나 프로그램에서도 Timeout을 설정할 수가 있다. 안전한 운영을 위해서 프로그램에서 DB응답 Timeout을 설정하는 방법을 알아보자. 1. org.springframework.jdbc.datasource.DataSourceTransactionManager 에 Default Timeout 설정하기 Transaction 설정 xml 에서 DataSourceTransactionManager 속성에 defaul..
[사례] 업로드 용량 제한 고객사 서비스 구축 중에 발생한 사례로 첨부파일 기능 사용 중에 Spring 등에서 설정하지 않았음에도 특정용량이 되는 파일을 업로드할 경우 업로드가 되지 않는 상황이 발생함. [구성] WEB - TOMCAT JDK 1.8x [검사] 1. 브라우저에서 업로드 컴포넌트와 그외 관련된 추가 파라미터들이 정상적으로 값을 가짐을 확인 2. 서버로그상에서 추가 파라메터들은 정상적으로 넘어옴을 확인했으나 파일컴포넌트 부분만 전송되지 않음 [확인결과] TOMCAT 에는 설정되지 않았으나 WEB 에서 용량제한 설정됨. WEB에서 해당 부분 수정처리 이후 정상 동작 확인함.
Tomcat 보안 설정 오래된 Java WAS(정확히는 Servlet Container)인 Tomcat을 안전하게 운영하기 위한 설정을 알아보자. 1. 불필요 폴더 삭제 Tomcat을 설치하면 기본 appBase 인 wepapps 폴더에 예제(example), 문서(docs) 등 여러 가지 context들이 있다. 이들 대부분은 구성에 따라 사용하기도 하지만 사용하지 않는 것들이 있다면 모두 지워야 한다. 2. 계정정보 변경 /conf/tomcat-users.xml 에 role, user 정보를 운영에 맞도록 설정한다. wepapps에 배포(deployment) 시에 manager 등을 사용하지 않을 경우 이 부분은 설정하지 않도록 한다. manager 등을 사용하지 않는다면 webapps에서 지워야 한다. 3. 서버정보 노출..
Tomcat 기본 에러 페이지 설정 SI 프로젝트를 하다 보면 보안점검 중에 모의해킹을 진행하는 경우가 있는데 Proxy 도구를 이용해서 Tomcat의 에러페이지를 공격하는 경우가 있다. 전달해 준 보안가이드 상으로는 web.xml에 에러페이지를 설정하라고 되어있지만 Proxy 도구를 이용해서 직접공격을 할 경우 웹애플리케이션으로 가기 전에 Tomcat에서 에러페이지를 표시해 버린다. 다음은 Tomcat의 기본에러 페이지 설정에 관한 내용이다. 1.Tomcat 기본에러 페이지 설정 server.xml에서 Valve 태그 중 ErrorReportVale를 이용해서 설정한다. showReport="false": 상세 에러내용 표시하지 않음(default: true - 상세내용 표시) showServerInfo="false": 페이지 하단에 T..
제네릭스(Generics) Java 5 부터 지원하기 시작한 기능이다.직역하면 "일반화" 라고 부를 수 있는데 Cast Exception 과 같은 객체 유형의 혼용에 따른 에러를 방지하기위해미리(컴파일) 점검하고자 만들어진 기능이다. 1. 제네릭스의 장점 - 유형의 추상화를 제공한다. : 구체적인 유형을 지정하지 않고 추상유형을 사용하여 정의할 수 있다. - 유형의 안정성을 제공한다. : 의도하지 않은 유형의 객체를 저장하는 것을 막고, 저장된 객체를 가져올때 다른 형의로의 형변환에 따라 발생할 수 있는 오류를 줄여준다. - 코드의 간결성을 제공한다. : 유형체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다. 제네릭스 문법을 알고 있다는 가정하에 기존의 코드양이 줄어든다.(문법을 모른다면 가독성이 떨어진다.) [변경의 낡은 ..
Maven 1. Maven 이란? Apache 재단에서 만든 프로젝트 관리도구이다. 그러나 쉽게 말해 의존성 관리등이 포함된 빌드도구이다. 의존성이란? 하나의 클래스를 구현함에 있어 다른 클래스를 직접참조하는 경우 참조하는 클래스에 의존한다고 할 수 있다. 즉 만들고 싶은게 있는데 그것이 없으면 못 만들때 그것에 의존하고 있는 것이다. 빌드란? 소스코드를 컴파일 단계를 포함하여 하나의 생산품으로 만들어 주는 것을 빌드라 한다. 필요성 자바는 컴파일러(javac)와 실행환경(java)을 배포했다. 이것을 순수하게 콘솔(명령창)에서 작업을 하려면 컴파일과 실행을 위해 수많은 클래스를 Class Path에 설정해야 하는 불편함이 있었다. 이때 등장한것이 순수한 빌드도구인 Ant였다. JAVA는 오픈소스이다보니 수많은 라..