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) で問題を報告してください。 ext が完全になくなると、ポイント。Liferay は、適切な拡張ポイントを導入するために、このようなフィードバックに依存しています。

于 2019-08-07T08:52:20.420 に答える