Доступ к объекту httprequest внутри POJO, вызываемому WebSphere Command/JSP/etc?

Краткая версия: Как я могу получить доступ к объекту 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

Любая помощь будет принята с благодарностью.

0 ответов

Другие вопросы по тегам