Доступ к объекту httprequest внутри POJO, вызываемому WebSphere Command / JSP / etc? - PullRequest
1 голос
/ 01 февраля 2012

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

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

...