본문 바로가기

분류 전체보기

(49)
[Oracle] 'ORA-00054 : 자원이 사용중이고, NOWAIT가 지정되어 있습니다.' ERROR 전 회사에서 MariaDB를 사용하다가 이직 후에 OracleDB를 사용하기 시작했다. 이전에는 운영DB의 경우, SELECT권한 밖에 없었고 개발DB도 auto commit이 기본값이라 명령어를 실행 후, 하나하나 commit을 해주지 않아도 바로 적용이 되었었다. 현재는 명령어 실행 후, commit을 해주어야하는데 테이블을 새로 만들어 데이터를 넣는 작업이 있었다. 그런데 테이블을 새로 만들어 데이터를 INSERT한 후 commit을 했는데 데이터가 하나도 조회되지 않았다. 분명 INSERT가 완료 되었는데 다른 창에서 commit하고 확인해보니 데이터가 없다.. 트랜잭션을 확인해봤는데 commit을 했음에도 불구하고 트랜잭션이 종료되지 않은 상태. 뭔가 이상하다 싶어 테이블을 날리고 다시 해보려는..
윈도우 서버 포트 포워딩 개발 서버에 Git 서버를 구축하기 위해 IIS를 사용한 후로, 서버 IP로 접속하면 IIS 기본 페이지로 연결되기 시작했다. 원래 서버 IP로 들어가면 바로 WAS로 붙었었는데, 80포트를 뺏겨서 그런건지.. 그래서 기본 페이지를 제외시켰더니 접근이 아예 되질 않았다. 그래서 포트 포워딩으로 80포트(http) 접근 시, WAS포트로 포워딩 시켜주는 작업을 하면서 이참에 host에 도메인 설정해서 사용하려고 함. 우선 host에 dev.server.kr로 도메인 설정 후 확인했을 때 거부당하는 걸 확인. cmd창으로 접속하여 netsh interface portproxy add v4tov4 listenport=80 listenaddress={Server IP} connectport={WAS port} ..
오브젝트 풀 패턴(Object Pool Pattern) Object Pooling(이하 오브젝트 풀링)이란 객체(Object)를 재사용하기 위한 디자인 패턴이다. 어플리케이션에서 빈번하게 반복되는 특정한 작업이 있다고 가정해보자. 해당 작업이 일어날 때마다 관련된 객체가 생성되고 이를 위한 메모리가 할당이 될 것이다. 그런데 이 작업이 수백, 수천만번 반복된다고 하면 메모리 공간이 남아나지 않겠찌.. 오브젝트 풀링은 이를 피하기 위해 Pool이라는 공간에 해당 객체를 설정된 개수만큼 미리 생성해 둔 다음, 작업이 일어날 때 해당 공간에서 꺼내서 사용한 후, 작업이 종료되면 다시 Pool에 객체를 반납하여 재사용한다. 따라서 일정 객체 수 이상 생성되지 않아 리소스 고갈의 리스크를 줄이면서 효율적으로 사용할 수 있다. 다만, 미리 객체를 생성해두기 때문에 해당..
JDBC / DBCP / JNDI 란? JDBC란? (Java DataBase Connectivity) JDBC는 Java DataBase Connectivity의 약자로, 자바에서 데이터베이스와 관련된 작업을 처리할 때 사용하는 API다. DBMS의 종류와 관계없이 하나의 JDBC API를 사용하여 DB작업을 처리할 수 있다. JDBC API는 JDBC 드라이버를 거쳐 DB와 통신을 한다. JDBC 드라이버는 자바 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환해주는 클라이언트 사이드 어댑터로, 각각의 DBMS는 자신에게 알맞은 드라이버를 제공하고 있다. JDBC는 다음과 같은 실행 순서를 가지고 있다. 1. JDBC 드라이버 LOAD 2. Connection 객체 생성 3. Statement 객체 생성 4. Query 실행 5..
제일복권 판매 목록 제일복권 소드아트온라인(SAO) 엘리시제이션 B상 창세신 스테이시아 아스나 - 4만 제일복권 몬스터헌터 라스트원상 리오레우스 - 4만 타이토쿠지 카구야씨는 고백받고 싶어 A상 치카 - 3만 산리오쿠지 시나모롤 2번 랜턴 - 5만 (개봉 후 내용물만 확인하고 재포장)
JPA 사용 시 No bean named 'transactionManager' available 에러 No bean named 'transactionManager' available: No matching TransactionManager bean found for qualifier 'transactionManager' - neither qualifier match nor bean name match! 해당 에러가 JPA를 사용하는데 뜨기 시작했다. JPA를 사용하여 회원가입 시 유저 정보를 DB에 저장할 때 @Transactional 어노테이션을 사용하니까 발생하기 시작. mariaDB 사용 시 트랜잭션 매니저를 설정해놓았는데 이 부분이 문제인듯하다. 기본적으로 Spring Data Jpa는 TransactionManager를 제공해주고, 그 transactionManager에 대한 bean 이름이 기..
Spring Security에서 Post request가 막히는 이슈 스프링 시큐리티를 사용한 로그인을 만들어보고 있는 도중, permitAll()을 사용하였지만 막히는 이슈가 발생하였다. 회원가입 창에서 회원가입을 하고 만들기 버튼을 누르면 같은 URL을 POST로 호출하도록 하였는데, 스프링 시큐리티에서 POST요청을 막아, 로그인 페이지로 이동함. 이러한 이유는 스프링 시큐리티에서는 기본적으로 CSRF(Cross-Site Request Forgery) 공격에 대한 보호 기능이 활성화되어있기 때문이다. CSRF는 인터넷 이용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(등록, 수정, 삭제 등)를 특정 웹사이트에 요청하도록 만드는 공격이다. 따라서 .csrf( ).disable( ) 을 추가해주면 CSRF 방어 기능을 사용하지 않기 때문에 해당 이슈를 해결하는게 가..
Gson으로 json파일 읽어서 객체로 반환하기 해당 내용은 Gson을 사용한 경우로, 아래와 같이 처리하기 위해서는 Gson 라이브러리를 받아야함 참조 : https://github.com/google/gson 해당 형태의 JSON 데이터를 가진 json 파일을 읽어 객체 형태로 반환하려고 한다. 우선 JSON key와 같은 변수명으로 Dto를 만든다. JsonReader를 생성 후 내부에 FileReader를 생성, json파일 경로를 넣어준다. Gson을 생성 후, JsonReader가 Array로 시작하는지, Object로 시작하는지 알려준다. 이 경우에 Array로 시작하기 때문에 beginArray()를 사용. while문을 돌면서 반환할 객체를 List에 담는다. 그러면 이런 식으로 알아서 객체가 리스트에 쌓이게 된다. 이런 식으로 jso..