Foren

acceso a base de datos desde jsp

thumbnail
antonio martin perez, geändert vor 14 Jahren.

acceso a base de datos desde jsp

Junior Member Beiträge: 49 Beitrittsdatum: 11.11.09 Neueste Beiträge
Estoy haciendo un sitemap de la aplicación que muestre unicamente las paginas que el usuario puede acceder. Para ello necesito acceder a la base de datos y traerme los datos del usuario. Mi problema ocurre cuando voy a buscar el usuario en BD donde me da este error al abrir la session :

No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

en este punto:

public User fetchByPrimaryKey(long userId) throws SystemException {
User user = (User)EntityCacheUtil.getResult(UserModelImpl.ENTITY_CACHE_ENABLED,
UserImpl.class, userId, this);

if (user == null) {
Session session = null; <--AQUI SALTA LA EXCEPCION

try {
session = openSession();

user = (User)session.get(UserImpl.class, new Long(userId));
}
catch (Exception e) {
throw processException(e);
}
finally {
if (user != null) {
cacheResult(user);
}

closeSession(session);
}
}

return user;
}

dicho metodo se encuentra en la clase UserPersistenceImpl.

este es el codigo del action donde me salta:

public class BasicAction extends PortletAction{
public ActionForward render(
ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
RenderRequest renderRequest, RenderResponse renderResponse)
throws Exception {

String a = new String("");
if (renderRequest.getPortletSession().getAttribute("modulo") != null) {
a = renderRequest.getPortletSession().getAttribute("modulo").toString();
}
a = "consejeria";//esta linea es para ir probando mientras engancho con lo de juanfran
renderResponse.addProperty(a, "modulo");
try{
User listaUsuarios = UserUtil.findByPrimaryKey(11101);
}catch(com.liferay.portal.SystemException e ){
e.printStackTrace();
}
return mapping.findForward("portlet.ext.Sitemap.view");

}
}

Espero me podais dar alguna idea de que es lo que pasa, porque estoy perdidisimo.
thumbnail
Julio Camarero, geändert vor 14 Jahren.

RE: acceso a base de datos desde jsp

Liferay Legend Beiträge: 1668 Beitrittsdatum: 15.07.08 Neueste Beiträge
Hola Antonio,

es una buena práctica que no accedas directamente a base de datos desde los jsp.
En concreto, en Liferay, siempre se accede desde el jsp a los servicios, y estos son los que internamente te abstraen de la base de datos.

Te aconsejo que hagas esto mismo, así por ejemplo, para acceder a algún método del servicio de usuarios puedas hacer: User user = UserServiceUtil.getUserById("123");

Un saludo!

Julio Camarero
Liferay España
thumbnail
antonio martin perez, geändert vor 14 Jahren.

RE: acceso a base de datos desde jsp

Junior Member Beiträge: 49 Beitrittsdatum: 11.11.09 Neueste Beiträge
Hola Julio, gracias por tu ayuda, si bien he conseguido solucionarlo ya use el mismo método que tu me indicastes.

Un saludo.