private void addStoreRememberTx(StoreAndRememberContext cxt, String storeVerifyTxUID) { for (String sopInstanceUID : cxt.getInstances()) { StoreAndRemember sr = new StoreAndRemember(); sr.setTransactionUID(cxt.getTransactionUID()); sr.setStoreVerifyTransactionUID(storeVerifyTxUID); sr.setStatus(StoreAndRememberStatus.PENDING); sr.setLocalAE(cxt.getLocalAE()); sr.setRemoteAE(cxt.getRemoteAE()); sr.setExternalDeviceName(cxt.getExternalDeviceName()); sr.setStoreVerifyProtocol(cxt.getStoreVerifyProtocol().toString()); sr.setRetriesLeft(cxt.getRetries()); sr.setDelay(cxt.getDelay()); sr.setSopInstanceUID(sopInstanceUID); sr.setInstanceStatus(StoreVerifyStatus.PENDING); em.persist(sr); } }
public void scheduleStoreAndRemember(StoreAndRememberContext ctx) { try { Connection conn = connFactory.createConnection(); try { Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(storeAndRememberQueue); ObjectMessage msg = session.createObjectMessage(ctx); long delay = ctx.getDelay(); if (delay > 0) { msg.setLongProperty("_HQ_SCHED_DELIVERY", System.currentTimeMillis() + delay); } producer.send(msg); } finally { conn.close(); } } catch (JMSException e) { throw new RuntimeException("Error while scheduling archiving JMS message", e); } }