0

Я поддерживаю приложение, которое часто сохраняет огромное количество данных в базе данных во время операции сохранения. Приложение работает плавно за меньшее количество данных. Но когда я пытаюсь сохранить огромный объем данных, через 30 минут он выбрасывает исключение спящего режима. «Отключенный объект, прошедший для сохранения».JPA EntityManager hibernate исключение «удаленный объект передан для сохранения» из-за ошибки тайм-аута

Я искал вокруг различные объяснения этого и обнаружил, что это может произойти из-за в основном по двум причинам:

  1. некорректно написанный код/​​неправильно определен сущностей
  2. объект, отсоединяют после определенного количества тайм-аута

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

Предполагая, что это проблема с таймаутом, я не знаю, где определяется тайм-аут, и какой тайм-аут он решает, когда объект должен быть отсоединен.

Любая помощь будет оценена по достоинству. Мы используем Hibernate, Seam и JBoss 7 для запуска приложения

ответ

0

После долгих проб и ошибок я выяснил, что это может быть изменено путем изменения значения по умолчанию-time-timeout-координатора-среды в файле standalone.xml:

<subsystem xmlns="urn:jboss:domain:transactions:1.3"> <core-environment> <process-id> <uuid/> </process-id> </core-environment> <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/> <coordinator-environment default-timeout="300"/> </subsystem> 
1

, если вы используете Контекст с сохранением шва (так называемый SMPC), тогда менеджер сущности (и, следовательно, сеанс гибернации), вероятно, будет храниться в контексте беседы, поэтому тайм-аут, вероятно, контекст разговора, это может быть отрегулировано в components.xml со следующими ...

<core:manager conversation-id-parameter="cid" conversation-timeout="3600000" /> 

в миллисекундах

+0

Вы определенно находитесь на правильном пути с # 2, 30 минут кажется по умолчанию для некоторого параметра, определенного в одной из библиотек. Посмотрите также на свою топологию сети. Посмотрите, можете ли вы протестировать запуск всего приложения на одном компьютере вместе с базой данных и избежать сетевых переходов. –

Смежные вопросы