본문 바로가기

tomcat 컨넥션풀 사용시 연결끊김을 방지 하기 위한 설정 컨넥션 풀을 설정할 때 database에서 요청이 없는 컨넥션을 닫아버리기 때문에 컨넥션이 끊기는 경우가 발생됨. 이는 MySQL이 일정시간(약 8시간 이상) 아무 동작을 하지 않은 컨넥션 세션을 닫아버리기 때문. 따라서 다음과 같이 autoReconnection에 대한 파라미터를 설정해주고 주기적으로 쿼리를 날려줌으로써 컨넥션을 확인하고 컨넥션 세션을 유지함. autoReconnection의 경우 자동연결 설정에 대한 셋팅값이지만 이 또한 컨센션이 끊긴 후 최초 1번 db 연결시 에러를 발생시킴. 컨넥션이 없는 경우이기 때문. 해당 에러 발생 후 자동으로 연결을 맺게 되는 구조이기 때문에 이걸 방지하고자 validationQuery로 세션 유지를 위한 최소한의 활동을 해야함. 더보기
[Android] apk 빌드시 파일 네임 변경하기. android studio에서 apk 빌드시 기본으로는 apk-debug.apl , apk-release.apk 파일명으로 생성된다. 이 파일명이 싫다면 다음과 같이 설정한다. app/build.gradle 파일을 열고 android -> buildTypes에 다음을 추가한다. android { ... buildTypes {... applicationVariants.all { variant -> variant.outputs.all { outputFileName = "MYAPP-${variant.versionName}.apk" } } }...} 더보기
[Android] Gradle에 로컬 라이브러리 추가하기 gradle에서 직접 받은 lib를 제외하고 별도로 로컬에 있는 라이브러리를 명시적으로 연동하고자 할 때 app/libs에 파일을 추가하고build.gradle에 다음을 입력한다. implementation files('libs/[jar , aar 파일명]') 더보기
[Ubuntu] Crontab 으로 매일 새벽 5시 서버 재부팅 sudo crontab -e 로 들어간다. 여기서 nano 에디터로 설정하면 편하다. 0 5 * * * /sbin/shutdown -r now 이렇게 명령어를 등록하고 Ctrl + X => Y => [Enter] 로 저장하여 빠져나온다. 확인은 sudo crontab -l 로 확인할 수 있다. 더보기
[MySQL] 5.5 이상에서 utf8 설정 5.5 이상에서 default-character-set의 directive가 없어졌다.따라서 다음과 같이 설정하여야 한다. character-set-client-handshake=FALSEinit_connect = "SET collation_connection = utf8_general_ci"init_connect = "SET NAMES utf8"character-set-server = utf8collation-server = utf8_general_ci 더보기
[MySQL] Strict SQL Mode 비활성화 CodeIgniter의 query builder에서 계속 에러를 뱉어내는 상황. 기존에 사용하던 mysql 버전은 5.2 버전으로 꽤 오래전에 release 된 버전인데 해당 버전에서 개발된 sql이 5.7로 옮기면서 strict mode에 최적화 되지 않아서 발생된 문제. 그래서 해당 mode를 disable 시키니 정상적으로 작동함. /etc/mysql/conf.d/disable_strict_mode.cnf 파일을 생성한다.[mysqld] sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 이렇게 설정 후 mysql restart... 더보기
[Gradle] Eclipse + Gradle + Spring 웹 프로젝트 * 본 문서는 SpringMVC로 웹프로젝트를 실행하는 방법을 기술하였습니다. SpringBoot의 경우는 다르니 참고하시기 바랍니다. 1. Eclipse 프로젝트 만들기 Eclipse 플러그인인 BuildShip Gradle Integration의 경우 basic structure만 제공된다. 따라서 프로젝트 생성 후 eclipse wtp 플러그인 task를 한번 실행해줘야 한다. 다음과 같이 프로젝트명을 입력하고 Finish 버튼을 눌러 프로젝트를 생성합니다. 프로젝트 생성후 기본적으로 java-library로 되어있으므로 Library.java 파일이 생성되어있는데 해당 파일을 모두 삭제합니다. 파일을 모두 삭제하였다면 다음과 같이 src 폴더 하위에 폴더를 생성합니다.생성할 폴더는 다음과 같습니다.. 더보기
[Nginx] 간단한 설정 파일 Full Strict HTTPS 모드로의 간단한 nginx 서버 설정 ## # You should look at the following URL's in order to grasp a solid understanding # of Nginx configuration files in order to fully unleash the power of Nginx. # http://wiki.nginx.org/Pitfalls # http://wiki.nginx.org/QuickStart # http://wiki.nginx.org/Configuration # # Generally, you will want to move this file somewhere, and start with a clean # file but .. 더보기
[Android] Webview에서 새로운 창을 열때 android webview로 작업된 프로젝트에서 간혹 ipin 인증이나 결제 모듈 팝업, sms 인증 팝업을 띄워야 할 때가 있다.이 경우 webChromeClient의 onCreateWindow를 Override하여야 하며 webview setting을 다음과 같이 변경해야 한다. 1. Webview Setting 변경WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setSupportMultipleWindows(true); 2. WebChromeClient에 onCreateWindow .. 더보기
Firebase Notification의 메세지. FCM에서 메세지를 보내는 방식으로는 총 3가지가 있다. 알림 메세지, 데이타 메세지, 혼합 메세지. 알림 메세지는 notification 필드에 title, body를 넣어서 보낸다. 이렇게 되면 iOS, Android에서 FCM이 알아서 notification을 보여준다.따라서 android의 경우 onMessageRecieved에서 확인이 불가하다. 아이콘의 설정도 meta 데이타를 이용해야 한다. 데이타 메세지의 경우 iOS에서 받을 수는 있으나 content-avaiable이 1의 상태로 넘어오고 notification의 정보가 없기 때문에 알림 메세지를 보여주지 않는다. 안드로이드의 경우 작동하는데 전혀 문제가 없고 onMessageRecieved에서 데이타 핸들링을 할 수 있다. 문제는 iO.. 더보기