wso2 / product-micro-integrator

The cloud-native configuration driven runtime that helps developers implement composite microservices.
https://wso2.com/integration/
Apache License 2.0
204 stars 221 forks source link

[Bug]: Server not compatible with ActiveMQ versions higher than 5.8.0 #3386

Open ShammiL opened 4 months ago

ShammiL commented 4 months ago

Description

According to documentation on connecting to ActiveMQ, there is a set of jars that needs to be copied to the lib directory of the MI server. But the jars,

are not available in ActiveMQ version 6.1.2.

Trying to start the server without the above jars would cause the below error.

FATAL {CoreServerInitializer} - WSO2 Carbon initialization Failed java.lang.NoClassDefFoundError: jakarta/jms/Queue

copying the above jars manually to the lib directory didn't resolve this issue either.

Steps to Reproduce

No response

Affected Version(s)

No response

OS, DB, other environment details and versions

No response

Related issue(s) (optional)

No response

Suggested label(s) (optional)

No response

Suggested assignee(s) (optional)

No response

ShammiL commented 4 months ago

Using the exact jars given in the documentation(copied from ActiveMQ 5.8.0 libs) worked for ActiveMQ versions both 5.8.0 and 6.1.2. The MI server will start running but with the following error:

ERROR {JMSConnectionFactoryManager} - Error setting up connection factory : default org.apache.axis2.transport.jms.AxisJMSException: Cannot acquire JNDI context, JMS Connection factory : QueueConnectionFactory or default destination : null for JMS CF : default using : {java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory, java.naming.provider.url=tcp://localhost:61616, transport.jms.ConnectionFactoryType=queue, transport.jms.CacheLevel=producer, transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory}

Trying to publish a message as instructed in the "protocol switching" sample integration in Integration Studio would also cause the above error together with the errors below:

ERROR {JMSMessageSender} - Error while creating message sender java.lang.NullPointerException: Cannot invoke "org.apache.axis2.transport.jms.JMSConnectionFactory.getCacheLevel()" because "jmsConnectionFactory" is null

ERROR {Axis2Sender} - {api:StudentRegistrationAPI} Unexpected error during sending message out. Cannot invoke "org.apache.axis2.transport.jms.JMSConnectionFactory.clearCache(javax.jms.Connection)" because "this.jmsConnectionFactory" is null java.lang.NullPointerException: Cannot invoke "org.apache.axis2.transport.jms.JMSConnectionFactory.clearCache(javax.jms.Connection)" because "this.jmsConnectionFactory" is null

Although the request is successfully sent and the published message can be viewed from the ActiveMQ web console.

ljuillerat commented 1 month ago

Same behaviour here, even by adding missing jakarta library, the ended to a ClassCastException. We use ActiveMQ 5.18.x without any issue but that would be needed to know exactly if MI 4.X is compatible with ActiveMQ 6.X.