2013-08-26 3 views
2

Много раз, когда я пытаюсь получить доступ к некоторым страницам или кнопкам «Не удалось найти компонент состояния: 3j011-udy7sm-hkt798pd -1-hkt7bobh-9 "на экране для проекта JSF. Кто-нибудь знает причину этого errprjavax.ejb.NoSuchEJBException: Не удалось найти компонент с состоянием: 3j011-udy7sm-hkt798pd-1-hkt7bobh-9

+3

так вы имеете в виду, что она работает иногда, но не всегда? укажите дополнительную информацию, какой сервер приложений или какую структуру вы используете? и откуда вы ссылаетесь на фасоль? – Soosh

+1

Возможно, ваш сеанс связи с состоянием не использовался слишком долго. Но это всего лишь предположение, пожалуйста, добавьте сервер приложений, тайм-ауты и источник на ваш вопрос. – Beryllium

+0

@Amir Noori Сервер приложений - Jboss, и мы используем jsf framework и jpa, который управляет реляционными данными в приложении. – shree18

ответ

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"); 
    } 
}