如何在 Liferay ext-plugin 中覆盖 portal-impl jar 类

How to override portal-impl jar classes in Liferay ext-plugin

我想覆盖两个传送门-impl.jar 类 NtlmFiler.javaNtlmPostFilter.java,我创建了一个 ext-plugin 项目并将我自定义的 类 放在 ext-impl/src 中,但是我无法配置我的 spring.xml 文件来使用我新编写的 类 而不是 portal-impl 类,也许我这样做是完全错误的。

我的 ext-spring.xml 代码是:

<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="com.liferay.portal.servlet.filters.sso.ntlm.NtlmFilter"
    class="com.liferay.portal.servlet.filters.sso.ntlm.NtlmFilter">
    <property name="ntlmFilter">
        <bean class="com.sso.ntlm.filter.CustomNtlmFilter">
            <property name="CustomNtlmFilter" ref="customNtlmFilter" />
        </bean>
    </property>
</bean>
<bean id="com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter"
    class="com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter">
    <property name="ntlmPostFilter">
        <bean class="com.sso.ntlm.filter.CustomNtlmPostFilter">
            <property name="CustomNtlmPostFilter" ref="customNtlmPostFilter" />
        </bean>
    </property>
</bean>

注:

由于 NtlmFilter 不是 Spring bean,因此在 ext-spring.xml 中定义它没有用。

参见portal.properties

# ... and the filter
# com.liferay.portal.servlet.filters.sso.ntlm.NtlmFilter must be referenced
# in web.xml.

所以您只需要在 liferay-web.xmlweb-ext.xml 中引用您的过滤器 class(我不知道后者是否适用于覆盖)。

同样适用于NtlmPostFilter