Сервер, автономное приложение SE, работающее под управлением Spring 2.5.6, и встроенный причал.Клиенты, приложение Swing, подключаются к серверу с помощью HttpInvoker.
Сервер предоставляет множество сервисов, и теперь появились новые требования о том, что мне нужно регистрировать (почти) каждый вызов, сделанный клиентом.
Я хотел бы, чтобы клиент отправил некоторую дополнительную информацию (имя пользователя, идентификатор рабочей станции и т. Д. Строки и целые числа).Типичный метод на сервере выглядел бы так:
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 на стороне клиента и перегрузил следующий метод для добавления дополнительной информации.
@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;
}
Это, однако, не будет работать.Заголовки или параметры недоступны на сервере.
Любой ответ будет принят с благодарностью.