fix: ExcutorService 추가

main
minuk926 2 years ago
parent ac847ee7df
commit eb4170cbaf

@ -105,8 +105,8 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
//-------------------------------------------------------------
// interface table save
//-------------------------------------------------------------
xmlDto.setPetiNoC(xmlDto.getPetiNoC().replaceAll("[-: ]", ""));
xmlDto.setCivilNoC(xmlDto.getCivilNoC().replaceAll("[-: ]", ""));
//xmlDto.setPetiNoC(xmlDto.getPetiNoC().replaceAll("[-: ]", ""));
//xmlDto.setCivilNoC(xmlDto.getCivilNoC().replaceAll("[-: ]", ""));
xmlDto.setPetiRegD(xmlDto.getPetiRegD().replaceAll("[-: ]", ""));
xmlDto.setPetiEndD(xmlDto.getPetiEndD().replaceAll("[-: ]", ""));
xmlDto.setAncRegD(xmlDto.getAncRegD().replaceAll("[-: ]", ""));

@ -49,7 +49,7 @@ public class RtCrackdownMgtController {
/**
* <pre> : </pre>
* @param vo
* @param dto
* @return String
* @author:
* @date: 2022. 9. 20.

@ -1,10 +1,13 @@
package kr.xit.framework.support.listener;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* web.xml
@ -13,7 +16,7 @@ import java.util.concurrent.Executors;
*/
public class ThreadPoolContextLoaderListener implements ServletContextListener {
private static final int NUMBER_OF_THREADS = 30;
private static final int NUMBER_OF_THREADS = Runtime.getRuntime().availableProcessors();
public static final String THREADPOOL_ALIAS = "threadPoolAlias";
@Override
@ -29,106 +32,91 @@ public class ThreadPoolContextLoaderListener implements ServletContextListener {
final ExecutorService threadPool = (ExecutorService) event.getServletContext().getAttribute(THREADPOOL_ALIAS);
threadPool.shutdownNow();
}
}
/*
package com.gsshop.base.jfile;
import java.io.File;
import java.io.FileInputStream;
import java.io.PrintWriter;
import java.util.List;
import java.util.concurrent.ExecutorService;
import jwork.web.modules.jfile.service.FileUploadCompletedEventListener;
import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import org.springframework.web.context.ContextLoader;
import com.gsshop.base.listener.ThreadPoolContextLoaderListener;
import com.gsshop.common.Globals;
public abstract class AbstractFTPUploadTemplate implements FileUploadCompletedEventListener {
Logger logger = LoggerFactory.getLogger(getClass());
/**
*
* https://palpit.tistory.com/entry/Java-%EB%A9%80%ED%8B%B0-%EC%8A%A4%EB%A0%88%EB%93%9C-%EC%8A%A4%EB%A0%88%EB%93%9C%ED%92%80ThreadPool
* https://codechacha.com/ko/java-executors/
* @param args
*/
public static void main(String[] args) {
TestParallelExcutorService service = new TestParallelExcutorService();
System.out.println("NUMBER_OF_THREADS = " + NUMBER_OF_THREADS);
service.submit("job1-1");
service.submit("job1-2");
service.submit("job1-3");
service.submit("job1-4");
service.submit2("job2-1");
service.submit2("job2-2");
service.submit2("job2-3");
service.submit2("job2-4");
for (int i = 0 ; i < 8; i++) {
String result = service.take();
System.out.println(result);
}
@Override
public void uploadCompleted(final String fileId, final String sourceRepositoryPath,
final String savedFileName, final String originalFileName, final String beanId,
final String etc01, final String etc02, final String etc03, final String etc04, final String etc05) {
System.out.println("end");
service.close();
}
logger.debug("fileId : {}", fileId);
logger.debug("sourceRepositoryPath : {}", sourceRepositoryPath);
logger.debug("maskingFileName : {}", savedFileName);
logger.debug("originalFileName : {}", originalFileName);
logger.debug("beanId : {}", beanId);
private static class TestParallelExcutorService {
//웹에서 사용시 ServletContext에 저장한 pool 사용
//private final ExecutorService executor = (ExecutorService)ContextLoader.getCurrentWebApplicationContext().getServletContext().getAttribute(ThreadPoolContextLoaderListener.THREADPOOL_ALIAS);
private final ExecutorService executor = Executors.newFixedThreadPool(NUMBER_OF_THREADS);
private final BlockingQueue<String> blockQueue = new ArrayBlockingQueue<>(10);
ExecutorService threadPool = (ExecutorService)ContextLoader.getCurrentWebApplicationContext().getServletContext().getAttribute(ThreadPoolContextLoaderListener.THREADPOOL_ALIAS);
public TestParallelExcutorService() {
}
threadPool.execute(new Runnable() {
@Override
// 익명 함수 처리
public void submit(String job) {
executor.submit(new Runnable() {
public void run() {
FTPClient ftp = new FTPClient();
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
String threadName = Thread.currentThread().getName();
System.out.println("finished " + job);
String result = job + ", " + threadName;
try {
ftp.connect(Globals.PRD_FTP_WEBSERVER_IP);
int reply = ftp.getReplyCode();
if (FTPReply.isPositiveCompletion(reply)) {
ftp.login(Globals.PRD_FTP_WEBSERVER_USER, Globals.PRD_FTP_WEBSERVER_PASSWORD);
if(logger.isDebugEnabled()) {
logger.debug(Globals.PRD_FTP_WEBSERVER_IP+" connect success !!! ");
blockQueue.put(result);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.changeWorkingDirectory(Globals.PRD_FTP_WEBSERVER_UPLOAD_PATH);
if(StringUtils.hasText(etc01)) {
String[] tokens = etc01.split("\\/");
String tempWorkingDirectory = Globals.PRD_FTP_WEBSERVER_UPLOAD_PATH;
for(String token : tokens) {
tempWorkingDirectory = tempWorkingDirectory+"/"+token;
ftp.makeDirectory(tempWorkingDirectory);
ftp.changeWorkingDirectory(tempWorkingDirectory);
}
});
}
List<FTPUploadFileVO> list = getFTPUploadFileVO(fileId, sourceRepositoryPath,savedFileName, originalFileName, beanId,etc01, etc02, etc03, etc04, etc05);
if(list != null) {
for(FTPUploadFileVO vo : list) {
ftp.storeFile(vo.getRemoteFileName(), new FileInputStream(new File(sourceRepositoryPath+"/"+vo.getLocalFileName())));
// lamda식 처리
public void submit2(String job) {
executor.submit(() -> {
String threadName = Thread.currentThread().getName();
System.out.println("finished " + job);
String result = job + ", " + threadName;
try {
blockQueue.put(result);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
});
}
if(logger.isDebugEnabled()) {logger.debug(" ftp transfer success !!! ");}
}
else {
ftp.disconnect();
public String take() {
try {
return blockQueue.take();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new IllegalStateException(e);
}
if(ftp.isConnected()) {
ftp.logout();
ftp.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
public void close() {
executor.shutdown();
// List<Runnable> unfinishedTasks = executor.shutdownNow();
// if (!unfinishedTasks.isEmpty()) {
// System.out.println("모든 태스크가 종료 되기 전에 서비스가 중단 되었습니다[미완료 태스크수 : " + unfinishedTasks.size());
// }
}
}
});
}
abstract public List<FTPUploadFileVO> getFTPUploadFileVO(String fileId, final String sourceRepositoryPath,
final String savedFileName, String originalFileName, String beanId,
String etc01, String etc02, String etc03, String etc04, String etc05);
}
*/

@ -129,7 +129,7 @@
return {interfaceSeqN: d.interfaceSeqN, ctznSttemntDetailSn: d.ctznSttemntDetailSn}
})
pageNav = new PageNavigation(GRID, gridDatas, props.rowKey);
fnBiz.pagePopup('detail', pageNav.gridInfo);
fnBiz.pagePopup('detail', pageNav.gridInfo.curRowData);
}
,onClickCreateAnswerPopup: function(props){
const rowData = props.grid.getRow(props.rowKey);

@ -75,6 +75,13 @@
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<!-- ExecutorService 사용 -->
<!--
<listener>
<listener-class>kr.xit.framework.support.listener.ThreadPoolContextLoaderListener</listener-class>
</listener>
-->
<!-- ExecutorService 사용 -->
<!-- logback 설정 -->
<context-param>

Loading…
Cancel
Save