2011-01-03 2 views
0

Я написал крючок (класс, простирающийся от AutoLogin), который вызывается, когда делается какой-либо запрос. В методе входа моего класса у меня есть логика для аутентификации параметров запроса, отправленных с запросом.Auto Login Hook in Liferay

Теперь Если аутентификация очищается, я проверяю, если пользователь существует в Liferay с помощью

UserLocalServiceUtil.getUserByScreenName(companyId, username) 

Теперь, если пользователь не существует в Liferay, добавить пользователя в Liferay

user = UserLocalServiceUtil.createUser(contactId); 

user.setFirstName(fname); 
user.setLastName(lname); 
user.setActive(true); 
user.setAgreedToTermsOfUse(true); 
user.setCreateDate(new Date()); 
user.setScreenName(username); 
user.setCompanyId(companyId); 
user.setPassword("test"); 
user = UserLocalServiceUtil.addUser(user); 

Теперь я вижу, как пользователь создается. Однако иногда это дает следующее исключение

com.liferay.portal.kernel.dao.orm.ORMException: org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update 

Любая идея, почему это может быть происходя? Также, если создание пользователя будет успешным при входе в портал как администратор, этот пользователь не указан в списке пользователей. Любая идея, почему это происходит? Я где-то ошибаюсь?

ответ

0

Это потому, что вы используете неправильный метод для добавления пользователя. Проверьте editUserAction.java в источнике портлета enterprise-admin для получения более подробной информации.

Смежные вопросы