FTP 예외 처리 수정

main
이범준 2 months ago
parent 36d88fc7e1
commit 36ef1c7a0d

@ -73,7 +73,7 @@ public class LsctBean extends AbstractBean {
* @throws NumberFormatException * @throws NumberFormatException
* @throws SftpException * @throws SftpException
*/ */
public List<DataObject> getCrdnLsctList(RentQuery req) throws Exception { public List<DataObject> getCrdnLsctList(RentQuery req) {
// 기존 과태료 시스템에서 사용하던 암/복호화 함수 사용을 위해서.. // 기존 과태료 시스템에서 사용하던 암/복호화 함수 사용을 위해서..
XitAria crypto = new XitAria("xit-aria"); XitAria crypto = new XitAria("xit-aria");
@ -237,100 +237,120 @@ public class LsctBean extends AbstractBean {
throw new RuntimeException("[F] 단속 부가 대장 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("[F] 단속 부가 대장 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
///////////////////////////////////////////////// /////////////////////////////////////////////////
//FTP 서버 정보 조회 //FTP 서버 정보 조회
DataObject main = mainList.get(iLoop); DataObject main = mainList.get(iLoop);
DataObject ftpQuery = new DataObject() DataObject ftpQuery = new DataObject()
.set("SGG_CD", main.string("MM_SGGCODE")) .set("SGG_CD", main.string("MM_SGGCODE"))
.set("TASK_SE_CD", main.string("MM_TASKGB")); .set("TASK_SE_CD", main.string("MM_TASKGB"));
DataObject storageServer = finSysFtpMapper.selectFtpInfo(ftpQuery); DataObject storageServer = finSysFtpMapper.selectFtpInfo(ftpQuery);
/////////////////////////////////////////////////
//SFTP접속
Session session = null;
JSch jsch = new JSch();
Channel channel = null;
ChannelSftp channelSftp = null;
//세션객체 생성
session = jsch.getSession("admin", "127.0.0.1", Integer.parseInt("22"));
session.setPassword("pass");
//세션관련 설정정보 설정
java.util.Properties config = new java.util.Properties();
//호스트 정보 검사하지 않는다.
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setTimeout(10000); //타임아웃 설정
//log.info("connect.. " + connIp);
System.out.println("connect.. ");
session.connect(); //접속
channel = session.openChannel("sftp"); //sftp 채널 접속
channel.connect();
channelSftp = (ChannelSftp) channel;
String remoteWorkPath = storageServer.string("REMOTE_WORK_PATH");
channelSftp.cd(remoteWorkPath);
//접속완료
///////////////////////////////////////////////////////////////////
boolean fileSearchEnd = false;
int i = 1;
while(!fileSearchEnd) {
///////////////////////////////////////////////
// 단속ID로 단속 파일 다운로드
String i_char = "";
switch (i) {
case 1:i_char="A";break;
case 2:i_char="B";break;
case 3:i_char="C";break;
case 4:i_char="D";break;
}
String remoteFileName = main.string("MM_CODE")+i_char+".JPG";
String remoteFilePath = remoteWorkPath+remoteFileName;
InputStream is = channelSftp.get(remoteFilePath);
if(is == null) {
fileSearchEnd = true;
continue;
}
byte[] bytesOfFile = is.readAllBytes();
is.close();
/////////////////////////////////////////////
// 단속 파일 등록
Relation rel = new FileInfo.Relation().setInfoType(Crdn.INF_TYPE).setInfoKey(crdn.getCrdnId());
String originalFileName = remoteFileName;
DataHolder dataHolder = new FileInfo.DataHolder(rel, originalFileName, bytesOfFile);
List<FileInfo> fileInfoList = new FileInfoFactory().createFileInfos(List.of(dataHolder));
fileBean.create(fileInfoList);
i++; /////////////////////////////////////////////////
if(i >= 5) { //SFTP접속
fileSearchEnd = true; Session session = null;
} JSch jsch = new JSch();
} Channel channel = null;
ChannelSftp channelSftp = null;
//세션객체 생성
try {
session = jsch.getSession("admin", "127.0.0.1", Integer.parseInt("22"));
session.setPassword("pass");
//세션관련 설정정보 설정
java.util.Properties config = new java.util.Properties();
//호스트 정보 검사하지 않는다.
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setTimeout(10000);
session.connect(); //접속
channel = session.openChannel("sftp"); //sftp 채널 접속
channel.connect();
} catch (NumberFormatException e) {
throw new RuntimeException("[F] FTP 접속 오류");
} catch (JSchException e) {
throw new RuntimeException("[F] FTP 접속 오류");
}
channelSftp = (ChannelSftp) channel;
/////////////////////////////
//sftp연결종료
session.disconnect();
String remoteWorkPath = storageServer.string("REMOTE_WORK_PATH");
try {
channelSftp.cd(remoteWorkPath);
} catch (SftpException e) {
throw new RuntimeException("[F] FTP 경로 이동 오류");
}
} else { //접속완료
///////////////////////////////////////////////////////////////////
boolean fileSearchEnd = false;
int i = 1;
while(!fileSearchEnd) {
///////////////////////////////////////////////
// 단속ID로 단속 파일 다운로드
String i_char = "";
switch (i) {
case 1:i_char="A";break;
case 2:i_char="B";break;
case 3:i_char="C";break;
case 4:i_char="D";break;
}
String remoteFileName = main.string("MM_CODE")+i_char+".JPG";
String remoteFilePath = remoteWorkPath+remoteFileName;
// 단속 정보가 존재한다면 update?? InputStream is;
try {
is = channelSftp.get(remoteFilePath);
} catch (SftpException e) {
throw new RuntimeException("[F] FTP 파일 읽기 오류");
}
if(is == null) {
fileSearchEnd = true;
continue;
}
byte[] bytesOfFile;
try {
bytesOfFile = is.readAllBytes();
} catch (IOException e) {
throw new RuntimeException("[F] FTP 파일 읽기 오류");
}
//사진? try {
is.close();
} catch (IOException e) {
throw new RuntimeException("[F] FTP 파일 읽기 오류");
}
/////////////////////////////////////////////
// 단속 파일 등록
Relation rel = new FileInfo.Relation().setInfoType(Crdn.INF_TYPE).setInfoKey(crdn.getCrdnId());
String originalFileName = remoteFileName;
DataHolder dataHolder = new FileInfo.DataHolder(rel, originalFileName, bytesOfFile);
List<FileInfo> fileInfoList = new FileInfoFactory().createFileInfos(List.of(dataHolder));
fileBean.create(fileInfoList);
i++;
if(i >= 5) {
fileSearchEnd = true;
}
}
/////////////////////////////
//sftp연결종료
session.disconnect();
} else {
//
} }
//등록 또는 수정 완료 //등록 또는 수정 완료
////////////////////////// //////////////////////////
@ -364,7 +384,7 @@ public class LsctBean extends AbstractBean {
* @throws JSchException * @throws JSchException
* @throws NumberFormatException * @throws NumberFormatException
*/ */
public List<DataObject> getLsctList(RentQuery req) throws Exception { public List<DataObject> getLsctList(RentQuery req) {
// 기존 과태료 시스템에서 사용하던 암/복호화 함수 사용을 위해서.. // 기존 과태료 시스템에서 사용하던 암/복호화 함수 사용을 위해서..
XitAria crypto = new XitAria("xit-aria"); XitAria crypto = new XitAria("xit-aria");
@ -545,29 +565,36 @@ public class LsctBean extends AbstractBean {
Channel channel = null; Channel channel = null;
ChannelSftp channelSftp = null; ChannelSftp channelSftp = null;
//세션객체 생성 //세션객체 생성
session = jsch.getSession("admin", "127.0.0.1", Integer.parseInt("22")); try {
session.setPassword("pass"); session = jsch.getSession("admin", "127.0.0.1", Integer.parseInt("22"));
session.setPassword("pass");
//세션관련 설정정보 설정
java.util.Properties config = new java.util.Properties(); //세션관련 설정정보 설정
java.util.Properties config = new java.util.Properties();
//호스트 정보 검사하지 않는다.
config.put("StrictHostKeyChecking", "no"); //호스트 정보 검사하지 않는다.
session.setConfig(config); config.put("StrictHostKeyChecking", "no");
session.setTimeout(10000); //타임아웃 설정 session.setConfig(config);
//log.info("connect.. " + connIp); session.setTimeout(10000);
System.out.println("connect.. "); session.connect(); //접속
session.connect(); //접속 channel = session.openChannel("sftp"); //sftp 채널 접속
channel = session.openChannel("sftp"); //sftp 채널 접속 channel.connect();
channel.connect(); } catch (NumberFormatException e) {
throw new RuntimeException("[F] FTP 접속 오류");
} catch (JSchException e) {
throw new RuntimeException("[F] FTP 접속 오류");
}
channelSftp = (ChannelSftp) channel; channelSftp = (ChannelSftp) channel;
String remoteWorkPath = storageServer.string("REMOTE_WORK_PATH"); String remoteWorkPath = storageServer.string("REMOTE_WORK_PATH");
channelSftp.cd(remoteWorkPath); try {
channelSftp.cd(remoteWorkPath);
} catch (SftpException e) {
throw new RuntimeException("[F] FTP 경로 이동 오류");
}
//접속완료 //접속완료
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
@ -588,15 +615,31 @@ public class LsctBean extends AbstractBean {
String remoteFileName = main.string("MM_CODE")+i_char+".JPG"; String remoteFileName = main.string("MM_CODE")+i_char+".JPG";
String remoteFilePath = remoteWorkPath+remoteFileName; String remoteFilePath = remoteWorkPath+remoteFileName;
InputStream is = channelSftp.get(remoteFilePath);
InputStream is;
try {
is = channelSftp.get(remoteFilePath);
} catch (SftpException e) {
throw new RuntimeException("[F] FTP 파일 읽기 오류");
}
if(is == null) { if(is == null) {
fileSearchEnd = true; fileSearchEnd = true;
continue; continue;
} }
byte[] bytesOfFile = is.readAllBytes(); byte[] bytesOfFile;
is.close(); try {
bytesOfFile = is.readAllBytes();
} catch (IOException e) {
throw new RuntimeException("[F] FTP 파일 읽기 오류");
}
try {
is.close();
} catch (IOException e) {
throw new RuntimeException("[F] FTP 파일 읽기 오류");
}
///////////////////////////////////////////// /////////////////////////////////////////////
// 단속 파일 등록 // 단속 파일 등록

Loading…
Cancel
Save