Controller 에서 Service(Impl)을 호출하지 않고, Thread에서 ServiceImpl을 호출하는 방법?
- 작성자 :
- 김*남
- 작성일 :
- 2016-06-02 13:55:28
- 조회수 :
- 1,957
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
전자정부 프레임워크를 처음사용하는 사용자여서 궁금한 점이 있습니다.
Controller 에서 ServiceImpl 을 호출하지 않고, Thread 프로세스에서 ServiceImpl을 호출하고자 할때 Context생성 방법?
통상적인 Transaction은 Controller > Service(Impl) > DAO > SQL.XML
A-ServiceImpl 단에서 TCP/IP 동기/비동기전송 프로세스를 수행하고, 이를 DAO호출하여 DB정보를 읽어서 소켓전송을 하는 모듈을 작성하였습니다.
즉, SAF(Stored & Forward) 방식을 구현코자 하며, 이는 Thread(Group)에서 해당 A-ServiceImpl를 호출하고자 합니다.
또한, TCP/IP송신은 비동기 방식으로 당발(Client) 요청전문을 보내고, 다른 서버소켓(ServerSocket) 데몬을 Thread(Group)이 응답전문을 받아
B-ServiceImpl 을 호출하는 방식입니다.
따라서 DB 트랜잭션에 대한 기준이 Controller가 아니고, Thread 프로세스에서 A(또는 B) ServiceImpl(->DAO) 을 호출하는 방식으로 설계가 되었는 데,
1) 이러한 부분이 트랜잭션(또는 Application) Context 생성이 가능한지요?
2) 별도의 Context생성이 필요한지 궁금하며, Thread프로세스(TransantionInvoker)가 context-*.xml 에 지정이 필요한지도 궁금합니다.
(Client는 XPLATFORM 9.2 사용중)
----------------------------------------------------------------------------------------
public class TransantionInvoker extends Thread {
// 쓰레드 그룹에서 호출되어 지는 메소드
public void invokeTransactionData(String trxData) {
~
DummyService dummyService = new DummyServiceImpl() // A-ServiceImpl
dummyService.calledMethod(...);
~
}
public void run() {
~
invokeTransactionData(trxData);
~
}
}
public class DummyServiceImpl extends DummyService {
public void calledMethod(...) {
~
calledDAO.selectMethod();
~
callDAO.updateMethod();
~
}
}
// 질문의 취지나 내용이 구체적이지 않다면 답글하여 주세요.
Controller 에서 ServiceImpl 을 호출하지 않고, Thread 프로세스에서 ServiceImpl을 호출하고자 할때 Context생성 방법?
통상적인 Transaction은 Controller > Service(Impl) > DAO > SQL.XML
A-ServiceImpl 단에서 TCP/IP 동기/비동기전송 프로세스를 수행하고, 이를 DAO호출하여 DB정보를 읽어서 소켓전송을 하는 모듈을 작성하였습니다.
즉, SAF(Stored & Forward) 방식을 구현코자 하며, 이는 Thread(Group)에서 해당 A-ServiceImpl를 호출하고자 합니다.
또한, TCP/IP송신은 비동기 방식으로 당발(Client) 요청전문을 보내고, 다른 서버소켓(ServerSocket) 데몬을 Thread(Group)이 응답전문을 받아
B-ServiceImpl 을 호출하는 방식입니다.
따라서 DB 트랜잭션에 대한 기준이 Controller가 아니고, Thread 프로세스에서 A(또는 B) ServiceImpl(->DAO) 을 호출하는 방식으로 설계가 되었는 데,
1) 이러한 부분이 트랜잭션(또는 Application) Context 생성이 가능한지요?
2) 별도의 Context생성이 필요한지 궁금하며, Thread프로세스(TransantionInvoker)가 context-*.xml 에 지정이 필요한지도 궁금합니다.
(Client는 XPLATFORM 9.2 사용중)
----------------------------------------------------------------------------------------
public class TransantionInvoker extends Thread {
// 쓰레드 그룹에서 호출되어 지는 메소드
public void invokeTransactionData(String trxData) {
~
DummyService dummyService = new DummyServiceImpl() // A-ServiceImpl
dummyService.calledMethod(...);
~
}
public void run() {
~
invokeTransactionData(trxData);
~
}
}
public class DummyServiceImpl extends DummyService {
public void calledMethod(...) {
~
calledDAO.selectMethod();
~
callDAO.updateMethod();
~
}
}
// 질문의 취지나 내용이 구체적이지 않다면 답글하여 주세요.
A
김종남님, 안녕하세요.
1. 가능할 것으로 보입니다. 동적으로 context를 활용할 경우 자바단에서 WebApplicationContext 클래스를 이용하여 동적으로 context를 가져와 핸들링하면 될 것 같습니다.
2. 개발하시는 파트(내용)에 따라 상이할 것으로 생각되어 정확한 언급은 어려울 것으로 보입니다.
일반적인 Spring MVC 구조가 아닌 형태로 개발을 진행하실 경우 적용점검이나 상호호환성 같은 인증에 문제가 있을 수 있습니다. 현재는 Spring MVC의 구조를 따라야 인증 가능하니 이부분은 참고하시기 바랍니다.
답변이 늦은점 대단히 죄송합니다.
감사합니다.
1. 가능할 것으로 보입니다. 동적으로 context를 활용할 경우 자바단에서 WebApplicationContext 클래스를 이용하여 동적으로 context를 가져와 핸들링하면 될 것 같습니다.
2. 개발하시는 파트(내용)에 따라 상이할 것으로 생각되어 정확한 언급은 어려울 것으로 보입니다.
일반적인 Spring MVC 구조가 아닌 형태로 개발을 진행하실 경우 적용점검이나 상호호환성 같은 인증에 문제가 있을 수 있습니다. 현재는 Spring MVC의 구조를 따라야 인증 가능하니 이부분은 참고하시기 바랍니다.
답변이 늦은점 대단히 죄송합니다.
감사합니다.