Я пытаюсь создать масштабируемое приложение JSF. Я хотел бы сохранить состояния просмотра на стороне клиента, но у меня проблемы с ViewScoped ManagedBean с атрибутами CDI Injected.NotSerializableException на ViewScoped ManagedBean с CDI Injected properties
SomeService.java:
@Singleton
public class SomeService {
// ...
}
SomeBean.java
@ManagedBean
@ViewScoped
public class SomeBean implements Serializable {
@Inject
private SomeService someService;
}
К сожалению GlassFish не удается сериализовать someService
, которые я не хочу быть serializabled но закачивается.
Я попытался сделать это переходным процессом, который заканчивается исключением NullPointerException при доступе к someService
после де-сериализации.
Что мне делать?
Я знаю, что я мог бы использовать CDI ViewScoped с Seam Faces или CODI, но я хочу свести к минимуму большинство зависимостей.
Я также могу дождаться JEE7, который предоставит @ViewScoped для CDI, но мы не будем использовать JEE7 до нескольких месяцев.
UPDATE:
Я просто хотел бы добавить, что я использовал встроенный EJB в комплекте в банку, которая сама связана с моей войны. Трассировка стека NotSerializableException имеет следующее сообщение: com.company.core.service.__EJB31_Generated__SomeService__Intf____Bean__
Почему вы вводите EJB с помощью '@ Inject' CDI вместо EJB EJB? – BalusC
Я действительно не понимаю, в соответствии с [link] (http://www.adam-bien.com/roller/abien/entry/inject_vs_ejb) лучше использовать '@ EJB' в некоторых случаях. Я попытался перейти от '@ Inject' к' @ EJB' без каких-либо улучшений. Есть ли у вас рекомендации? –