MVC패턴, 그리고 Front Controller 패턴등에 대해 알아보자
proxy를 생성하고 registry에 object를 등록한다.
서버의 method를 사용하길 원하는 client는 이 registry를 훑어보고 remote proxy의 복사본을 가져온다.
이후 remote proxy(client 상에 존재하는 복사본)를 사용해서 local object인 것 처럼 method를 사용한다.
역할
참고
getCustData()
와 같은 메소드들이 있음)RMI 없이 하면
public void goClient() {
try {
//새로운 소켓 생성
//outputstream 가져옴
//ObjectOutputStream에 연결
//opcode와 op argument 전송
//OS flush
//InputStream 획득
//ObjectInputStream에 연결
//return value 읽음
//exception 처리
//close
}//remote exception catch하고 처리하는 부분
}
RMI 사용시
RMI 사용하면
public void goClient(){
try {
//remote object(stub) 찾기
//remote object의 method 호출
}//remote exception 처리
}
현재 controller와 model 다른서버에 분할한 상태
위 상황에는 문제가 존재한다.
//get the request and do a JNDI lookup
//get back a stub
//call to the business method
//handle & abstract any remote exceptions
//send the return value to the controller
// obtain an InitialContext object
// perform remote lookup
// handle remote issues
//optionally, cache references
public class ControllerServlet extends HttpServlet {
public void doPost(request, response) {
//1 : request parameter 처리
String c = req.getParameter("startDate");
// date parameter에서 data conversion
//date가 범위 내에 있는지 validate
//validation중 error 발생 시 처리
//2. model 처리
//model component 불러오기
//model result를 request object에 추가
//필요하면 bean 참조
//3. view 처리
//view JSP에 dispatch
}
}
public class ControllerServlet extends HttpServlet {
public void doPost(request, response) {
//validation component 호출
//request processing 호출
//dispatch JSP
}
}