JMS Connection Fails After JMS servers Change behind JNDI.
- Define and enable JNDI Controller Service
- Create a flow with ConsumeJMS or PublishJMS processors with controller service defined in #1.
- Consume and publish at least one message to ensure the connectivity can be established.
- Change JNDI configuration for the same connection factory to point to new JMS servers.
- Stop JMS service on previous servers
- Observe failure in ConsumeJMS/PublishJMS (Caused by: javax.jms.JMSException: Failed to connect to any server at: tcp://jms_server1:12345)
- Disable JNDI Controller Service
- Enable JNDI Controller Service and dependent processors.
- AbstractJMSProcessor has a method "buildTargetResource", in which connection factory is instantiated and then cached in workerPool in onTrigger .
- Issue: Once cached, it will be reused forever.
- Fix: on connectivity failure there should be an attempt to rebuild the worker.