Hi folks, i desperately need som guidance as to how to get my ActiveMQ
upgrade to work with Tomcat and Spring5.
(If Slack is better, happy to get an invitation!)



---BACKGROUND
Been running 3 webapps with an in-memory activeMQ broker for intra-app
communication for 10+ years.
I have had the activemq-all jar in tomcat's /lib, because i wanted to
reduce the overall classloader memory footprint. All other jars such as
Spring has been in the respective war/lib directories.

This has been Spring 4.3 and ActiveMQ 5.14. I have defined the broker
through Spring to that the first webapp deployed starts the broker
Running on Tomcat 9


This setup has worked fine for me.


— UPGRADE PROBLEM
I am looking to update to Spring 5 the easiest way I can, changing as
little as possible, keeping config the same. Optimally i stay on 5.14 for
now, but i can upgrade to 5.18 if i have to.

What i'm getting is something that seems to be a clash with the jms1.1 /
2.0 support? From what i've read 5.18 comes with 2.0 support but i tried to
use 5.18.4 and i get the same.

Eerror message:
 Unsatisfied dependency expressed through constructor parameter 0: Could
not convert argument value of type
[org.apache.activemq.spring.ActiveMQConnectionFactory] to required type
[javax.jms.ConnectionFactory]: Failed to convert value of type
'org.apache.activemq.spring.ActiveMQConnectionFactory' to required type
'javax.jms.ConnectionFactory'; nested exception is
java.lang.IllegalStateException: Cannot convert value of type
'org.apache.activemq.spring.ActiveMQConnectionFactory' to required type
'javax.jms.ConnectionFactory': no matching editors or conversion strategy
found

I have tried doing maven dependencies and building, rather than using the
“activemq-all”, and that does seem to work. But this would mean that every
class would be loaded into memory three times, and I’d like to avoid that
if at all possible.


**If someone could help me getting my Spring 5 running with Tomcat(9) I'd
be most grateful.



— SETUP

Java 11
Spring 5.3.33
ActiveMQ 5.14 (or 5.18.4, tried everything)

I have the javax.jms-api 2.0.1 on the classpath because Spring 5 requires
it.
I have tried both having and not having jms1.1 on the classpath, no
difference.

Spring messaging setup:
<amq:connectionFactory id="refConnectionFactory" brokerURL="vm://myBroker"
clientID="webapp"/>
<bean id="connectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory">
    <constructor-arg ref="refConnectionFactory"/>
    <property name="sessionCacheSize" value="4"/>
</bean>

<!-- JmsTemplate Definition -->
<bean id="jmsTemplate" class="com.mypackage.MyTemplate">
    <constructor-arg ref="connectionFactory"/>
</bean>

Reply via email to