Entity EJBs, @Service & Thread
galo.navarro Sep 8, 2006 12:05 PMHi, I'm trying to get a service running on my JBoss server that would awake every now and then, get a list of entity beans and throw a message to a JMS queue for each of those items, and sleep for a while.
If I strip the bit loading Entity beans off, everything works, I send a test message to the queue, etc.
But if I do the same loading the beans, I get the exception below. I guess I'm doing something wrong but cannot figure out what.
17:02:32,650 ERROR [STDERR] Exception in thread "Thread-16" 17:02:32,650 ERROR [STDERR] java.lang.NullPointerException 17:02:32,650 ERROR [STDERR] at org.jboss.ejb3.entity.ManagedEntityManagerFactory.getNonTxEntityManager(ManagedEntityManagerFactory.java:58) 17:02:32,650 ERROR [STDERR] at org.jboss.ejb3.entity.ManagedEntityManagerFactory.getTransactionScopedEntityManager(ManagedEntityManagerFactory.java:163) 17:02:32,650 ERROR [STDERR] at org.jboss.ejb3.entity.TransactionScopedEntityManager.createNamedQuery(TransactionScopedEntityManager.java:132) 17:02:32,650 ERROR [STDERR] at tal.noc.beans.NOCManagerService.loadNOCs(NOCManagerService.java:79) 17:02:32,650 ERROR [STDERR] at tal.noc.beans.NOCManagerService.run(NOCManagerService.java:86) 17:02:32,650 ERROR [STDERR] at java.lang.Thread.run(Unknown Source)
This is my service:
@Service(objectName="jboss:custom=NOCManagerService") public class NOCManagerService implements Runnable, NOCManagementService { .... public void run() { this.running=true; while(this.running) { System.out.println("Awaken"); Iterator nocs=this.loadNOCs().iterator(); while(nocs.hasNext()) { NOC noc = (NOC)nocs.next(); try { MessageSender ms=new MessageSender(); ms.sendMessage("NOC: " + noc.toString(), "queue/msgQueue"); } catch (Exception e) { e.printStackTrace(System.out); } } try { MessageSender ms=new MessageSender(); ms.sendMessage("NOC", "queue/msgQueue"); } catch (Exception e) { e.printStackTrace(System.out); } try { synchronized (this) { wait(60*1000); } } catch (Exception e) { e.printStackTrace(System.out); } } }
The service implements the following interface, just in case it makes any difference
@Management public interface NOCManagementService {
Thanks a lot.