Краткая версия: как я могу получить доступ к объекту HttpRequest из кода POJO, который вызывается командой/JSP, выполняемым WebContainer?
- POJO не знает о CommandContext или HttpRequest (или их кузенах).
- POJO находится довольно глубоко в стеке выполнения, поэтому изменение сигнатуры метода означает изменение всех сигнатур родительского метода и мест, где эти методы вызываются.
Я также проверил аналогичный пост (мой POJO вызывается WebContainer, и должен быть способ каким-то образом получить доступ к запросу, не проходя через такие обручи): Получение веб-сеанса из POJO вне веб-контейнера
Длинная версия: я пытался найти эту иголку в стоге сена: пытаясь выяснить способ доступа к объекту HttpRequest (или его двоюродным братьям) на сервере приложений WebSphere (на самом деле Commerce) с помощью через текущий поток WebContainer (или любым другим способом, аналогичным получению транзакции через TransactionManager).
Зная, что эти потоки контейнера привязаны к одной исполняемой странице/команде/и т. д., мне было интересно, есть ли способ сделать это без использования WorkArea, стиль ThredLocal, не столь желательные подходы?
Проблема, с которой мы столкнулись, заключается в том, что за эти годы было написано много фрагментов кода, которые не заботились о storeId или langId. Таким образом, вместо того, чтобы исправлять все эти фрагменты кода, мы хотели бы каким-то образом получить доступ к контексту сеанса (с помощью объекта 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
Любая помощь будет принята с благодарностью.