There is no problem with the code, problem is that it doesn't work how it should since 5.3. MultipartDecoder is recreated I can see code beeing invoked but UploadExceptionFilter still has the old instance an it will throw an upload exception every component event.
Problem it seems to be related to the using of Autobuild in a build method, if I replace it with a constructor call MultipartDecoder will became perthread again. Denis Nov 30, 2011 v 1:42 PM, Igor Drobiazko: > Hi, > > it works as expected. @Autobuild is a convenient way to invoke > ObjectLocator#autobuild. As mentioned in the Javadocs, autobuild > instantiates an object by invoking the public constructor with the most > parameters. No scopes are mentioned there. > > Because the buildMultipartDecoder is annotated > with @Scope(ScopeConstants.PERTHREAD), it's invoked for every new thread. > The consequence is that the injected MultipartDecoderImpl instance is > autobuild for every new request. > > I see no problems with that code. > > On Wed, Nov 30, 2011 at 1:27 PM, Denis Stepanov > <[email protected]>wrote: > >> Hi, >> >> It seems that instance created with @Autobuild will have default scope, >> perthread is not honored at all, see folowing code from Upload project: >> >> @Scope(ScopeConstants.PERTHREAD) >> public static MultipartDecoder buildMultipartDecoder(PerthreadManager >> perthreadManager, >> >> >> RegistryShutdownHub shutdownHub, >> >> @Autobuild >> >> MultipartDecoderImpl multipartDecoder) >> { >> // This is proabably overkill since the FileCleaner should catch >> temporary files, but lets >> // be safe. >> perthreadManager.addThreadCleanupListener(multipartDecoder); >> >> if (needToAddShutdownListener.getAndSet(false)) >> { >> shutdownHub.addRegistryShutdownListener(new Runnable() >> { >> public void run() >> { >> FileCleaner.exitWhenFinished(); >> } >> }); >> } >> >> return multipartDecoder; >> } >> >> MultipartDecoder should be perthread but it isn't, if there is an upload >> exception every component event will throw that upload exception because >> service have not been recreated perthread. >> >> Everything start to work correctly when I change build method to not have >> the autobuild implementation. >> >> Denis >> >> >> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> > > > -- > Best regards, > > Igor Drobiazko > http://tapestry5.de --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
