439
2014-12-19 16:32:22
0
서버별 환경 및 작업 순서 정리
1. 통신은 JAVA Thread 통신으로 한다.
2. 통신 규약은 xml로 처리한다.
3. xml 처리시 인코딩은 당연히 UTF-8로 처리
B서버 : THREAD 메인 서버
---> 위 서버를 메인으로 두시고 작업
---> "SQLLoder 로 insert" 는 원래 시간이 거리는 작업 - XML 통신으로 실시간 입력
---> A서버와 C 서버상의 필요 데이터를 XML을 이용한 Thread Socket 통신으로 데이터 수신
---> B 서버 상에 임시 테이블을 만들어 A서버 데이터와 C 서버 비교용 데이터를 로딩함.(XML을 읽어 들이면서 바로 INSERT
A서버 : Thread 응답 모듈이나 JSP(기타 서버형태별 응답페이지)를 작성하여 응답(XML 리턴) --> 처리 대상 데이터 정보
C서버 : Thread 응답 모듈이나 JSP(기타 서버형태별 응답페이지)를 작성하여 응답(XML 리턴)--> 처리작업용 기준 또는 비교용 데이터를 리턴
위와 같이 처리하시면 편합니다.
즉 A,C 서버에서는 단순히 데이터를 던집니다.
A서버에서는 매번 신규로 처리할 데이터를 던지고........
C서버에서는 UPDATE 된 처리기준 또는 비교 데이터를 B 서버로 던지고..............
B 서버에서는 A 서버에서 통신된 신규 데이터를 테이블에 담고
C 서버에서 던진 기준 또는 비교용 데이터를 UPDATE 작업을 통한 B 서버상의 기준테이블을 만드시고
그리고 나서 B 서버에서 Procedure(==> C 서버상의 처리 로직을 프로시저에서 처리) 를 최종적으로 Thread 데몬에서 콜하여 즉..
CallableStatement cs = null;
cs = con.prepareCall("{call PROC_TEST(?)}");
cs.setString(1,문자abc);
cs.execute();
이런식으로 Procedure를 통한 처리작업을 하면 될것 같습니다.
물론 ==> "프로시져로 C 서버에서 데이터 처리하는 것을 select 순간에 처리를 해볼까도 생각해 봤지만 처리해야 되는 데이터가 대용량이라 메모리 문제로 그것도 여의치 않는 상황" 이라고 하셨는데..
굳이 대용량이면 실시간 처리 하지 않을 것이고
그렇다고 오후 6시 이후 서버의 작업 용량이 허용되는 시간에 처리하면 될것 같습니다.
최종 처리하는 B 서버에서 Thread 데몬을 가동하여
static class testJob extends TimerTask{
....
}
위 처럼 상속받고...
public static void main(String argv[]) throws InterruptedException {
try{
ResourceBundle bundle = ResourceBundle.getBundle("server");
sp = new ServerProperty();
sp.setTimeOut( Integer.parseInt(bundle.getString("TIME_OUT")) );
sp.setDbName( bundle.getString("DB_NAME") );
sp.setDbId( bundle.getString("DB_ID") );
sp.setDbPassword( bundle.getString("DB_PASSWORD") );
SimpleDateFormat currentTime;
Date today;
today = new java.util.Date();
currentTime = new SimpleDateFormat("HH:mm:ss", new Locale("ko", "kr"));
testJob threadJob = new testJob();
Timer jobScheduler = new Timer();
// threadJob을 10초의 딜레이 시간이 지난 후 60(1분)초 간격으로 수행한다.
jobScheduler.scheduleAtFixedRate(threadJob, 10000, 60000);//(작업메소드 , 딜레이타임, 일정간격) - 일정한 시간(delay)이 지난후에 일정 간격
(period)으로 지정한 작업(task)을 수행한다.
} catch(Exception e){
log.write( "==== MainServer ======== Exception >>> " + e.toString() );
e.printStackTrace();
}
}