通过ext插件对源代码进行的Liferay更改不会发生
我需要覆盖portalLDAPImporterImpl.java
addUser()
方法以在从LDAP导入用户并将其添加到Liferay后执行某些操作。我遵循这些步骤(Eclipse环境):通过ext插件对源代码进行的Liferay更改不会发生
- 创建Ext插件项目名称customLdap;
- 在文档根目录/ WEB-INF/EXT-IMPL/src目录我创建了一个包名com.liferay.portal.security.ldap
- 在那里,我创造我CustomPortalLDAPImporterImpl.java类扩展portalLDAPImporterImpl。的java并重写方法ADDUSER
代码提取物:
@Override
protected User addUser(long companyId, LDAPUser ldapUser, String password)
throws Exception {
if (_log.isDebugEnabled()) {
_log.debug("Adding user " + ldapUser.getEmailAddress());
}
boolean autoPassword = ldapUser.isAutoPassword();
if (!PropsValues.LDAP_IMPORT_USER_PASSWORD_ENABLED) {
autoPassword = PropsValues.LDAP_IMPORT_USER_PASSWORD_AUTOGENERATED
&& !PropsValues.AUTH_PIPELINE_ENABLE_LIFERAY_CHECK;
if (!autoPassword) {
String defaultPassword = PropsValues.LDAP_IMPORT_USER_PASSWORD_DEFAULT;
if (StringUtil.equalsIgnoreCase(defaultPassword,
_USER_PASSWORD_SCREEN_NAME)) {
defaultPassword = ldapUser.getScreenName();
}
password = defaultPassword;
}
}
Calendar birthdayCal = CalendarFactoryUtil.getCalendar();
birthdayCal.setTime(ldapUser.getBirthday());
int birthdayMonth = birthdayCal.get(Calendar.MONTH);
int birthdayDay = birthdayCal.get(Calendar.DAY_OF_MONTH);
int birthdayYear = birthdayCal.get(Calendar.YEAR);
User user = UserLocalServiceUtil.addUser(ldapUser.getCreatorUserId(),
companyId, autoPassword, password, password,
ldapUser.isAutoScreenName(), ldapUser.getScreenName(),
ldapUser.getEmailAddress(), 0, StringPool.BLANK,
ldapUser.getLocale(), ldapUser.getFirstName(),
ldapUser.getMiddleName(), ldapUser.getLastName(), 0, 0,
ldapUser.isMale(), birthdayMonth, birthdayDay, birthdayYear,
StringPool.BLANK, ldapUser.getGroupIds(),
ldapUser.getOrganizationIds(), ldapUser.getRoleIds(),
ldapUser.getUserGroupIds(), ldapUser.isSendEmail(),
ldapUser.getServiceContext());
_log.info("-----------------------------------------User||||Added----------------------------------------");
if (ldapUser.isUpdatePortrait()) {
byte[] portraitBytes = ldapUser.getPortraitBytes();
if (ArrayUtil.isNotEmpty(portraitBytes)) {
user = UserLocalServiceUtil.updatePortrait(user.getUserId(),
portraitBytes);
}
}
return user;
}
开始=>
我也重写PortalLDAPImporterImpl.java
。您不必定义ext-spring.xml。只需参加原班级,将其复制到docroot/WEB-INF/ext-impl/src
的包com.liferay.portal.security.ldap
并更改它。不要在你的描述中创建CustomPortalLDAPImporterImpl.java
确实如你所说,但仍然没有反映出 –
而在ext部署后,你重新启动服务器?还取消部署并删除旧分机的剩菜。 –
我也是这样做的 –
东西不健全的权利 - 一个Ext-插件的具体组合和
开始=>
- 构建和pusblished我的插件
- 复制从DIST文件夹中的customLdap-ext.war文件,并在我的tomcat粘贴它delpoy文件夹
虽然这是documented as the steps to deploy in production,你至少需要重新启动Liferay(ext不可热部署)。
此外,验证WAR文件不是最终作为tomcat中的一个单独的web应用程序。相反,它将被编织成Liferay,即ROOT Web应用程序。这是你可以/应该验证的另一件事。并观察记录的重新部署步骤(与第一次部署不同),您基本上需要重新安装Liferay和您的ext插件。
我还没有验证,如果你可以不用在这里分机,记录的步骤是尽可能没有分机就去的主要原因。
如果您在此问题的其他答案中关注Klimiuk的建议,请注意您在此情况下依赖于类加载器顺序:有些JVM/appservers会首先获取您的实现,而另一些则会首先获取原始实现。它通常具有可再现性 - 例如如果它工作一次,它会一直工作。至少在你的环境更新改变行为之前,你突然想知道为什么你的修改不再有效(如果你很幸运能迅速找到答案)。
6.2.0.1 CE-GA6?你从哪里得到的 - 从原始资料来看,它不存在。 6.2.5将是匹配“GA6”的版本,6.2.0是GA1。我从来没有听说过6.2.0.1 –