Rajesh So wrote:
The Bean is idle for some time. It gets passivated and times out of passivation. The @PreDestroy is called.
As I know @PreDestroy is not called in this case. It is called, only if the bean is in activated (object) state. If it is in passivated state when timing out, the bean (passivated) will be destroyed without calling @PreDestroy method.