Java взять параметры вызывающего метода из call stack
Если дорого или не хочется и есть гарантия, что на стеке в параметрах действительно был логин и он ближайший по стеку,
то спасёт ThreadLocal (заполнять в login на входе, на выходе возвращать старое значение).
Почему нельзя запустить несколько копий приложения не меняя код?
Это будем делать, если ничего не получиться.
Для этого я переписываю ClassName, чтобы он хранил массив из session (а не одну static и надо переписать ClassName.getSession чтобы возвращал соответствующую сессию.почему массив, а не map user -> session?
Вот только StackTraceElement такого не поддерживает, возвращает только имя метода =(Естессно, он ведь не хранит параметры методов. Такие извращения можно сделать только через какой-нибудь Java Debug Interface.
Оставить комментарий
uaha1979
Работаю в нагрузочном тестировании.Нужно сэмулировать работу Java-клиента. И нагрузить сервачок.
Есть проект, к нему есть исходники. В них создается сессия для доступа к серваку, и переменная в которой она хранится объявлена как static. Всюду в приложении сессия берется как ClassName.getSession. (Те в рамках одного юзера все хорошо)
Моя задача сделать, чтобы много пользователей работали одновременно.
Для этого я переписываю ClassName, чтобы он хранил массив из session (а не одну static и надо переписать ClassName.getSession чтобы возвращал соответствующую сессию.
Проблема: всюду из кода сессия берется как ClassName.getSession и нет возможности отследить какой пользователь берет сессию (или есть?).
Для решения хочу в ClassName.getSession брать call stack искать метод login и выбирать оттуда логин пользователя.
Вот только StackTraceElement такого не поддерживает, возвращает только имя метода =(
Как быть?
UPD: Еще появилась безумная идея: под каждого пользователя сделать свою функцию логина типа login_user1. Но это чересчур костыль.