Я создаю WebService с аутентификацией на основе токенов, токен извлекается из мыльных заголовков.Я хочу отслеживать / профилировать каждый WebMethod, я хочу знать, какой пользователь вызвал какой WebMethod и сколько времени потребовалось для его обработки.Я не могу использовать внешние инструменты мониторинга, потому что мне все еще нужно извлечь токен, поэтому я знаю, какой пользователь фактически вызвал этот WebMethod.
Сейчас я использую простой класс WebFilter, который вызывается перед каждым WebMethod вручную и выдает исключение, еслиУ пользователя нет прав для вызова этого метода.Но добавление что-то вроде long start = System.currentMillis();
перед каждым методом и после вычисления времени не является решением, так как у меня будут сотни методов.
@WebService (serviceName = "UserService")
public class UserService implements IUserService {
@Resource
WebServiceContext wsctx;
@WebMethod
@Override
public User getUser(@WebParam(name = "name") String name) throws ServiceException {
WebFilter.filter(wsctx.getMessageContext());
return userManager.getUser(name);
}
Я ищу что-то вроде решения Interceptors, мне нужно вызвать что-топеред каждым WebMethod и после него, но перехватчики на самом деле не работают с WebMethods, поэтому я немного отчаялся по этому поводу.