I manually create the Spring context, which is ClassPathXmlApplicationContext, and pass it to Wicket application by calling
getComponentInstantiationListeners().add(new SpringComponentInjector(this, MyApp.get().getApplicationContext())). Then, In my panel I have this private class ReportMenuPanel extends WPanel { private static final long serialVersionUID = -9012565863392514416L; @Inject private IReportService reportService; ... } I also checked my code with @SpringBean and I got the same exception. On Thursday, June 21, 2018, 3:30:29 PM GMT+4:30, Andrea Del Bene <an.delb...@gmail.com> wrote: I think you are keeping a reference to your Spring bean in a page or in a component, that's why Wicket is trying to serialize it. Are you injecting this bean with @SpringBean annotation? On Thu, Jun 21, 2018 at 12:45 PM, m.xinu <mehdi_x...@yahoo.com.invalid> wrote: > Thanks for your reply. > > Both of your proposed solutions mean using other interfaces in the Lambda > expressions. However most of my Lambda definitions are in my Service tier > classes (Spring beans), and the Service tier must be independent from the > Web tier, and the force of Wicket serialization (even for the service > beans) breaks the aforementioned rule. Is there another solution? Is it > possible for Wicket not to serialize the Spring beans? or is there another > serialization mechanism in Wicket not based on Serializable interface? > > > On Thursday, June 21, 2018, 5:44:00 AM GMT+4:30, Maxim Solodovnik < > solomax...@gmail.com> wrote: > > Wicket7: > https://github.com/wicketstuff/core/blob/wicket- > 7.x/lambda-parent/lambda/src/main/java/org/wicketstuff/ > lambda/SerializableBiConsumer.java > > WBR, Maxim > (from mobile, sorry for the typos) > > On Thu, Jun 21, 2018, 08:13 Maxim Solodovnik <solomax...@gmail.com> wrote: > > > > > https://cwiki.apache.org/confluence/display/WICKET/ > Migration+to+Wicket+8.0#MigrationtoWicket8.0- > Provideserializableversionsofjava.util.function.(Supplier| > Consumer|Function|BiConsumer)ASFJIRA5aa69414-a9e9-3523- > 82ec-879b028fb15bWICKET-5991 > > <https://cwiki.apache.org/confluence/display/WICKET/ > Migration+to+Wicket+8.0#MigrationtoWicket8.0- > Provideserializableversionsofjava.util.function.(Supplier% > 7CConsumer%7CFunction%7CBiConsumer)ASFJIRA5aa69414-a9e9-3523-82ec- > 879b028fb15bWICKET-5991> > > > > WBR, Maxim > > (from mobile, sorry for the typos) > > > > On Wed, Jun 20, 2018, 22:42 m.xinu <mehdi_x...@yahoo.com.invalid> wrote: > > > >> Hi, > >> > >> I'm using Apache Wicket 7.9.0 alongside Spring 5.0.5.RELEASE. In one of > >> my beans, I call some stream API containing multiple lambda expressions. > >> During that page execution, I get following exception: > >> > >> Caused by: java.io.NotSerializableException: > >> org.devocative.metis.service.data.ReportService$$Lambda$126/997816965 > >> > >> and it is very strange for me since it is in one of my beans not in any > >> Wicket-related part. > >> > >> I've searched and I've found the Serializable casting solution, however > >> it results in a very complex syntax for my code. So is there any other > >> solution? Dose Wicket has a way for this type of serialization? > >> > >> > >> P.S: My block of code for stream: > >> > >> reports.parallelStream() > >> .filter(report -> > >> externalAuthorizationService == null || > >> externalAuthorizationService.authorizeReport(report, null, > >> currentUser.getUserId()) > >> ) > >> .flatMap(report -> report.getGroups().stream().map(dataGroup -> new > >> KeyValueVO<>(dataGroup, report))) > >> .collect(Collectors.groupingBy( > >> KeyValueVO::getKey, > >> () -> new TreeMap<>(Comparator.comparing(DataGroup::getName)), > >> Collectors.mapping( > >> KeyValueVO::getValue, > >> Collectors.toList())) > >> ); > >> > >> > >