Много раз, когда я пытаюсь получить доступ к некоторым страницам или кнопкам «Не удалось найти компонент состояния: 3j011-udy7sm-hkt798pd -1-hkt7bobh-9 "на экране для проекта JSF. Кто-нибудь знает причину этого errprjavax.ejb.NoSuchEJBException: Не удалось найти компонент с состоянием: 3j011-udy7sm-hkt798pd-1-hkt7bobh-9
2
A
ответ
1
Возможно, вы столкнулись с таймаутом, и сеанс с состоянием был удален контейнером.
Чтобы установить это значение, вы можете использовать @StatefulTimeout
(EJB 3.1). Цитата из Javadoc:
Определяет количество времени сессионного компонента может быть в режиме ожидания (не принимать каких-либо клиентских вызовов), прежде чем он имеет право на удаление с помощью контейнера.
Чтобы проверить, действительно ли это так, добавьте метод с @PreDestroy
, чтобы вы могли видеть, была ли удалена SFSB.
Пример:
@Stateful(name = "xxx")
@StatefulTimeout(value = 15, unit = TimeUnit.SECONDS)
public class Sfsb {
@PreDestroy
public void preDestroy() {
System.out.println("INFO: " + "@PreDestroy");
}
}
так вы имеете в виду, что она работает иногда, но не всегда? укажите дополнительную информацию, какой сервер приложений или какую структуру вы используете? и откуда вы ссылаетесь на фасоль? – Soosh
Возможно, ваш сеанс связи с состоянием не использовался слишком долго. Но это всего лишь предположение, пожалуйста, добавьте сервер приложений, тайм-ауты и источник на ваш вопрос. – Beryllium
@Amir Noori Сервер приложений - Jboss, и мы используем jsf framework и jpa, который управляет реляционными данными в приложении. – shree18