1

我正在尝试将我们公司的 Ext-Plugin 从版本 6.2.5 CE 升级到 7.2 CE。

我们曾经在旧版本中覆盖以下类:PortalImpl、CASFilter、AutoLoginFilter 和几个 CMIS 类。

对于 PortalImpl,我只是做了另一个 EXT(使用刀片“war-core-ext”模板),它工作正常。但是对于其他类,没有迹象表明覆盖的类被调用。例如,我尝试覆盖 AutoLoginFilter(它也位于 Portal-Impl.jar 和 Ext-Plugin 中的我的 extImpl 文件夹中),但似乎没有调用 getLoginRemoteUser(),因为缺少调用的日志很明显)

public class AutoLoginFilterExt extends AutoLoginFilter {

@Override
protected String getLoginRemoteUser(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, HttpSession session, String[] credentials) throws Exception {
   _log.info("getLoginRemoteUser");

我还在 ext-spring.xml 中为我的类添加了这个定义

<bean class="com.liferay.portal.util.PortalImplExt"
      id="com.liferay.portal.util.Portal"/>
<bean class="com.liferay.portal.servlet.filters.sso.cas.CASFilterExt"
      id="com.liferay.portal.servlet.filters.sso.cas.CASFilterExt"/>
<bean class="com.liferay.portal.servlet.filters.autologin.AutoLoginFilterExt"
      id="com.liferay.portal.servlet.filters.autologin.AutoLoginFilterExt"/>

我是否需要使用不同的方法,例如 Service-Wrapper 或不同的模板?如果是这样,我应该使用哪一个?请问有人能把我推向正确的方向吗?

亲切的问候,克里斯托弗

4

1 回答 1

0

仅仅因为您在 6.2 中的 ext 中实现了自定义并不意味着它必须在以后的版本中保留。事实上,我建议在没有任何核心修改的情况下努力工作,因为它往往难以维护(如您所见)。

相反,我的建议是让我们知道您需要哪些修改(并已实施 - 显示代码)并检查其他可用的替代方案。

如果这超出了“此代码暴露以下问题”的级别,则这些问题可能不在 stackoverflow 的关注范围内,但 Liferay 论坛可能会提供帮助。AutoLoginFilter 听起来像是我不会浪费任何额外想法的东西。即使是对 PortalImpl 的更改,我也会寻找替代方案来通过不同的实现来实现相同的功能。

更进一步: ext 插件注定要消失,或者越来越缩小,因为 ext 只会修改(缩小的)核心。如果您确实有可以通过插件扩展的东西,请在https://issues.liferay.com(项目 LPS)上提交问题,并附上您的确切用例、更改的理由,以便有机会进行适当的扩展一旦分机永远消失了。Liferay 依靠这样的反馈来引入适当的扩展点。

于 2019-08-07T08:52:20.420 回答