2010년 4월 13일 화요일

Spring3.0 기반 SSC-RPC RC1 릴리즈!! (개인 오픈소스:Like DWR)

SSC-RPC RC1 버전을 릴리즈 했습니다.
제가 예전부터 구상한 컨셉이 있어서 이번에
개발을 했습니다.
SSC-RPC는 DWR 컨셉과 매우 흡사한
모델이라고 할 수 있습니다.
(제 개인적으로는 SPRING DWR이 아닐까
생각 합니다. ㅋㅋ)


  • Technologies
(1) JDK 1.6
(2) Tomcat 6.0
(3) Spring 3.0
(4) Tiles2
(5) jQuery
(6) JSR-303 Validation
(7) Json-Lib

  • DWR Issue
DWR은 원격에 있는 비지니스 컴포넌트(Service 클래스 같은)
를 "클래스명.메서드" 유사한 형태로 client에서
직접 호출해서 리턴값을 json 형태로 reponse 해주는
ajax 오픈 소스 입니다.
,즉 컨트롤러 없이 원격에서 직접 비지니스 컴포넌트를
다이렉트로 호출한다는 뜻입니다.
하지만 DWR이 실무에서 사용하기에는 몇가지 제약
사항이 있습니다. 그중에서 Validation,Exception 부분입니다.
내부적 DWR은 http status 정보를 전부 200 OK로
응답을 하기 때문에 클라언트에서 처리하기가
명확하지 않으며 Validation,Exception 메세지
처리가 거의 지원이 안된다고 볼 수 있습니다.
그리고 외국 블로그를 보면 spring security
연동할때 버그가 있다고 합니다.
(아무래도 범용적인 오픈 소스라서 그런듯...)

  • Just One Controller
ssc-rpc는 이런 부분에 대해서 DWR 컨셉과
유사하게 하되 위에 언급한 문제점을 해결 하도록
처리 했습니다.
단 원격 호출을 당하는 컴포넌트(Service 클래스와 같은)
클래스 생성 및 스프링빈 설정이 약간의 제약이
있지만 실무에서 사용하는데 큰 무리가 없도록
되어 있습니다. View를 위한 컨트롤러를 제외한
Ajax 호출 부분은 하나의 컨트롤러만 설정하면
되기 때문에 개발에 정말 많은 공수를 save 할 수 있습니다.

  • SSC-MVC 모든 기능 사용 가능
SSC-MVC의 모든 기능을 지원 하도록 구성 했습니다.


$(document).ready(function() {
$("#btnRequest").bind("click", function(e) {
$.ajax({
type: "POST",
url: APPLICATION_CONTEXT+"/rpc.json",
dataType: "text",
data:{
"invoke":"dwrFacade.getUserList"
},
beforeSend:function(xhr) {
},
success:function(data, textStatus,xhr) {
if(data == "{}") {
alert('데이터가 존재 하지 않습니다.');
return;
}
alert(data);
},
error:function(xhr, textStatus, errorThrown) {
//invalid binding
if(xhr.status == 400) {
alert(xhr.responseText);
}else{
alert(xhr.responseText);
}
},
complete:function(xhr, textStatus) {
},
timeout:1000
});//ajax of end
});
});


클라이언트에서는 별다른 Controller 설치 없이
위의 "invoke" 파라미터에 "스프링빈 아이디.메서드"라고
호출 하면 해당 메서드가 실행 되고 리터 값이
json 형태로 리턴 하게 되어 있습니다.

  • 선택적 Validation
원격에서 호출되는 컴포넌트의 메서드를 "@Valid"을
선언 함으로써 선택적으로 validate를 수행 할 수 있
습니다.
@Valid
public void createUser(User user) {
dwrService.createUser(user);
}

"@Valid" 어노테이션을 선언 하지 않으면 validate를
수행 하지 않습니다.

  • 실행 방법
[SpringShowcase 실행하기] 을 참고 하고 아래의 svn 주소로
체크아웃 받으시면 됩니다.
https://springshowcase.googlecode.com/svn/trunk/ssc-rpc

댓글 없음:

댓글 쓰기