자바

자바 기반의 개발 경험, 코드 예제, 프레임워크 활용법 등을 다룹니다.

자바

Tomcat, TomEE, Spring Framework 버전 별 스펙 정리

사진: Unsplash의Nathan Dumlao 느린 소식 하나 Java Enterprise Edition이 오라클에서 이클립스 재단으로 넘어갔다. 그리고 패키지 경로가 javax.* 에서 jakarta.* 로 변경되었다. Tomcat, TomEE, Spring Framework를 사용한다면 사전에 버전별로 스펙을 확인하고 적용하자.  Apache Tomcat 버전 별 스펙 Apache TomEE 버전 별 스펙 Spring Framework 버전 별 스펙

자바

ContentCachingRequestWrapper 사용 방법

사진: Unsplash의Jørgen Håland Servlet에서 사용된 request와 response 복원 방법 Servlet에서 사용한 HttpServletRequest와 HttpServletResponse의 content는 다시 꺼내서 사용할 수 없다.  Servlet 호출을 수행한 후에 AOP에서 request와 response의 content를 다시 확인하고 싶으면 어떻게 해야 할까? 스프링 프레임워크에서 제공하는 ContentCachingRequestWrapper와 ContentCachingResponseWrapper를 이용하여 Servlet Filter를 추가하면 가능하다. 필터를 적용하면 request와 response의 content는 서블릿에서 사용된 후에, byte 배열로 복원할 수

자바

IntelliJ IDEA – 파일 인코딩 설정 방법

사진: Unsplash의Markus Spiske IntelliJ는 파일을 열 때 아래의 순서로 인코딩을 적용한다.  Byte Order Mark가 있는 경우 해당 인코딩을 적용한다.  XML, HTML, JSP 등에 파일 인코딩 선언이 있는 경우 선언된 인코딩을 적용한다.  settings에 정의한 인코딩을 적용한다.  개발을 하다 보면 하나의 프로젝트에서 UTF-8, MS949, EUC-KR 등 여러 인코딩이 적용된 파일을 다루기도 해야 한다. 요즘은 프로젝트 설정이 대부분

자바

TomEE + IntelliJ IDEA – DataSource 설정 방법

사진: Unsplash의Jari Hytönen 상황 Eclipse와 IntelliJ IDEA에서 여러 애플리케이션을 개발하고 있다.  J2EE 서버로는 TomEE를 사용하고 있다.  여러 애플리케이션은 서로 다른 DataSource를 사용하고 있다.  문제 TomEE는 하나만 설치하고 모든 애플리케이션이 공동으로 사용하고자 한다.  공동으로 사용하는 TomEE에 개별 애플리케이션을 위한 설정을 넣고 싶지 않다.  IDE에서 개별 애플리케이션을 위한 DataSource를 설정할 수 있을까?  방법 IDE 내에 있는 개별

자바

JSON + Java + Jackson

Photo by Ferenc Almasi on Unsplash Python으로 JSON을 처리하는 웹 애플리케이션을 만들면서, 자바에서는 어떻게 처리하고 있는 지 궁금했다. 검색을 해보니 여러 라이브러리 중 Jackson과 Gson을 많이 사용하고 있는 것 같다. 그 중 Jackson을 이용해서 JSON 데이터를 객체로 변환하는 방법을 찾아봤다.  JSON 데이터 구조에 맞는 POJO 클래스를 작성해서 처리하는 것이 일반적인 방법인 것 같다. 먼저 POJO

자바

IntelliJ IDEA + Gradle 설정 (feat. Gradle Wrapper)

IntelliJ IDEA로 작업한다면 Gradle을 별도로 설치할 필요가 없다. IntelliJ IDEA를 통해 관련 작업을 수행할 수 있기 때문이다. IntelliJ IDEA에서 자바 프로젝트를 생성한 경우, Gradle 프로젝트로 바꾸기만 하면 된다.  프로젝트 루트 경로에 build.gradle 파일을 생성한다. IntelliJ IDEA는 파일을 자동으로 인식하고 프로젝트에서 Gradle 기능을 사용할 수 있도록 활성화 시킨다.  plugins {     id ‘java’ }   group ‘org.example’ version ‘1.0-SNAPSHOT’   repositories {

자바

Spring Batch에서 quoteCharacter의 역할과 주의할 점

Photo by 傅甬 华 on Unsplash quoteCharacter? 구분자(Delimiter)로 필드 값을 구분하는 경우를 생각해보자. 만약 필드 값에 구분자나 줄바꿈 문자가 들어 있다면 이를 필드 값에 넣어줄 수 있는 방법이 없다. 이 때 필요한 것이 quoteCharacter 문자다. Spring Batch는 quoteCharacter로 감싸진 문자열은 모두 하나의 필드 값으로 처리한다. 기본 값은 큰따옴표(“)이며, 변경할 수 있다. 불청객 큰따옴표(“) 구분자(Delimiter)로 필드

자바

Process exited with an error: 143 (Exit value: 143)

Photo by Sarah Kilian on Unsplash commons-exec를 이용하여 프로세스를 실행하는 코드를 짤 때 타임아웃 시간을 지정할 수 있다. 그리고 프로세스를 실행했을 때, 지정된 타임아웃 시간 내에 종료되지 않을 수 있다. 이런 경우 commons-exec는 해당 프로세스를 강제 종료시키고, 다음과 같은 메시지를 출력한다. Process exited with an error: 143 (Exit value: 143) 타임아웃과 관련된 정보는 없이, 143이란

자바

자바에서 클래스패스 기반 파일 접근 방법, 그리고 IntelliJ에 적용하기

Cripping File Path 테스트에서 파손된 파일 경로(Cripping File Path)란 말이 있다. 테스트를 수행할 때 특정 경로에 있는 파일을 참조하도록 만들어 놓은 경우를 말한다. OS가 다르거나, 프로젝트 경로가 다른 개발자라면 꽤 짜증 나는 상황일 수밖에 없다. ‘가능만 하다면 무조건 상대 경로를 사용하고 절대 경로는 마지막의 마지막까지 미뤄라…… 그리고 특정 테스트 클래스에서만 사용하거나, 같은 패키지 안의 테스트

자바

BOM 기반 파일 문자 인코딩 확인하기 By Java

Photo by Markus Spiske on Unsplash 개요 Java로 BOM(Byte Order Mark)을 이용하여 파일의 문자 인코딩을 감지하는 것을 만들어 봤다. 이미 관련된 오픈소스들이 많기는 하다. 그래도 근래에 관련 정보들을 찾아봤으니, 간단하게라도 한 번 만들어 보는 게 의미가 있을 것 같아서 해봤다. Byte Order Mark UTF-8: EF BB BF UTF-16(BE): FE FF UTF-16(LE): FF FE UTF-32(BE): 00

위로 스크롤