2011-11-11 25 views
6

Escribí servlet personalizado en Liferay y quiero saber qué página de usuario lo llama y conocer otros parámetros como el tema. Pero los atributos de la solicitud y los campos de sesión son nulos.¿Cómo obtener la sesión Liferay en servlet personalizado?

¿Cómo hacer servlet personalizado para recibir la solicitud como si el portlet lo hace?

Gracias

P.S. No deseo utilizar esta solución https://www.everit.biz/web/guest/blog/-/blogs/getting-current-liferay-user-in-a-standalone-webapp?_33_redirect=/web/guest/blog

que lee las cookies manualmente. Quiero hacer lo que hace Liferay, es decir, al usar su API. ¿Es posible?

actualización 1.

que tienen un portlet y un servlet en la Primera Guerra. Puedo saber quién soy yo (usuario registrado) desde dentro de portlets JSP como esto:

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

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

themeDisplay.getUser() 

Ahora quiero hacer lo mismo desde un servlet. ¿Es posible?

Estoy trabajando en eclips que se implementa automáticamente.

+0

¿Qué significa "en Liferay"? ¿Modificó el web.xml de Liferay para cargar su servlet o su servlet se ejecuta junto a Liferay? –

+0

¿Cómo lo implementó, directamente en el servidor de aplicaciones o utilizando la función de implementación en caliente de Liferay? –

+0

Ver la actualización 1 anterior (no se pudo agregar el código aquí). – Dims

Respuesta

3

Debe imitar lo que hace Liferay en el manejo de solicitudes de portlet (no recomendado) o, alternativamente, poner su código de servlet en un portlet; este puede ser el "manejo de recursos" de un portlet; aquí obtiene acceso completo a la solicitud http y puede hacer todo usted mismo con respecto a los tipos de datos transmitidos en la transmisión.

Prefiero recomendar esto, ya que será mucho más fácil de actualizar. Portlet Resource Handler es muy similar a los servlets desde un punto de vista lógico. Puede haber otras opciones (más aconsejables), pero esto es lo que me viene a la mente para este tipo de problema.

+1

Me temo que no puedo poner código en un portlet, porque es un servicio de terceros escrito como servlet (servicio GWT). Gracias de todos modos. – Dims

+0

bien, ya veo. Entonces tienes que ir por la otra ruta. Es posible, simplemente no tengo la información disponible, esperemos que alguien más entre y señale la información relevante. –

+0

Creo que pondré información en la sesión de servlet. Se puede acceder a ambos tipos de solicitudes desde el JSP del portlet, así que tomaré User de PortletRequest y lo incluiré en HttpServletRequest.session ... Probablemente encuentre cómo se relacionan 2 sesiones ... – Dims

Cuestiones relacionadas