在我的Liferay 6.1.1安装中,我扩展了(注意:未覆盖)Ext插件中的UserLocalServiceImpl
类,以提供更宽松的屏幕名称验证。但是,我无法让Liferay加载新类而不是默认的UserLocalServiceImpl
类。
据我所知,替换服务类的"normal" way是使用钩子插件。不幸的是,钩子插件无法访问实现类。我必须延长UserLocalServiceWrapper
而不是UserLocalServiceImpl
,这对于这种特殊用途来说非常麻烦。
有没有办法让Liferay从Ext插件中使用我修改过的服务类?或者,有没有办法允许钩子插件访问实现类?
答案 0 :(得分:0)
可以使用以下过程从Ext插件更改服务类实现:
在Ext文件夹的META-INF
下创建一个名为docroot/WEB-INF/ext-impl/src
的新文件夹。
在ext-spring.xml
下创建一个名为docroot/WEB-INF/ext-impl/src/META-INF
的新文件。
搜索portal-spring.xml
文件的Liferay 源分发。在Liferay 6.1.1中,可以在portal-impl/src/META-INF/portal-spring.xml
找到它。
将portal-spring.xml
的内容复制到之前创建的ext-spring.xml
文件中。
从ext-spring.xml
中删除所有bean条目,但与要替换/扩展的类相对应的条目除外。
对于每个剩余的条目,请将class
属性更改为指向替换类。
重新部署Ext插件并重新启动Liferay应用程序服务器。