Hi Jens; Sanjiva Weerawarana wrote:
>Hi Jens, > > > >>While Tony reported this today for services only (AXIS2-633) it seems Axis2 >>does not have full lifecycle support. >> >>Since I was trying to come up with a fix for Axis2-595 I was looking for >>something within Axis2 codebase which would help to do some cleanup during >>shutdown. It turned out that the Axis2 deployment engine is not exposed for >>clean shutdown and Handler#cleanup()/ TransportSender#cleanUp(MessageContext >>msgContext) is never called. >> >> > >Handler.cleanup() was never implemented and I thought it was removed! If >not it should be .. we have an on-going discussion around some cleanup >activity like that (look for a thread originated by Bill Nagy) but we >agreed to do that post 1.0. > >TransportSender.cleanup() (Please refactor to cleanup instead of >cleanUp) should indeed be called. > > > >>Before spending too many cycles in refactoring could someone from the axis2 >>team comment on the current plans for full lifecycle support, especially >>shutdown which can be called externally. >> >>Specifically I would like to >>- Shutdown the deployment engine and with it the scheduler, >> >> > >+1. > > > >>- Ensure to call all cleanup() methods, >> >> > >We should be calling service.destroy(ServiceContext) and >TransportSender.cleanup. (The latter should prolly take as an argument >the config context?) > > > >>- Release all Classloader references during shutdown, >> >> > >+1 > > > >>- Remove the ShutdownHook from JMSSender and move it to a global >>ShutdownHook which is used for standalone axis2 mode only (the sender should >>deregister from JMS within cleanup() ). >> >> > >+1. > >I'd wait for Deepal to comment though- he's the one who did the cleanup >stuff IIRC so I could be out of sync a bit ... > >In any case service.destroy(ServiceContext) should get called for sure; >so maybe you can start there! > > This method will be called when the session get expired , but I just found a bug in the code that when you deploy a service in application scope then its destroy method is not calling. I fixed that , if some one called ListernManer.stop() at that point destroy method of all the available serviceCotetxt will be called. I modified AxisServelet as well. >Thanks, > >Sanjiva. > > > > > -- Thanks, Deepal ................................................................ ~Future is Open~
