오라클 시퀀스를 사용한 기능을 추가하던 중 시퀀스가 증가하지 않는 현상이 발생하였음. 간략한 작업 내용은 특정 시퀀스를 조회하여 보관하고 다시 동일한 시퀀스를 조회하여 함께 사용하는 작업이었음. 첫 번째 시퀀스 조회 시 증가된 번호를 가져왔으나 두 번째 시퀀스 조회 시 첫 번째에 조회된 번호가 그대로 들어있었음. 첫번째 시퀀스 조회 결과 : 1 두번째 시퀀스 조회 결과 : 1 해당 기능과 관련된 일부 소스는 아래와 같음. MyBatis 영역 SELECT SEQ.NEXTVAL FROM DUAL Repository 영역 TestDAO interface 작성 생략 @Repository public class TestDAOImpl implements TestDAO{ @Override public int getT..
발단상황java를 사용하고 데이터베이스에서 조회된 데이터 목록을 JSON 형태로 응답을 해주는 방법 중 하나로는 ObjectMapper Class ( import com.fasterxml.jackson.databind.ObjectMapper; )가 있다. ObjectMapper Class 내에 여러 메소드 중 하나인 writeValueAsString 메소드는 java의 Object를 직렬화 과정을 통하여 json 형태의 String 형으로 변환해 주는 역할을 한다. 이러한 기능을 이용하여 기능을 개발을 진행하던 중 원하는 결과를 반환하지 않는 경우가 발생하였다. 데이터베이스에서 데이터 목록을 조회하여 ObjectMapper의 writeValueAsString 메소드를 이용하여 값을 반환하는 기능을 개발하..
발단 java 환경에서 작업을 진행하던 중 아래와 같은 오류 로그 발생 로컬 작업환경에서는 정상적으로 테스트되었으나 서버상에서 테스트 시 발생 Java security providerexception could not derive key java rsa decryption is failed 해당 에러가 발생하는 부분에서 사용하고 있는 메소드 확인 시 아래와 같음 import org.bouncycastle.util.encoders.Base64 잘 알려진 JCE(Java Cryptography Extension) 라이브러리 보안 공급자 중 하나인 "bouncycastleprovider"를 호출하다 발생하는 것으로 확인. 원인파악 bouncycastleprovider 사용시 기본 설정하는 부분에 대하여 로컬과..
발단 사용자 사용 이력을 분석 중 일부 데이터에 특정 값이 누락되어 저장되는 현상을 확인하였음. 해당 이력이 저장되는 로직을 분석한 결과 A 메소드를 진행 시 객체에 저장된 값을 세션에 저장하여 B화면으로 이동 후 화면내 작업 완료 시 B 메소드로 가지고 가서 이력을 남기는 로직으로 확인하였음. public String A(HttpServletRequest request){ TestVo testVo = new TestVo(); testVo.setOne("1"); testVo.setTwo("2"); testVo.setThree("3"); HttpSession session = request.getSession(); session.setAttribute("TestSession", vo); //현시점 Test..
배포 준비를 하기 위해 배포 작업을 준비하던 중 작업 전 개발서버와 운영서버의 화면을 비교를 위해 확인을 진행함. 운영서버의 경우 화면 내 웹서버에 존재하는 특정 이미지가 정상적으로 표출됨을 확인하였음. 개발서버의 경우 동일한 화면 내 웹서버에 존재하는 특정 이미지가 표출되지 않고 엑스박스로 표시되고 있음을 확인하였음. 엑스박스인 경우 이미지를 정상적으로 가져오지 못하는 경우로 판단하여 원인을 파악하기 위해 순차적으로 확인해 보았다. 실제 해당 이미지의 경로를 노출할 수 없기 때문에 가상의 경로를 기준으로 설명을 진행하겠습니다. 호출 이미지 경로 : /service/img/test.jpg 확인방법 1. 개발 웹서버 해당 위치에 실제로 이미지가 존재하는가 2. 웹서버 아파치 설정 확인 3. 운영서버와 개발..
이전에 docker를 이용하여 컨테이너를 생성하여 보았다. 이후 관련 서비스를 추가하면서 컨테이너의 수가 증가하여 개발환경의 PC를 재부팅 시 기동 해야 하는 컨테이너의 개수 또한 증가하였고 반복적인 일이기 때문에 보다 간편하게 관리가 필요했다. 이를 해결하기 위해 docker-compose를 적용해 보았다. 현재 환경에서 docker-compose 설치여부 확인 docker-compose version 위 버전확인 명령어를 입력하여 docker-compose 설치여부를 확인하는데 설치가 되어있다면 아래와 같이 버전정보 확인이 가능하다. docker-compose version 1.17.1, build unknown docker-py version: 2.5.1 CPython version: 2.7.17 ..
Optional이란 java 8버전 이후 부터 java.util 패키지 내 Optional이라는 class를 제공한다. 용도는 java 비지니스 로직을 구현하며 많이 발생하는 NPE(NullPointException)을 방지하기 위함이다. Optional 사용 시 발생하는 문제점 Optional get 종류에 따른 결과확인을 위한 소스코드 public static void main(String[] args) { System.out.println("case1 - Optional.get() 수행"); Optional case1 = Optional.of("case1 data"); System.out.println("case1 " + case1.get()); System.out.println("=========..
작업내용 매일 한정된 수의 사용자를 접속시점 무작위로 당첨시켜 사용자 정보를 적재 및 즉석으로 확인 가능한 기능 현재 상황 작업환경 2대 이상의 다중 서버 환경 messageQueue 용도 서버 도입 불가 oracle DB RAC 환경 최초로직 쿠폰을 지급하기 전 현재까지 당첨된 사용자의 수를 조회하여 한정된 수치에 도달하지 않은 경우 당첨자 정보를 DB에 적재하는 방법 최초로직 문제점 예를들어 100개 한정된 수량의 쿠폰을 지급 시 다중서버 및 동시응모에 의한 100명을 초과하는 당첨자가 발생하는 경우를 확인 (이때 테스트는 junit을 통하여 멀티스레드 환경으로 진행) 최초로직 원인 A트랜잭션과 B트랜잭션이 거의 동시에 진행된 경우 A트랜잭션 조회 시점에 당첨자 수 99명 당첨자 적재 100명 커밋 ..
- Total
- Today
- Yesterday
- SSL
- SpringBoot
- Java
- Git
- IMAGE
- vscode
- spring
- providerexception
- JPA
- Linux
- 증가안됨
- JSON
- docker
- TLS
- Oracle
- jQuery
- writeValueAsString
- fasterxml
- web
- gradle
- Windows
- html
- bouncycastleprovider
- 날짜
- 컨테이너
- mybatis
- WAS
- React
- Eclipse
- SQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |