2011-11-11 3 views
6

Ho scritto un servlet personalizzato in Liferay e voglio sapere quale pagina utente lo chiama e conosco altri parametri come il tema. Ma gli attributi della richiesta e i campi di sessione sono tutti nulli.Come ottenere la sessione Liferay nel servlet personalizzato?

Come rendere personalizzato il servlet per ricevere la richiesta come se fosse il portlet?

Grazie

P.S. Non voglio usare questa soluzione https://www.everit.biz/web/guest/blog/-/blogs/getting-current-liferay-user-in-a-standalone-webapp?_33_redirect=/web/guest/blog

che legge i cookie manualmente. Voglio fare come Liferay, cioè usando la sua API. È possibile?

Update 1.

Ho una portlet e un servlet in un WAR. Posso sapere chi sono io (utenti registrati) dall'interno portlet JSP come questo:

HttpServletRequest request = (HttpServletRequest)pageContext.getRequest(); 

ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY); 

themeDisplay.getUser() 

Ora voglio fare lo stesso da un servlet. È possibile?

Sto lavorando in eclip che si distribuisce automaticamente.

+0

Come intendete "in Liferay"? Hai modificato il web.xml di Liferay per caricare il tuo servlet o il tuo servlet eseguito accanto a Liferay? –

+0

Come lo hai distribuito, direttamente sul server delle app o usando la funzione di hot deployment di liferay? –

+0

Vedere l'aggiornamento 1 sopra (non è stato possibile aggiungere il codice qui). – Dims

risposta

3

È necessario imitare ciò che Liferay esegue nella gestione delle richieste del portlet (non consigliato) o, in alternativa, inserire il codice servlet in un portlet, che può essere la "gestione risorse" di un portlet - qui si ottiene l'accesso completo alla richiesta http e può fare tutto da solo per quanto riguarda i tipi di dati trasmessi nello stream.

Preferisco raccomandarlo in quanto sarà notevolmente più semplice da aggiornare. Portlet Resource Handler è molto simile ai servlet da un punto di vista logico. Potrebbero esserci altre opzioni (più consigliabili), ma questo è ciò che mi viene in mente per questo tipo di problema.

+1

Temo di non poter inserire il codice in un portlet, perché è un servizio di terze parti scritto come servlet (servizio GWT). Grazie lo stesso. – Dims

+0

ok, capisco. Quindi devi andare sull'altra rotta. È possibile, semplicemente non ho le informazioni prontamente disponibili - speriamo che qualcun altro salti e punti alle informazioni pertinenti. –

+0

Penso che inserirò l'informazione nella sessione servlet. Entrambi i tipi di richiesta sono accessibili dall'interno del JSP del portlet, quindi prenderò User da PortletRequest e lo inserirò in HttpServletRequest.session ... Probabilmente scopriremo come si riferiscono 2 sessioni ... – Dims