Używam Spring i JSF 2 do tworzenia aplikacji internetowych. Przedmiotem działalności są przechowywane w pojemniku na wiosnę, a ja je wstrzykiwać w Managed Beans pomocą @ManagedProperty, tak:Jak ponownie wstrzyknąć transient @ ManagedProperty przy deserializacji?
@ManagedBean
@ViewScoped
public class SomeMB implements Serializable {
private static final long serialVersionUID = 1L;
@Getter @Setter
@ManagedProperty("#{someService}")
private SomeService someService;
// ...
Problem polega na tym, trzymam coraz NotSerializableException
dla klasy od wiosny (ServiceLocatorFactoryBean), który jest używany przez komponent bean SomeService SomeService.
Jeśli zrobię to transient
, w jaki sposób mogę wykonać ponowne wstrzyknięcie po deserializacji?
Albo, jakie byłyby inne sposoby rozwiązania tego problemu?
Czytałem tutaj kilka innych podobnych pytań, ale nie mogłem znaleźć żadnego rozwiązania tego problemu.
FYI: ten problem nie występuje, gdy używasz tylko EJB Java EE zamiast Spring. – BalusC
@BalusC Tak, czytałem o tym w innych pytaniach, niestety nie wiem wystarczająco dużo o EJB, aby go jeszcze użyć (i nie wiem, czy mógłbym przekonać współpracowników, aby pozwolili mi spróbować tego projektu) . Czy możesz wskazać mi dobry zasób, żeby się o tym dowiedzieć? – elias
To nie jest takie trudne. Tylko upewnij się, że twój kontener obsługuje już EJB (Glassfish, JBoss, Weblogic, itp.). Opisz klasę usług za pomocą '@ Stateless' lub' @ Stateful' i wpisz "@ EJB". to jest to! Nie ma potrzeby pobierania/ustawiania btw. – BalusC