2011-01-03 2 views
1

GWT에서 요청은 "GWT 컨트롤러"(RemoteService)에 매핑되는 XXXX.rpc로 전송됩니다. 호출 될 메소드 이름은이 요청의 게시물에 있습니다.액세스 로그에 GWT 메소드 이름을 기록합니다.

메서드 이름을 추가 HTTP 헤더로 보내거나 URL의 일부로 보낼 수있는 방법이 있습니까? 이렇게하면 액세스 로그에 메소드 이름을 기록 할 수 있습니다.

나는 RpcRequestBuilder 클래스가 있다는 것을 알고 있지만 헤더 나 URL에 메서드 이름을 추가하는 방법을 어떻게 확장하는지 알지 못합니다.

답변

1

나는 ..이 링크는 당신을 도울 수 있다고 생각 http://stuffthathappens.com/blog/2009/12/22/custom-http-headers-with-gwt-rpc/

편집 : 당신이 할 수 있다면, 당신은 다른이 문제를 해결해야한다고 생각 .. 원격 서비스 메서드를 호출하기 전에

public class MyRpcRequestBuilder extends RpcRequestBuilder() { 
    String methodName; 
    public void setMethodName(String name) { 
     methodName = name; 
    } 
    @Override 
    protected RequestBuilder doFinish(RequestBuilder rb) {  
     RequestBuilder rb = super.doFinish(rb);  
     rb.setHeader("method", methodName);  
     return rb; 
    } 
}; 
+0

감사합니다. 하지만 실제로 알고 싶은 것은 메서드 이름을 헤더에 넣으려면 어떻게해야합니까? – Tihom

+0

글쎄, 귀하의 문제에 대한 일반적인 해결책이 없습니다. 하지만 doFinish 메서드 RpcRequestBuilder 클래스를 재정 의하여이 작업을 수행 할 수 있습니다. –

+0

팀원이이 사용을 끝내었지만 doSetRequestData() 메서드를 덮어 썼습니다. 그는 rpcMethodName을 파싱하여 헤더에 설정했습니다. 그는 Rpc | rpceMethodName | rpcMethodName을 추출했습니다. – Tihom

5

를 methodName로 설정해야 . 다른 생각이 있습니다.

메서드 이름은 실제로 이미 전송되었지만 사용자가 말한 것처럼 묻혀 있습니다. 그러나 서버 측에서이 이름을 잡을 수 있습니다. RemoteServiceServlet에는 보호 된 방법 onAfterRequestDeserialized이 있습니다.이 방법은 데이터의 디코딩 된 버전을 제공하며 이러한 종류의 것에 한정됩니다. 메소드 이름이 들어 있습니다. 이 메소드를 확장하고 거기에 메소드 이름을 기록하십시오. 이렇게하면 클라이언트 측 코드에 트릭을 추가 할 필요가 없습니다.

+0

메소드 이름을 얻으면 서버 특정 로그를 수행해야합니다. 예를 들어 JBoss 또는 Tomcat을 사용하는 경우 메서드 이름을 요청에 넣을 수 있습니다. request.setAttribute ("GWT_METHOD_NAME", methodName); 그리고 AccessLogValve와 패턴을 사용하여 로그인하십시오 : % {GWT_METHOD_NAME} r – mabn

관련 문제