블로그 이미지
Max.

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Notice

2011.06.05 09:10 개발관련
내가 이글(http://yunsunghan.tistory.com/137)를 쓴지가 벌써 3,4년 전이였는데 아직도 그설정 그대로 사용하고 있는걸 보니, 이젠 뭔가 바뀌어 있지 않을까 하고 찾아 봤다. 별고 바뀐건 없지만, 한가지 눈에 띄는게 있다. @DataTransferObject 인데, 그땐 발견하지 못한건지, 적용하지 못하고 있음을 과거글에서 찾아 볼수있다. 모델 매핑은 XML에서 하고 있으니 말이다. 

경기도 시흥에 1박으로 놀려놨다가 아침에 다른(addon)것 찾아보다 발견하여 기록해본다. @DataTransferObject를 적용하는 방법은 여기(http://www.butterdev.com/dwr/2010/10/dwr-spring-and-annotations/)에 잘 나와 있다. 핵심은 아래 코드를 참조하자. 

[XML설정]

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd">
  
   <dwr:configuration />   
   <dwr:annotation-scan base-package="org.uk.ltd.dwr.dev" scanDataTransferObject="true" scanRemoteProxy="true"/>   
</beans>



[소스코드-Bean]

@DataTransferObject
public class Address {
private String street;
...


[소스코드-Biz]

@RemoteProxy(name="dwrService")
public class DWRService {
public DWRService() { }
@RemoteMethod
public Address getAddress() throws Exception {
Address address = new Address();
address.setStreet("2245 NW Overlook Drive");
address.setCity("Portland");
address.setState("Oregon");
return address;
}
     ... 

저작자 표시
신고
posted by Max.
TAG DWR
2008.03.26 14:37 이전글(~2009)
DWR은 기본으로 서버측과 전송결과 실패시 아래와 같은 function을 실행한다.

// engine.js 내부의 내용....

dwr.engine.defaultErrorHandler = function(message, ex) {
  dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true);
  if (message == null || message == "") alert("A server error has occured.");
  // Ignore NS_ERROR_NOT_AVAILABLE if Mozilla is being narky
  else if (message.indexOf("0x80040111") != -1) dwr.engine._debug(message);
  else alert(message);
};


즉, alert() 을 실행하게 된다. 만약 메인화면에 많은 정보를 DWR을 써서 서버측에서 정보를 가져 올때 서버측 DB가 일시적인 장애가 발생한다면 어떤 현상이 일어날까? 아마도 alert()창으로 도배된 모습을 볼것이다. (사실 과거 프로젝트에서 그런것을 겪어봤다.)

해결방법은 간단하다.(의외로 이방법을 모르는 개발자들이 있어 적는다.) 여러가지 방법이 있겠지만 보통 2가지 방법을 많이 사용한다. 

하나는  setErrorHandler를 선언하여 헨들러는 넘겨주는 것이고, 

첫번째 방법

function showMessage(){
    alert('에러가 났습니다.');
}
function action1(data){
    DWREngine.setErrorHandler(showMessage);
    AjaxService.getServiceResult(model,ActionView);
}


다른 하나는 호출시점에 에러 헨들러를 선언해주는 것이다.

두번째 방법
function action1(data){
    DWREngine.setErrorHandler(showMessage);
    AjaxService.getServiceResult(
        model,
        {
            callback:ActionView,
            errorHandler:function(errorString, exception){
                alert('에러가 났습니다.');
            }
        }
        );
}

비슷하지만 에러처리를 위해 약간의 장단점이 잘 이용하면 좋을듯 하다.
신고

'이전글(~2009)' 카테고리의 다른 글

사람을 끌어들이는 힘  (0) 2008.04.04
경영과컴퓨터 잡지사  (4) 2008.04.03
DWR 기본 에러(error) 처리 변경하기  (0) 2008.03.26
4살짜리 생각에 맞추는 방법을 모르다.  (2) 2008.03.26
IWebMvc?  (0) 2008.03.26
잡생각 능력(?)을 밑천으로...  (0) 2008.03.26
posted by Max.
2007.09.30 10:09 이전글(~2009)
infoQ에 올라온 글인데,
한번쯤 예제를 돌려볼만한 흥미가 있는 놈이다.
일단 링크걸고, 시간되는대로 테스트해보고 쓸만한지 알아보자.

출처 : http://www.infoq.com/news/2007/09/rsf-release
---------------------------------------------------------------------------

RSF released with support for DWR-style Ajax

Posted by Rob Thornton on Sep 28, 2007 07:30 AM

Community
Java
Topics
Web Frameworks

The Reasonable Server Faces (RSF) project recently released version 0.7.2. RSF is a web framework based on Spring and covering much of the same ground as JSF. RSF advocates zero server state designs.

RSF started out in life as a set of utility libraries for JSF which aimed to make JSF development easier. Antranig Basman, Project Lead for RSF, describes these libraries and how RSF moved away from JSF:

These were actually quite similar in functionality to what is now called “Facelets”, only with the notable difference of the improvement in navigation transparency provided through the (now RSF) “ViewParameters” class. This issue is now being attacked in JSF through an independent route by Spring Web Flow.

Unfortunately after painful soul-searching, we were forced to conclude that the benefits we desired really could not be delivered with the JSF framework, despite the considerable community advantages that could be gained by this route

The core principles of RSF as described on their Philosophy page are:

  • Primacy of Markup
  • Universal portability
  • Natural web idiom

With this release they have added the UVB which provides similar functionality as DWR as well as extensions to the rendering model so that any section of markup can be reused.

There have been some spirited discussions with this release and the previous one about the differences between RSF and Wicket and the importance of clean markup. Basman also describes the differences between RSF and Facelets as:

although it is a considerable improvement on previous schemes for drawing up JSF views, it still suffers from the basic problem that I referred to that “control ends at the taglib boundary”. Whilst Facelets gives control over the overall setting of a view, it gives no control over the markup for what is traditionally called “components”.

For the next release of RSF, they are focusing on client-side validation and portalization.

신고
posted by Max.
TAG ajax, DWR, RSF, Spring
prev 1 next