Event Listener problem(it stopped working)

Hi everybody,

For months, we have problem with our CMS Listener (It stopped working after a while, sometimes after minutes or sometimes after days).
I mean, our eventHandler method does not fire by CMS.
Do you have any idea why it is not working appropriately?
In the following code, you will see our implementation for event handler:

  @Subscribe
    public void handleEvent(HippoWorkflowEvent event) {
        startingTimestamp = System.currentTimeMillis();
        try {
            synchronized (listenerLock) {
                if (event.success()) {
                    HippoRepository repository = HippoRepositoryFactory.getHippoRepository("vm://");
                    activeSession = repository.login("event-listener", "!Listen@2ME.!".toCharArray());
                    if (EDIT_INTERACTION.equals(event.interaction())) {
                        if (!StringUtils.equals(event.user(), "system")) {
                            LockProcessing lockProcessing = new LockProcessing(activeSession, event);
                            lockProcessing.doOnEditEvent();
                        }
                    } else if (DONE_INTERACTION.equals(event.interaction())) {
                        //We limit running this code only to normal users area
                        if (!StringUtils.equals(event.user(), "system")) {
                            LockProcessing lockProcessing = new LockProcessing(activeSession, event);
                            lockProcessing.doOnDoneEvent();
                            //-----
                            ContentLinkProcessing contentLinkProcessing = new ContentLinkProcessing(activeSession, event);
                            contentLinkProcessing.setContentUrls();
                        }
                    } else if (PUBLICATION_INTERACTION.equals(event.interaction())) {
                        //Added to have ContentUrl after importing process!!!
                        if (StringUtils.equals(event.user(), "system")) {
                            ContentLinkProcessing contentLinkProcessing = new ContentLinkProcessing(activeSession, event);
                            contentLinkProcessing.setContentUrls();
                        }
//                        EnrichmentProcessing enrichmentProcessing = new EnrichmentProcessing(activeSession, event);
//                        enrichmentProcessing.doOnPublishEvent();
                    }
                    activeSession.logout();
                }
            }
        } catch (Exception ex) {
            LOGGER.error("Exception on 'handleEvent' in 'ListenerDispatcher'.", ex);
        }
    }//--M