В настоящее время у меня есть некоторые проблемы с пользовательскими правилами перезаписи URL в ISH 7.9
.
В некоторых наших средах он работает нормально (например, локальный и тестовый), но на ACC и PROD кажется, что он работает время от времени только после нескольких развертываний / перезапусков системы.
Мы создали специальный картридж с файлом deploy.gradle
для исключения файлов urlrewriterules.xml
, domainsplittings.xml
и syndication-targets.properties
из исходных картриджей. Они заменяются нашими пользовательскими файлами в папке share/system/config/cluster
. Статические правила, применяемые в urlrewriterules.xml
, всегда работают нормально. Однако правила, которые приходят из пользовательских классов Java, иногда не очень хорошо загружаются с помощью RewriteRuleFactoryImpl
, возвращая следующую ошибку:
[2018-11-07 08:20:37.906 +0100] WARN localhost ES1 appserver0 [ShipSupport-ebusiness-Site] [-] com.intershop.component.urlrewrite.internal.factory.RewriteRuleFactoryImpl [] [Storefront] [wJ5DCcg2CM5DCZPUUqdNu2D2fj8NZHaXjvP9qIZb] [yFAAAFvikjkOsqjA-0-00] "yFAAAFvikjkOsqjA-0-00" An implementation of rewrite rule type 'CustomCategory' does not exist.
Часть кода в urlrewriterules.xml
, которая будет вызывать этот класс Java, выглядит следующим образом:
<!-- Custom Category Rule /c/<NAME_OF_LOWEST_CATEGORY> -->
<rule type="CustomCategory" priority="1000" name="custom category rule">
<configurations>
<configuration id="pathPrefix">/catalog</configuration>
<configuration id="partsCatalogID">4393</configuration>
</configurations>
</rule>
У нас также есть классы, хорошо созданные в нашем собственном картридже, такие как CustomCategoryRewriteRule
, который расширяет BaseRewriteRule
. Перезапись URL включена для этих каналов, и мы всегда делаем недействительным кеш в каналах, в которых он включен.
Расширение для пользовательской категории (определенной в том же картридже) определяется следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<extensionpoint:ExtensionPointModel xmlns:extensionpoint="http://www.intershop.de/extensionpoint/2011" name="CustomCategoryRewriteRule">
<extensionBindings type="java" extensionPoint="com.intershop.component.urlrewrite.capi.RewriteRule-RewriteRule.create" extension="com.package.CustomCategoryRewriteRule" priority="1"/>
</extensionpoint:ExtensionPointModel>
Также app-extension.component определен в том же картридже, что и ниже:
<?xml version="1.0" encoding="UTF-8"?>
<components xmlns="http://www.intershop.de/component/2010" scope="global">
<fulfill requirement="selectedCartridge" value="cartridge_name" of="intershop.SLDSystem.Cartridges"/>
<fulfill requirement="selectedCartridge" value="cartridge_name" of="intershop.EnterpriseBackoffice.Cartridges"/>
</components>
Мы следили за этой статьей, чтобы подтвердить, как это сделать: https://support.intershop.com/kb/index.php/Display/B28069 У нас также все работает нормально в другом проекте, но с использованием Intershop 7.8
.
Есть ли у вас какие-либо идеи о том, что может быть причиной?
Спасибо!