Краткая версия: Как я могу получить доступ к объекту HttpRequest из кода POJO, который вызывается командой / JSP, который выполняется WebContainer?
- POJO не знает о CommandContext или HttpRequest (или его двоюродных братьях).
- POJO довольно глубоко в стеке выполнения, поэтому изменение сигнатуры метода означает изменение всех сигнатур родительского метода и мест, где эти методы вызываются.
Я также проверил аналогичную запись (мой POJO вызывается WebContainer, и должен быть способ каким-то образом получить доступ к запросу, не проходя через такие циклы): Получение веб-сессии из POJO За пределами веб-контейнера
Длинная версия: Я пытался найти эту иглу в стоге сена: пытался выяснить способ доступа к объекту HttpRequest (или его кузенам) на сервере приложений WebSphere (на самом деле Commerce) с помощью средство прохождения через текущий поток WebContainer (или любое другое средство, подобное получению Транзакции через TransactionManager).
Зная, что эти потоки контейнера связаны с одной исполняемой страницей / командой / и т. Д. Мне было интересно, есть ли способ сделать это без использования WorkArea, стиль ThredLocal не очень подходит?
Проблема, с которой мы сталкиваемся, заключается в том, что за эти годы было написано много фрагментов кода, которые не заботились о storeId или langId. Таким образом, вместо того, чтобы исправлять все эти фрагменты кода, мы бы хотели как-то получить доступ к контексту Session (с помощью объекта HttpRequest), чтобы мы могли получить CommandContext и / или другие структуры, чтобы узнать наши storeId и langId и другие данные, связанные с сессией. ,
Любая дополнительная информация, пожалуйста, не стесняйтесь спрашивать.
Один пример фрагмента псевдокода:
public class MyLittleHelper {
. . .
void unawareMethod() {
// I know it is really bad practice not to pass the actual objects around...
// But hear me out for a sec...
// This could be the easiest way of changing things, however bad it looks.
// my storeId and langId unaware method now needs to access to storeId and langId
}
. . .
} // end of class
Любая помощь будет принята с благодарностью.