JAVA processbuilder 사용하여 shell 명령어실행시 문제
한가람
지금 제가 하려는 업무 프로세스로는 디비내의 패스워드를 읽어와
이 패스워드를 암호화하는 클래스를 실행하시키는 쉘스크립트를 실행하는것입니다.public static void exchangedpasswd(string dir,string passwd) throws ioexception, interruptedexception {
vectorstring commands = new vectorstring();
commands.add(/bin/sh);
commands.add(-c);
commands.add(/usr/local/디렉토리/패스워드생성쉘.sh +passwd);
processbuilder pb = new processbuilder(commands);
file f = new file(dir);
pb.directory(f);
process pr = pb.start();
pr.waitfor();
}
위와 같은 방식으로 디렉토리와 패스워드를 인자로받아 해당 디렉토리내에서 암호화생성쉘을 실행시켜
그폴더안에 passwd 라는 암호화된 패스워드 파일을 만드는것입니다.
위와 같은 메서드 호출을 천건가량의 데이터가 있다고할때 한건한건 매번 메서드를 호출하여 처리하니
시간이 너무지연이되고있습니다. 제가 알고싶은것은 이런식으로 인자를 받아 쉘을 실행하는
프로세스처리를 일괄처리가 가능한지알고싶습니다.
예를들면 디비 데이터처리시 executebatch() 처럼 처리할 쿼리를 일괄로 모아서 한번에
실행하는 방식같은게 없을까 해서 찾아보고있지만 해결이 안나고있네요
어떠한 방식으로 해결해 나가야할지 도움부탁드립니다.
지금 프로세스 처리시간을 보면 pb.start() 하고 pr.waitfor()하는 중이 가장시간이 지연이되는데
단순히 인자를받아서 프로세스를 실행만 하는방식이라면 pr.waitfor()를 푥r()를 없이 해도 괜찮은지
알고싶습니다
-
미영
입력되는 패스워드를 모아서 파일로 떨구고 쉘이 파일을 읽어서 한 번에 처리할 수 있도록 수정하면 될 듯...?