Rishi
Rishi

Reputation: 220

Alternative for EJB timer for weblogic over a cluster

Recently I have come across a requirement where in I have to provide a custom jar to applications and this jar would contain threads that would query a database periodically and fetch messages(records) for that particular application which use them. So for example of app A uses this jar, then the threads in the jar would fetch all messages only for app A. The database is a shared db between apps.

This works fine for standalone apps but for apps deployed over a cluster in an enterprise application server (weblogic in my case), this fails since all nodes on the cluster run in their own JVM and each one spawns a listener thread for the same app. So there can be conditions where in two threads run at the same time and fetch same records and there would be double processing. Cannot use synchronization since that will lead to performance bottle necks.

I cant use singleton timer EJBS. Have heard about the workmanager but not sufficient examples over the net. I am using the spring core framework.

If any of you could give any suggestions, it would be great.

Thanks.

Upvotes: 0

Views: 614

Answers (1)

Oleg Mikheev
Oleg Mikheev

Reputation: 17444

First of all please stop thinking threads if you're dealing with JavaEE, it's supposed to provide higher level of abstraction for higher level of mindsets.

  1. JavaEE 7 provides ManagedScheduledExecutorService
  2. Quartz works great in that scenario - only one node in your JavaEE cluster is going to execute the job

Upvotes: 1

Related Questions