smarter way of stopping things

This commit is contained in:
Athou
2013-04-16 09:29:33 +02:00
parent 2fbd7c3837
commit b6d8072090
3 changed files with 22 additions and 12 deletions

View File

@@ -4,11 +4,13 @@ import java.util.Calendar;
import java.util.List;
import java.util.Queue;
import javax.annotation.PreDestroy;
import javax.ejb.Lock;
import javax.ejb.LockType;
import javax.ejb.Singleton;
import javax.inject.Inject;
import com.commafeed.backend.StartupBean;
import com.commafeed.backend.dao.FeedDAO;
import com.commafeed.backend.model.Feed;
import com.commafeed.backend.services.ApplicationSettingsService;
@@ -23,6 +25,9 @@ public class FeedRefreshTaskGiver {
@Inject
ApplicationSettingsService applicationSettingsService;
@Inject
StartupBean startupBean;
private Queue<Feed> queue = Lists.newLinkedList();
@Lock(LockType.WRITE)
@@ -39,4 +44,9 @@ public class FeedRefreshTaskGiver {
}
return queue.poll();
}
@PreDestroy
public void shutdown() {
startupBean.shutdown();
}
}

View File

@@ -18,6 +18,7 @@ import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
import org.apache.commons.lang.mutable.MutableBoolean;
import org.apache.commons.lang.time.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,12 +49,10 @@ public class FeedRefreshWorker {
@Resource
private UserTransaction transaction;
private boolean running = true;
@Asynchronous
public Future<Void> start(String threadName) {
public Future<Void> start(MutableBoolean running, String threadName) {
log.info("{} starting", threadName);
while (running) {
while (running.isTrue()) {
try {
Feed feed = getNextFeed();
if (feed != null) {
@@ -69,16 +68,16 @@ public class FeedRefreshWorker {
}
return new AsyncResult<Void>(null);
}
@Asynchronous
public void updateAsync(Feed feed){
public void updateAsync(Feed feed) {
try {
update(feed);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
private void update(Feed feed) throws NotSupportedException,
SystemException, SecurityException, IllegalStateException,
RollbackException, HeuristicMixedException,