Forum Discussion

NA28's avatar
NA28
New Member
3 months ago

Connect ready API with JMS

Hi, I want to know if I can connect my JMS tool box with ready API ?

Queue manager for my JMS tool box is Apache ActiveMQ Aretmis 

I looked through the installation guide on the website but the jar file that is required ( Active MQ)  is not available in JMS tool box configuration folder. 

 

 

3 Replies

  • To connect ReadyAPI directly to your broker (Artemis) you do need to give ReadyAPI the Artemis client JARs and configure a JMS Request (JNDI or direct).

    What to do (Artemis)

    1. Put the Artemis client libs where ReadyAPI can load them.

       Manual: drop the Artemis client JARs into `<ReadyAPI>/bin/ext`, then restart ReadyAPI. (This is the simplest.)

       > Use Artemis client jars, not “ActiveMQ Classic” 5.x. Artemis’ JMS classes and JNDI factory are different. 

       Version note: ReadyAPI 3.61+ switched from `javax.jms` to `jakarta.jms`. Match your Artemis client to that namespace:

    • ReadyAPI ≤ 3.60 → use javax.jms Artemis client
    • ReadyAPI ≥ 3.61 → use jakarta.jms Artemis client
           If you mix these, you’ll get `ClassNotFoundException`/`NoSuchMethodError` at runtime.
      https://support.smartbear.com/readyapi/docs/en/test-apis-with-readyapi/jms-support.html

    2. Configure the JMS Request in ReadyAPI. You can do either:

       A) JNDI style (typical)

         connectionFactory.ConnectionFactory=tcp://broker-host:61616
         queue.MY.QUEUE=MY.QUEUE
         topic.MY.TOPIC=MY.TOPIC

         Then choose `ConnectionFactory` and `MY.QUEUE` in the step. (Names are your bindings.) 

       B) Direct (no JNDI)
       ReadyAPI can connect straight to the provider if the client classes are present; use the “manual configuration” path and select Artemis’ connection factory (e.g., `org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory`) and set the broker URL.

    3. Restart ReadyAPI so it picks up the libs, then create a JMS Request test step and send.

    Common pitfalls we see

    • Wrong client family: Using ActiveMQ 5.x (`org.apache.activemq.ActiveMQConnectionFactory`) for Artemis. Won’t work—use Artemis libs.
    • Namespace mismatch: ReadyAPI 3.61+ expects jakarta.jms; older Artemis (javax) jars won’t load. And vice versa on ≤3.60. 
    • HermesJMS confusion: Hermes was removed years ago; use ReadyAPI’s built-in JMS or the connector plugin—don’t try to wire Hermes/JMSToolBox into ReadyAPI.

    TL;DR mapping for your case (Artemis)

    • Ignore JMSToolBox’s folder. Copy the Artemis client jars into `<ReadyAPI>/bin/ext`
    •  In the JMS Request, set Initial Context Factory to `org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory`, Provider URL to `tcp://…:61616`, and bind your queues via JNDI entries (or go direct with the Artemis connection factory).
    • Make sure your Artemis client matches ReadyAPI’s javax/jakarta JMS version. 

    Let me know how it goes!

    [1]: https://support.smartbear.com/readyapi/docs/en/test-apis-with-readyapi/jms-support/jms-manual-configuration.html "JMS Manual Configuration | ReadyAPI Documentation"
    [2]: https://readyapi.sb-docs.com/en/test-apis-with-readyapi/jms-support/creating-the-connector-plugin "Creating the Connector Plugin | ReadyAPI Documentation"
    [3]: https://activemq.apache.org/components/artemis/documentation/ "ActiveMQ Artemis Documentation"
    [4]: https://support.smartbear.com/readyapi/docs/en/test-apis-with-readyapi/jms-support.html "JMS Support | ReadyAPI Documentation"
    [5]: https://access.redhat.com/documentation/en-us/red_hat_amq_core_protocol_jms/7.11/html/using_amq_core_protocol_jms/configuration "Chapter 4. Configuration Red Hat AMQ Core Protocol JMS 7.11 | Red Hat ..."
    [6]: https://activemq.apache.org/components/artemis/documentation/1.0.0/using-jms.html "Using JMS | ActiveMQ Artemis Documentation"
    [7]: https://community.smartbear.com/discussions/readyapi-questions/readyapi-3-4-2-says-no-longer-support-hermes-jms-how-do-i-provide-endpoint-for-t/254543 "READYAPI 3.4.2 says no longer support hermes jms ... - SmartBear Community"

     

  • To connect ReadyAPI directly to your broker (Artemis) you do need to give ReadyAPI the Artemis client JARs and configure a JMS Request (JNDI or direct).
     
    What to do (Artemis)
     
    1. Put the Artemis client libs where ReadyAPI can load them.
       Two supported ways:
     
       * Manual: drop the Artemis client JARs into `<ReadyAPI>/bin/ext`, then restart ReadyAPI. (This is the simplest.)
     
       > Use Artemis client jars, not “ActiveMQ Classic” 5.x. Artemis’ JMS classes and JNDI factory are different. 
     
       Version note: ReadyAPI 3.61+ switched from `javax.jms` to `jakarta.jms`. Match your Artemis client to that namespace:
     
       * ReadyAPI ≤ 3.60 → use javax.jms Artemis client
       * ReadyAPI ≥ 3.61 → use jakarta.jms Artemis client
         If you mix these, you’ll get `ClassNotFoundException`/`NoSuchMethodError` at runtime.
    https://support.smartbear.com/readyapi/docs/en/test-apis-with-readyapi/jms-support.html
     
    2. Configure the JMS Request in ReadyAPI. You can do either:
     
       A) JNDI style (typical)
     
       * Initial Context Factory:
         `org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory` 
    https://docs.redhat.com/en/documentation/red_hat_amq_core_protocol_jms/7.11/html/using_amq_core_protocol_jms/configuration
       * Provider URL: your broker URL, e.g. `tcp://broker-host:61616`
       * JNDI entries (example):
     
         connectionFactory.ConnectionFactory=tcp://broker-host:61616
         queue.MY.QUEUE=MY.QUEUE
         topic.MY.TOPIC=MY.TOPIC
     
         Then choose `ConnectionFactory` and `MY.QUEUE` in the step. (Names are your bindings.) 
     
       B) Direct (no JNDI)
       ReadyAPI can connect straight to the provider if the client classes are present; use the “manual configuration” path and select Artemis’ connection factory (e.g., `org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory`) and set the broker URL.
     
    3. Restart ReadyAPI so it picks up the libs, then create a JMS Request test step and send.
     
    Common pitfalls we see
     
    * Wrong client family: Using ActiveMQ 5.x (`org.apache.activemq.ActiveMQConnectionFactory`) for Artemis. Won’t work—use Artemis libs. 
    * Namespace mismatch: ReadyAPI 3.61+ expects jakarta.jms; older Artemis (javax) jars won’t load. And vice versa on ≤3.60. 
    * HermesJMS confusion: Hermes was removed years ago; use ReadyAPI’s built-in JMS or the connector plugin—don’t try to wire Hermes/JMSToolBox into ReadyAPI.
     
    TL;DR mapping for your case (Artemis)
     
    * Ignore JMSToolBox’s folder. Copy the Artemis client jars into `<ReadyAPI>/bin/ext`
    * In the JMS Request, set Initial Context Factory to `org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory`, Provider URL to `tcp://…:61616`, and bind your queues via JNDI entries (or go direct with the Artemis connection factory). 
    * Make sure your Artemis client matches ReadyAPI’s javax/jakarta JMS version.
     
    Let me know how it goes!
     
    [1]: https://support.smartbear.com/readyapi/docs/en/test-apis-with-readyapi/jms-support/jms-manual-configuration.html "JMS Manual Configuration | ReadyAPI Documentation"
    [2]: https://readyapi.sb-docs.com/en/test-apis-with-readyapi/jms-support/creating-the-connector-plugin "Creating the Connector Plugin | ReadyAPI Documentation"
    [3]: https://activemq.apache.org/components/artemis/documentation/ "ActiveMQ Artemis Documentation"
    [4]: https://support.smartbear.com/readyapi/docs/en/test-apis-with-readyapi/jms-support.html "JMS Support | ReadyAPI Documentation"
    [5]: https://access.redhat.com/documentation/en-us/red_hat_amq_core_protocol_jms/7.11/html/using_amq_core_protocol_jms/configuration "Chapter 4. Configuration Red Hat AMQ Core Protocol JMS 7.11 | Red Hat ..."
    [6]: https://activemq.apache.org/components/artemis/documentation/1.0.0/using-jms.html "Using JMS | ActiveMQ Artemis Documentation"
    [7]: https://community.smartbear.com/discussions/readyapi-questions/readyapi-3-4-2-says-no-longer-support-hermes-jms-how-do-i-provide-endpoint-for-t/254543 "READYAPI 3.4.2 says no longer support hermes jms ... - SmartBear Community"

     

  • To connect ReadyAPI directly to your broker (Artemis) you do need to give ReadyAPI the Artemis client JARs and configure a JMS Request (JNDI or direct).
     
    The documentation below...
     
    What to do (Artemis)
     
    1. Put the Artemis client libs where ReadyAPI can load them.
       Two supported ways:
     
       * Manual: drop the Artemis client JARs into `<ReadyAPI>/bin/ext`, then restart ReadyAPI. (This is the simplest.)
     
       > Use **Artemis** client jars, not “ActiveMQ Classic” 5.x. Artemis’ JMS classes and JNDI factory are different. 
     
       Version note: ReadyAPI 3.61+ switched from `javax.jms` to `jakarta.jms`. Match your Artemis client to that namespace:
     
       * ReadyAPI ≤ 3.60 -> use javax.jms Artemis client
       * ReadyAPI ≥ **3.61 -> use jakarta.jms Artemis client
         If you mix these, you’ll get `ClassNotFoundException`/`NoSuchMethodError` at runtime.
     
    2. Configure the JMS Request in ReadyAPI. You can do either:
     
       A) JNDI style (typical)
     
       * Initial Context Factory:
         `org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory` 
       * Provider URL: your broker URL, e.g. `tcp://broker-host:61616`
       * JNDI entries (example):
     
         connectionFactory.ConnectionFactory=tcp://broker-host:61616
         queue.MY.QUEUE=MY.QUEUE
         topic.MY.TOPIC=MY.TOPIC
     
         Then choose `ConnectionFactory` and `MY.QUEUE` in the step. (Names are your bindings.) 
     
       B) Direct (no JNDI)
       ReadyAPI can connect straight to the provider if the client classes are present; use the “manual configuration” path and select Artemis’ connection factory (e.g., `org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory`) and set the broker URL.
     
    3. Restart ReadyAPI so it picks up the libs, then create a JMS Request test step and send.
     
    Common pitfalls we see
     
    Wrong client family: Using ActiveMQ 5.x (`org.apache.activemq.ActiveMQConnectionFactory`) for Artemis. You must use Artemis libs. 
    * Namespace mismatch: ReadyAPI 3.61+ expects jakarta.jms; older Artemis (javax) jars won’t load. And vice versa on ≤3.60. 
    * HermesJMS confusion: Hermes was removed years ago; use ReadyAPI’s built-in JMS or the connector plugin—don’t try to wire Hermes/JMSToolBox into ReadyAPI.
     
    TL;DR mapping for your case (Artemis)
     
    * Ignore JMSToolBox’s folder. Copy the Artemis client jars into `<ReadyAPI>/bin/ext`
    * In the JMS Request, set Initial Context Factory to `org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory`, Provider URL to `tcp://…:61616`, and bind your queues via JNDI entries (or go direct with the Artemis connection factory). 
    * Make sure your Artemis client matches ReadyAPI’s javax/jakarta JMS version.
     
    Let me know how it goes!
     
    [7]: READYAPI 3.4.2 says no longer support hermes jms. how do i provide endpoint for the soap request ste | SmartBear Community "READYAPI 3.4.2 says no longer support hermes jms ... - SmartBear Community"