Чтобы получить все нужные вам функции, лучше всего просто обернуть сервис. Например, предположим, что у вас есть обработчик службы с функцией one()
и функцией two()
, обработчик службы оболочки будет реализовывать один и тот же интерфейс. Затем в обработчике службы оболочки вы могли бы сделать что-то вроде этого:
one() {
print timestamp, method name and params
call one() in real service
print timestamp for call end
}
...
Вы даже можете создать фабрику процессоров для оболочки, если вы хотите сгенерировать их для каждого клиента.
В качестве альтернативы вы могли бы реализовать ServerEventHandler, см .: https://github.com/apache/thrift/blob/master/lib/java/src/org/apache/thrift/server/TServerEventHandler.java
Они также вызываются для каждого запроса клиента (через метод processContext), но получение имени и параметров функции на уровне сервера было бы нетривиальным и метод processContext () вызывается только один раз, перед тем как вызывается обработчик, поэтому получение времени туда-обратно также будет непростым делом.