Как устранить исключение AttributeNotSupportedException в Hybris - PullRequest
3 голосов
/ 26 мая 2020

Каждый раз, когда мы добавляем новый атрибут к элементам. xml, мы должны выполнить обновление hybris, иначе мы получим некоторую ошибку, например: JaloItemNotFoundException: no attribute Cart.newAttribute

Но иногда после выполнения обновления вместо получения исключения JaloItemNotFoundException мы получаем что-то вроде:

de.hybris.platform.servicelayer.exceptions.AttributeNotSupportedException: cannot find attribute newAttribute

Для этого второго случая он всегда работает, если мы перезапускаем сервер после обновления. Есть ли другой способ исправить это, кроме перезапуска сервера после обновления?

Я работал в компании go, которая добавила этот перезапуск в качестве «шага развертывания» после обновления. Здесь я пытаюсь этого избежать.

Я пытался выполнить несколько обновлений и очистить кеш типов. Но не повезло.

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Обновление платформы с «Обновление запущенной системы» обычно достаточно. Если у вас есть локализация, импекс или некоторые другие изменения, вам может потребоваться включить другие параметры или расширения.

Если у вас кластерная среда, убедитесь, что все узлы также были обновлены / обновлены.

Убедитесь, что ваш процесс сборки и развертывания выглядит примерно так:

  • Build
  • Deploy
  • Restart Server. Вы останавливаете / запускаете вручную (или с помощью сценария) или позволяете Hybris перезапускаться, когда он обнаруживает изменения в развертывании.
  • Запуск обновления платформы
0 голосов
/ 26 мая 2020

Вы можете попробовать обновить платформу непосредственно после сборки из командной строки (например, «ant updatesystem») перед запуском сервера.

Перезапуск после развертывания - довольно распространенное явление. шаг (в случае, если система обновления выполняется при запущенном сервере).

Я считаю, что одна из причин, по которой требуется перезапуск, связана с тем, что контекст Spring необходимо повторно инициализировать, поскольку некоторые из bean-компонентов требуется системная информация о новом типе.

Например, скажем, вам нужно создать новый тип и перехватчик для этого вновь созданного типа. При развертывании этого изменения вы делаете следующее:

  1. Измените двоичные файлы и запустите сервер
  2. Выполните систему обновления, чтобы база данных получила последние столбцы и т. Д.

Теперь, если вы попытаетесь проверить, работает ли перехватчик, вы увидите, что он не работает, потому что, когда его Spring bean-компонент был создан (во время запуска сервера), тип, который он должен обрабатывать, отсутствовал в базу данных.

Из-за этого после перезапуска перехватчик работает должным образом.

PS: Описанная выше проблема перехватчика могла быть каким-то образом исправлена ​​в последних версиях Hybris.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...