Доступ к данным роли из БД

В liferay я пытаюсь получить доступ к данным ролей, доступным в базе данных, с помощью API.

Я использую класс com.liferay.portal.service.RoleLocalServiceUtil для доступа к ролям. Ниже мой код:

Role role = RoleLocalServiceUtil.getRole(10138);
ans = ans+role.getName()+","+role.getRoleId();

Роль с идентификатором 10138 существует в базе данных.

Но вышеизложенное вызывает следующее исключение: com.liferay.portal.kernel.bean.BeanLocatorException: BeanLocator не был установлен com.liferay.portal.kernel.bean.PortalBeanLocatorUtil.locate(PortalBeanLocatorUtil.java:33) com.liferay.portal .service.RoleLocalServiceUtil.getService(RoleLocalServiceUtil.java:446) com.liferay.portal.service.RoleLocalServiceUtil.getRole(RoleLocalServiceUtil.java:166) com.bl.retail.controller.KPIController.changeAccess(KPIController.java:70) sun .reflect.NativeMethodAccessorImpl.invoke0(собственный метод) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ..........

Как установить BeanLocator? Я потратил столько глупого времени на это, пожалуйста, помогите!

PS: приведенный выше код взят из отдельного сервлета, работающего на том же сервере liferay.


person Jatin    schedule 11.10.2012    source источник


Ответы (2)


попробуйте добавить
ClassLoader classLoader = (ClassLoader)PortletBeanLocatorUtil.locate(ClpSerializer.SERVLET_CONTEXT_NAME,"portletClassLoader");
перед вызовом геттера. См. http://www.liferay.com/zh/community/forums/-/message_boards/message/13302979 и http://liferay-blogging.blogspot.de/2011/03/dynamicquery-api-and-classloaders-in.html для ссылки.

Надеюсь, это поможет вам, с уважением

person Matthias G    schedule 11.10.2012
comment
Спасибо. Но в каком пакете я могу найти класс ClpSerializer? Я не могу найти путь к классу для него. - person Jatin; 11.10.2012
comment
хм, может быть, вы могли бы попробовать Classloader loader = PortalClassLoaderUtil.getClassLoader()); в соответствии с этим это должно работать из коробки - person Matthias G; 11.10.2012

Отвечая на мой собственный вопрос:

Это происходило из-за того, что доступ к данным роли выполнялся из другого сервлета.

Когда я использовал тот же код из портлета, все работало нормально.

person Jatin    schedule 16.10.2012