Я написал крючок (класс, простирающийся от 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
Любая идея, почему это может быть происходя? Также, если создание пользователя будет успешным при входе в портал как администратор, этот пользователь не указан в списке пользователей. Любая идея, почему это происходит? Я где-то ошибаюсь?