2011-11-11 12 views
6

Napisałem niestandardowy serwlet w Liferay i chcę wiedzieć, która strona użytkownika go wywołuje i zna inne parametry, takie jak motyw. Ale atrybuty żądania i pola sesji są zerowe.Jak uzyskać sesję Liferay w niestandardowym serwlecie?

Jak ustawić niestandardowy serwlet do odbierania żądania, tak jak w przypadku portletu?

Dzięki

P.S. Nie chcę używać tego rozwiązania, aby czytać ciasteczka ręcznie. Chcę robić takie, jakie robi Liferay, tj. Za pomocą interfejsu API. Czy to możliwe?

Aktualizacja 1.

Mam portlet i serwletu w jednej wojnie. Mogę wiedzieć, kim jestem (zalogowani użytkownicy) od wewnątrz portletu JSP tak:

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

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

themeDisplay.getUser() 

Teraz chcę zrobić to samo z serwletu. Czy to możliwe?

Pracuję w eklipach, które są wdrażane automatycznie.

+0

Jak masz na myśli "w Liferay"? Czy zmodyfikowaliście web.xml Liferay'a w celu załadowania serwletu lub serwletu działa obok Liferay? –

+0

W jaki sposób wdrożyłeś go bezpośrednio na serwerze aplikacji lub korzystając z funkcji hot-serve liferay? –

+0

Patrz aktualizacja 1 powyżej (nie można tutaj dodać kodu). – Dims

Odpowiedz

3

Musisz naśladować działanie Liferay w obsłudze żądań portletów (niezalecane) lub, alternatywnie, umieścić kod serwletu w portlecie - może to być "obsługa zasobów" portletu - tutaj uzyskasz pełny dostęp do żądania http i może zrobić wszystko samodzielnie w odniesieniu do typów danych przesyłanych w strumieniu.

Wolałbym to polecić, ponieważ znacznie łatwiej będzie go ulepszyć. Menedżer zasobów portletów jest bardzo podobny do serwletów z logicznego punktu widzenia. Mogą istnieć inne (bardziej wskazane) opcje, ale właśnie to przychodzi mi do głowy w przypadku tego typu problemu.

+1

Obawiam się, że nie mogę umieścić kodu w portlecie, ponieważ jest on usługą stron trzecich zapisaną jako serwlet (usługa GWT). Mimo wszystko dziekuję. – Dims

+0

ok, widzę. Następnie musisz iść inną drogą. Jest to możliwe, po prostu nie mam dostępnych informacji - miejmy nadzieję, że ktoś inny wskoczy i wskaże odpowiednie informacje. –

+0

Myślę, że po prostu przestawię unformation na sesję serwletów. Oba typy żądań są dostępne z poziomu strony JSP portletu, więc wezmę Użytkownika z PortletRequest i umieściłem go w HttpServletRequest.session ... Prawdopodobnie dowiesz się, jak 2 sesje odnoszą się ... – Dims

Powiązane problemy