diff --git a/hsarback/src/main/java/de/hsadmin/servlets/QueueStatusReceiverServlet.java b/hsarback/src/main/java/de/hsadmin/servlets/QueueStatusReceiverServlet.java
index 91395f1..9cd33bb 100644
--- a/hsarback/src/main/java/de/hsadmin/servlets/QueueStatusReceiverServlet.java
+++ b/hsarback/src/main/java/de/hsadmin/servlets/QueueStatusReceiverServlet.java
@@ -112,6 +112,7 @@ public class QueueStatusReceiverServlet extends HttpServlet
@Override
public void onMessage(Message jmsMessage) {
+ assert jmsMessage != null;
Transaction transaction = null;
messageCount++;
try {
@@ -123,7 +124,13 @@ public class QueueStatusReceiverServlet extends HttpServlet
transaction.beginTransaction();
EntityManager em = transaction.getEntityManager();
em.clear();
- QueueTask persistentQT = em.find(QueueTask.class, detachedQT.getId());
+ final long queueTaskId = detachedQT.getId();
+ QueueTask persistentQT = em.find(QueueTask.class, queueTaskId);
+ if (persistentQT == null) {
+ jmsMessage.acknowledge();
+ errorCount++;
+ throw new TechnicalException("QueueTask not found, id: " + queueTaskId);
+ }
persistentQT.assign(detachedQT);
Processor processor = persistentQT.getProcessor();
if (processor != null) {
@@ -133,6 +140,7 @@ public class QueueStatusReceiverServlet extends HttpServlet
em.flush();
transaction.commitTransaction();
} else {
+ errorCount++;
final String err = "Deserialization failed " + new Date();
System.out.println(err);
throw new TechnicalException(err);
diff --git a/qserv-test/.classpath b/qserv-test/.classpath
new file mode 100644
index 0000000..4559ca0
--- /dev/null
+++ b/qserv-test/.classpath
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/qserv-test/.gitignore b/qserv-test/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/qserv-test/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/qserv-test/.project b/qserv-test/.project
new file mode 100644
index 0000000..d1d24d6
--- /dev/null
+++ b/qserv-test/.project
@@ -0,0 +1,23 @@
+
+
+ hsadmin-qserv-test
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+
+
diff --git a/qserv-test/.settings/org.eclipse.core.resources.prefs b/qserv-test/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..e9441bb
--- /dev/null
+++ b/qserv-test/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding/=UTF-8
diff --git a/qserv-test/.settings/org.eclipse.jdt.core.prefs b/qserv-test/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2af1e7b
--- /dev/null
+++ b/qserv-test/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/qserv-test/.settings/org.eclipse.m2e.core.prefs b/qserv-test/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/qserv-test/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/qserv-test/pom.xml b/qserv-test/pom.xml
new file mode 100644
index 0000000..cd1c9d3
--- /dev/null
+++ b/qserv-test/pom.xml
@@ -0,0 +1,68 @@
+
+ 4.0.0
+ de.hsadmin.core
+ hsadmin-qserv-test
+ 4.0.16
+
+ UTF-8
+ 11
+
+
+
+ de.hsadmin.core
+ hsadmin-util
+ 4.0.16
+
+
+ de.hsadmin.core
+ hsadmin-qserv
+ 4.0.16
+
+
+ commons-lang
+ commons-lang
+ 2.6
+
+
+ commons-net
+ commons-net
+ 3.9.0
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.3
+
+
+ org.apache.openjpa
+ openjpa
+ 3.2.2
+
+
+ org.apache.activemq
+ activemq-client
+ 5.17.5
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.11.0
+
+
+ 11
+
+
+
+
+
diff --git a/qserv-test/src/main/java/de/hsadmin/qserv/test/Pull.java b/qserv-test/src/main/java/de/hsadmin/qserv/test/Pull.java
new file mode 100644
index 0000000..7dbd06f
--- /dev/null
+++ b/qserv-test/src/main/java/de/hsadmin/qserv/test/Pull.java
@@ -0,0 +1,71 @@
+package de.hsadmin.qserv.test;
+
+import java.io.Serializable;
+
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.ObjectMessage;
+import javax.jms.Queue;
+import javax.jms.QueueConnection;
+import javax.jms.QueueReceiver;
+import javax.jms.QueueSession;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+
+import de.hsadmin.core.qserv.ProcessorException;
+import de.hsadmin.core.qserv.TaskTransfer;
+
+public class Pull implements MessageListener {
+
+ public static void main(String[] args) {
+ ActiveMQConnectionFactory cxFact = new ActiveMQConnectionFactory("ssl://hsh02.hostsharing.net:61619");
+ try {
+// QueueConnection qCx = cxFact.createQueueConnection("hsar", "");
+ QueueConnection queueConnect = cxFact.createQueueConnection("user-h98", "");
+ QueueSession session = queueConnect.createQueueSession(false, QueueSession.CLIENT_ACKNOWLEDGE);
+ Queue queue = session.createQueue("queue.hsadminSystem-h98");
+ QueueReceiver receiver = session.createReceiver(queue);
+ receiver.setMessageListener(new Pull());
+ queueConnect.start();
+ boolean doContinue = true;
+ while (doContinue) {
+ try {
+ Thread.sleep(2000L);
+ } catch (InterruptedException e) {
+ doContinue = false;
+ }
+ }
+ queueConnect.stop();
+ session.close();
+ queueConnect.close();
+ } catch (JMSException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onMessage(Message message) {
+ if (message instanceof ObjectMessage) {
+ try {
+ ObjectMessage objMesg = (ObjectMessage) message;
+ Serializable serializable = objMesg.getObject();
+ if (serializable instanceof TaskTransfer) {
+ TaskTransfer task = (TaskTransfer) serializable;
+ task.getProcessor().process();
+ }
+ } catch (ProcessorException | JMSException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ try {
+ message.acknowledge();
+ } catch (JMSException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/qserv-test/src/main/java/de/hsadmin/qserv/test/Push.java b/qserv-test/src/main/java/de/hsadmin/qserv/test/Push.java
new file mode 100644
index 0000000..6e07e71
--- /dev/null
+++ b/qserv-test/src/main/java/de/hsadmin/qserv/test/Push.java
@@ -0,0 +1,37 @@
+package de.hsadmin.qserv.test;
+
+import java.util.Date;
+
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.QueueConnection;
+import javax.jms.QueueSession;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+
+import de.hsadmin.core.qserv.NullProcessor;
+import de.hsadmin.core.qserv.TaskTransfer;
+
+public class Push {
+
+ public static void main(String[] args) {
+ ActiveMQConnectionFactory cxFact = new ActiveMQConnectionFactory("ssl://hsh02.hostsharing.net:61619");
+ try {
+// QueueConnection qCx = cxFact.createQueueConnection("user-h98", "");
+ QueueConnection qCx = cxFact.createQueueConnection("hsar", "Eix4Baijee2ae1aighetaik8");
+ QueueSession session = qCx.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
+ Queue queue = session.createQueue("queue.hsadminSystem-h98");
+ MessageProducer producer = session.createProducer(queue);
+ Message message = session.createObjectMessage(new TaskTransfer(1L, "anonymous", new Date(), null, "hello world", "hello world detail", new NullProcessor(), null));
+ producer.send(queue, message);
+ session.close();
+ qCx.close();
+ } catch (JMSException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/qserv/src/main/java/de/hsadmin/core/model/Transaction.java b/qserv/src/main/java/de/hsadmin/core/model/Transaction.java
index 9930ac9..4685a49 100644
--- a/qserv/src/main/java/de/hsadmin/core/model/Transaction.java
+++ b/qserv/src/main/java/de/hsadmin/core/model/Transaction.java
@@ -145,7 +145,9 @@ public class Transaction {
if (transactionActive) {
rollbackTransaction();
}
- entityManager.close();
+ if (entityManager != null) {
+ entityManager.close();
+ }
}
/**