Sangil's blog

https://github.com/ChoiSangIl Admin

datatable checkbox click event DEV / WEB

2021-06-18 posted by sang12


datatable을 사용하여 체크 박스를 사용하는데, 로우를 클릭할때마다 특정 이벤트를 만들고 싶었는데 방법을 찾는데 한참 헤매었다.
아래와 같이 row가 select 됐을때 이벤트를 사용 할 수 있다.

table.on'select'function ( edttypeindexes ) {
        if ( type === 'row' ) {
            var data = saleProductTable.rowsindexes ).data();
            alert(JSON.stringify(data[0]));
        }
} );    
REPLY

pm2 jenkins 배포 오류 DEV / WEB

2021-05-26 posted by sang12


기존 리눅스 서버에 express 서버를 1개 사용하고 있었는데 추가로 1개 더 셋팅하려고 하다가 발생한 문제
Jenkins를 이용해서 배포하고있었는데, 기존에 쉘 명령어는 아래와 같았다.  

pm2 kill
pm2 start

ㅎㅎ 뭔가 느껴지지 않는가... 
기존에 새로 추가한것도 동일하게 셋팅하니 pm2 kill을 호출하면서 pm2로 올라가있는 전체 프로세스를 죽이는 것..
하나를 배포하면 한놈은 죽고 다른놈만 올라가는 상황 발생.

그래서 생각한 방법이 --name을 줘서 해당되는놈만 삭제하고 올리자 라고 해서 부랴부랴 start할때 --name옵션을 넣어줬다.
잘되는가 싶더니.....
pm2 stop target을 할때 target이 존재하지 않으면 젠킨스에서 오류를 뿜어낸다... 
스크립트로 만들어야 되나라는 생각이 스쳐지나갈쯤... 구원투수 등판 (
https://github.com/Unitech/pm2/issues/325)
젠킨스에서 오류가 날때 오류코드를 리턴 안하게 하면된다.

-해결방법

pm2 stop -s app || :
pm2 delete -s app || :
set DEBUG=express:* & pm2 start ./bin/www --name app

-s 옵션만 넣으면 리눅스에서 오류는 나오지 않으나 젠킨스에서 동일한 오류가 발생한다. || :을 넣어주면 실행후 null을 리턴해줘서 젠킨스에서 오류라고 생각하지 않는듯하다..!

REPLY

spring 3.x @Async (비동기) 설정방법 DEV / WEB

2021-05-06 posted by sang12


1. 사용법

- @EnableAsync 어노테이션 추가(안하면 비동기 호출이 안먹힘)

@Service("service")
@EnableAsync 
public class ServieImpl implements Service {
}

- @Async 어노테이션 추가 및 서비스 구현체 함수 생성

@Service("service")
@EnableAsync 
public class ServieImpl implements Service {
@Async
public void asyncTest() {
try {
Thread.sleep(5000);
System.out.println("####################" + Thread.currentThread().getId());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

-Controller 에서 비동기 함수 호출

@Controller("restful")
public class Restful{
@RequestMapping("/asyncTest")
public @ResponseBody void asyncTest(final @RequestBody Map<String, Object> parameterMap) {
TransferObject transferObject = new TransferObject();

try {
System.out.println("@@@@@@@@@@@@@@@@@@@@@@"+Thread.currentThread().getId());
SettlementService.asyncTest();
System.out.println("!!!!!!!!!!!!!!!!!!!!!!");
} catch (RuntimeException e) {

}
}
}

-출력 결과 

@@@@@@@@@@@@@@@@@@@@@@44
!!!!!!!!!!!!!!!!!!!!!!
####################45

-> Thread id가 다른걸 확인할 수 있다.

REPLY