Hi,
I'm using CXF 3.4.0 in a Spring 5.2 application with an ActiveMQ middle ware.
On application shutdown I see 2 warnings. Looking at the
PollingMessageListenerContainer code I noticed that when the consumer/session
is closed (and thus a null message is returned from consumer.receive) the next
step (session.getTransacted) fails and produces the result below.
Why is the session.getTransacted not within the message != null branch?
Regards
Bjorn
org.apache.cxf.transport.jms.util.PollingMessageListenerContainer$Poller:line
80-92;
>> NOTE: the running boolean is not sync'ed nor volatile yet used by multiple
>> threads!
while (running) {
Message message = consumer.receive(1000);
try {
if (message != null) {
listenerHandler.onMessage(message);
}
>> should the next test not be within the if branch above and so fix the
>> shutdown warnings? When a consumer is closed it returns a null message. Also
>> when a receive timeout occurs (message also null) these is no reason to
>> commit.
if (session.getTransacted()) { << this
fails when consumer/session is closed on ActiveMQ
session.commit();
}
} catch (Throwable e) {
LOG.log(Level.WARNING, "Exception while
processing jms message in cxf. Rolling back", e);
safeRollBack(session);
}
}
[2020-01-14 11:21:19,962 WARN ] [myTaskExecutor -2]
[PollingMessageListenerContainer$Poller:90]
[org.apache.cxf.transport.jms.util.PollingMessageListenerContainer] Exception
while processing jms message in cxf. Rolling back
javax.jms.IllegalStateException: The Session is closed
at
org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:771)
at
org.apache.activemq.ActiveMQSession.getTransacted(ActiveMQSession.java:540)
at
org.apache.cxf.transport.jms.util.PollingMessageListenerContainer$Poller.run(PollingMessageListenerContainer.java:86)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
[2020-01-14 11:21:19,963 WARN ] [myTaskExecutor-2]
[PollingMessageListenerContainer$Poller:111]
[org.apache.cxf.transport.jms.util.PollingMessageListenerContainer] Rollback of
Local transaction failed
javax.jms.IllegalStateException: The Session is closed
at
org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:771)
at
org.apache.activemq.ActiveMQSession.getTransacted(ActiveMQSession.java:540)
at
org.apache.cxf.transport.jms.util.PollingMessageListenerContainer$Poller.safeRollBack(PollingMessageListenerContainer.java:107)
at
org.apache.cxf.transport.jms.util.PollingMessageListenerContainer$Poller.run(PollingMessageListenerContainer.java:91)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
De informatie in dit e-mailbericht is vertrouwelijk en uitsluitend bestemd voor
de
geadresseerde. Wanneer u dit bericht per abuis ontvangt, verzoeken wij u
contact op te
nemen met de afzender per kerende e-mail. Verder verzoeken wij u in dat geval
dit
e-mailbericht te vernietigen en de inhoud ervan aan niemand openbaar te maken.
Wij aanvaarden geen aansprakelijkheid voor onjuiste, onvolledige dan wel
ontijdige
overbrenging van de inhoud van een verzonden e-mailbericht, noch voor daarbij
overgebrachte virussen.
APG Groep N.V. is gevestigd te Heerlen en is ingeschreven in het
handelsregister van de Kamer van Koophandel Limburg onder nummer 14099617
The information contained in this e-mail is confidential and may be privileged.
It may be read, copied and used only by the intended recipient.
If you have received it in error, please contact the sender immediately by
return e-mail; please delete in this case the e-mail and do not disclose its
contents to any person. We don't accept liability for any errors, omissions,
delays of receipt or viruses in the contents of this message which arise as a
result of e-mail transmission.
APG Groep N.V. is registered in the trade register of the Chamber
of Commerce Limburg, The Netherlands, registration number: 14099617