2

在我的Liferay 6.1.1 安装中,我扩展了(注意:未覆盖)UserLocalServiceImplExt 插件中的类,以提供更轻松的屏幕名称验证。但是,我无法让 Liferay 加载新类而不是默认UserLocalServiceImpl类。

据我所知,替换服务类的“正常”方法是使用钩子插件。不幸的是,钩子插件无法访问实现类。我必须扩展UserLocalServiceWrapper而不是UserLocalServiceImpl,这对于这种特殊用途来说非常麻烦。

有没有办法让 Liferay 使用我从 Ext 插件修改的服务类?或者,有没有办法允许钩子插件访问实现类?

4

1 回答 1

0

可以使用以下过程从 Ext 插件更改服务类实现:

  • 在 Ext 文件夹中创建一个名为META-INFunder的新文件夹。docroot/WEB-INF/ext-impl/src

  • 创建一个名为ext-spring.xml.docroot/WEB-INF/ext-impl/src/META-INF

  • 在 Liferay源代码分发中搜索该portal-spring.xml文件。在 Liferay 6.1.1 中,可以在portal-impl/src/META-INF/portal-spring.xml.

  • 将 的内容复制portal-spring.xml到之前创建的ext-spring.xml文件中。

  • 从 中删除所有 bean 条目ext-spring.xml,除了那些对应于将被替换/扩展的类的条目。

  • 对于每个剩余的条目,将class属性更改为指向替换类。

  • 重新部署 Ext 插件并重启 Liferay 应用服务器。

于 2012-10-16T10:59:11.683 回答