wso2 / micro-integrator

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

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

Open ShammiL opened 2 days ago

ShammiL commented 2 days 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 2 days 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.