在访问日志中记录GWT方法名称

在访问日志中记录GWT方法名称,gwt,logging,Gwt,Logging,在GWT中,请求被发送到XXXX.rpc,后者映射到GWT控制器远程服务。将被调用的方法名隐藏在该请求的post中 有没有办法将方法名作为附加HTTP头或URL的一部分发送?通过这种方式,我们可以在访问日志中记录方法名称 我知道有一个RpcRequestBuilder类,但我不知道如何扩展它以将方法名添加到标题或URL。我认为此链接可以帮助您 编辑: 您应该在调用远程服务方法之前设置methodName public class MyRpcRequestBuilder extends RpcRe

在GWT中,请求被发送到XXXX.rpc,后者映射到GWT控制器远程服务。将被调用的方法名隐藏在该请求的post中

有没有办法将方法名作为附加HTTP头或URL的一部分发送?通过这种方式,我们可以在访问日志中记录方法名称


我知道有一个RpcRequestBuilder类,但我不知道如何扩展它以将方法名添加到标题或URL。

我认为此链接可以帮助您

编辑: 您应该在调用远程服务方法之前设置methodName

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;  
    }
};

我想这个链接可以帮助你

编辑: 您应该在调用远程服务方法之前设置methodName

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;  
    }
};

如果可能的话,我认为你应该用不同的方法来解决这个问题。这是另一个想法


方法名实际上已经发送了,但正如您所说的那样被掩埋了。但在服务器端,您可以捕获此名称。在RemoteServiceServlet中,有一个受保护的方法onAfterRequestDeserialized,它为您提供数据的解码版本,并且特定于此类内容。它包含方法名。只需扩展此方法并将方法名称记录在那里。这样,您就不必在客户端代码中添加技巧。

我认为,如果可能的话,您应该以不同的方式解决这个问题。这是另一个想法


方法名实际上已经发送了,但正如您所说的那样被掩埋了。但在服务器端,您可以捕获此名称。在RemoteServiceServlet中,有一个受保护的方法onAfterRequestDeserialized,它为您提供数据的解码版本,并且特定于此类内容。它包含方法名。只需扩展此方法并将方法名称记录在那里。这样,您就不必在客户端代码中添加技巧。

谢谢。但我真正想知道的是,如何将方法名放入头中?没有任何通用的解决方案。但是您可以通过重写doFinish方法RpcRequestBuilder类来实现。我的队友最终使用了这个方法,但重写了doSetRequestData方法。他解析出rpcMethodName并将其设置在标题中。他搜索Rpc | rpceMethodName |并提取了rpcMethodName。谢谢。但我真正想知道的是,如何将方法名放入头中?没有任何通用的解决方案。但是您可以通过重写doFinish方法RpcRequestBuilder类来实现。我的队友最终使用了这个方法,但重写了doSetRequestData方法。他解析出rpcMethodName并将其设置在标题中。他搜索了Rpc | rpceMethodName |并提取了rpcMethodName。一旦你得到了方法名,你需要做一些特定于服务器的事情来记录它。例如,如果您正在使用JBoss或Tomcat,则可以将方法名称放入请求中:request.setAttributeGWT_method_name,methodName;然后使用AccessLogValve和模式来记录它:%%{GWT_METHOD_NAME}一旦您获得了方法名,您就需要执行特定于服务器的操作来记录它。例如,如果您正在使用JBoss或Tomcat,则可以将方法名称放入请求中:request.setAttributeGWT_method_name,methodName;然后使用AccessLogValve和模式记录它:%%{GWT_METHOD_NAME}r