2017-05-24 6 views
0

GWT의 서블릿 구현은 onBefore/onAfterDeserialization을 가지고 있는데, 이는 아무 것도하지 않고 트랜잭션을 시작하고 중지 할 수있는 훅을 제공하지만 서비스 메소드가 호출 된 후 오류 상태를 제대로 검사하지 못하게합니다. 직렬화 된 반환 값에 액세스 할 수 있으며 throw 된 예외에 직접 액세스 할 수는 없으므로 GWT 서블릿을 다시 작성하지 않고 롤백할지 여부를 결정할 수 없습니다.Spring없이 임베디드 jetty/GWT RemoteServiceServlet에 트랜잭션 지원 추가하기?

aspectj의 컴파일 타임 짜기 사용에 대해 생각하고있었습니다. 그러나 모듈을 aspectj 컴파일러를 사용하여 다시 컴파일해야하기 때문에 Netbeans의 컴파일시 저장 기능이 작동하지 않습니다.

LTW (load-time-weaving)은 어떨까요? Spring 프레임 워크를 사용하지 않고 webapp 컨테이너에 LTW를 추가하는 방법이 있습니까?

자바 동적 프록시를 기반으로 AOP를 사용하려고 생각했습니다. 서블릿 앞에 프록시를 두는 것. 다시 말하면 Jetty WebApp 컨테이너에 원래 서블릿 대신 프록시를로드하도록 지시하는 방법이 있습니다.

이미 사용할 준비가 된 솔루션이 있습니까?

답변

0

나는 당신이 원하는 것을하기 위해 public String processCall(RPCRequest rpcRequest)에서 RemoteServiceServletRPC.invokeAndEncodeResponse의 조합을 덮어 쓸 수 있다고 생각합니다.

몇 줄의 코드를 복사/붙여 넣기해야하므로 이상적은 아니지만 실제로는 적습니다. 나는 약간의 커스터마이징이 필요한 동일한 문제를 겪었고, 관련 메서드에는 필요한 액세스 한정자가 없었기 때문에 일부 부분을 복사/붙여 넣기가 끝났습니다.

나머지 질문에 대해서는 언급 할 수 없지만 GWT-RPC에는 새로운 팬이없는 것처럼 보이기 때문에 즉시 사용할 수있는 솔루션을 찾을 수는 없습니다. 레거시 시스템을 유지하는 사람들. 따라서 나는 더 이상 유지되지 않는 해결책을 찾거나 찾지 못할 것으로 기대합니다.