首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >审核HttpInvoker邀请

审核HttpInvoker邀请
EN

Stack Overflow用户
提问于 2011-09-30 00:33:26
回答 1查看 1.1K关注 0票数 3

服务器、一个运行Spring2.5.6的独立SE应用程序和一个嵌入式jetty。客户端是Swing应用程序,使用HttpInvoker连接到服务器。

服务器公开了很多服务,现在,新的需求出现了,我需要记录(几乎)客户端进行的每一次调用。

我想做的是为客户端发送一些额外的信息,(用户名,workstationId等字符串和整数)。服务器上的典型方法如下所示

代码语言:javascript
复制
public void doStuff(int someParam) {
   // Do stuff
   List result = method(someParam)

   // Audit
   // get the client information from somewhere?!!
   String username;
   int workstationId;

   auditDao.doStuffPerformed(username, workstationId, someParam, result);

}

那么,如何从服务器上的方法中获取客户端信息呢?

我尝试过的一种解决方案是将客户端信息作为请求属性添加,并从方法内部调用方法RequestContextHolder.getRequestAttributes();。

我在客户端添加了一个CommonsHttpInvokerRequestExecutor,并重载了以下方法,以便添加附加信息。

代码语言:javascript
复制
@Override
protected PostMethod createPostMethod(HttpInvokerClientConfiguration config) throws IOException {
  PostMethod postMethod = super.createPostMethod(config);
  postMethod.addRequestHeader("someHeader", "someHeader2");
  postMethod.addParameter("someParam", "someParam2");
  postMethod.setRequestHeader("someRequestHeader", "someRequestHeader2");
  return postMethod;
}

然而,这是行不通的。无法在服务器上访问标头或参数。

任何回应都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-30 00:49:57

我认为你在正确的轨道上。您应该只在服务器端使用一个自定义的SimpleHttpInvokerServiceExporter子类,并覆盖readRemoteInvocation以从HttpExchange参数中提取客户端设置的标头。

这些标头值可以存储在静态ThreadLocal会话变量中,可以在服务器端代码中的任何位置访问该变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7600472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档