Forum Discussion

Ilario72's avatar
Ilario72
Occasional Contributor
3 years ago
Solved

unable to send message to weblogic JMS

Hello,
I'm unable to send message to weblogic JMS server using ReadyAPI 3.10.0

following the instruction reported in
https://support.smartbear.com/readyapi/docs/testing/environments/jms.html

and in

https://support.smartbear.com/readyapi/docs/testing/jms/config.html

 

I created a jms server with all the properties, when I press the "test" button the response is "connection has been tested successfully",

then I inserted a step JMS request (SOAP) with the correct endpoint and inserted a text content for my message, but when I press "send" button receive the error:

 

"Invalid Hermes configuration. Make sure the 'Hermes Config' project property specifies the path to the hermes-config.xml file."

 

Note that the 'Hermes Config' project property is configured with the correct path: file:///C:/.hermes

 

Best regards

 

 

  • I finally solved it following this procedure that I want share to you:

    - insert in <readyapi>/bin/ext/ directory the jar files: weblogic.jar and wlthint3client.jar (get them from from your weblogic machine)
    - Start ReadyAPI
    - create new project, then new test suite and test case
    - add a new JMS Server with:
          - Initial Context Class: weblogic.jndi.WLInitialContextFactory
          - Provider URL: (insert your t3 address, e.g.: t3://twls01:7020 )
          - Connection Factory JMDI Name: insert the JNDI name of your connection factory (see your weblogic configuration)
          - User and Password of weblogic
          - additional JNDI: add java.naming.security.principal (with weblogic user value)
          - additional JNDI: add java.naming.security.credential (with weblogic password value)
    - once created press "test" button to check connection
    - import a new API definition using a wsdl (e.g.: http://www.dneonline.com/calculator.asmx?wsdl )
    - in the test case add new step: JMS Request
    - in the JMS Request popup select interface: SOAP
    - in the JMS Request popup select a operation interface (e.g.: CalculatorSoap->Add)
    - leave empty the options for the new request
    - in the question: Start Hermes for creating JMS objects? press NO
    - in the manual tab insert:
          - JMS Server (select the JMS created)
          - Send JNDI Destination: insert the JNDI name of the queue/topic (see your weblogic configuration)
    - in the step JMS Request insert your xml message and assertion: JMS Status


    As conclusion I believe that in this new version there are too many references to HermesJMS even if it is no longer used, this creates confusion to the user
    and in addition the online documentation is not exhaustive

2 Replies

  • Ilario72's avatar
    Ilario72
    Occasional Contributor

    I finally solved it following this procedure that I want share to you:

    - insert in <readyapi>/bin/ext/ directory the jar files: weblogic.jar and wlthint3client.jar (get them from from your weblogic machine)
    - Start ReadyAPI
    - create new project, then new test suite and test case
    - add a new JMS Server with:
          - Initial Context Class: weblogic.jndi.WLInitialContextFactory
          - Provider URL: (insert your t3 address, e.g.: t3://twls01:7020 )
          - Connection Factory JMDI Name: insert the JNDI name of your connection factory (see your weblogic configuration)
          - User and Password of weblogic
          - additional JNDI: add java.naming.security.principal (with weblogic user value)
          - additional JNDI: add java.naming.security.credential (with weblogic password value)
    - once created press "test" button to check connection
    - import a new API definition using a wsdl (e.g.: http://www.dneonline.com/calculator.asmx?wsdl )
    - in the test case add new step: JMS Request
    - in the JMS Request popup select interface: SOAP
    - in the JMS Request popup select a operation interface (e.g.: CalculatorSoap->Add)
    - leave empty the options for the new request
    - in the question: Start Hermes for creating JMS objects? press NO
    - in the manual tab insert:
          - JMS Server (select the JMS created)
          - Send JNDI Destination: insert the JNDI name of the queue/topic (see your weblogic configuration)
    - in the step JMS Request insert your xml message and assertion: JMS Status


    As conclusion I believe that in this new version there are too many references to HermesJMS even if it is no longer used, this creates confusion to the user
    and in addition the online documentation is not exhaustive

  • Ilario72's avatar
    Ilario72
    Occasional Contributor

    today I made a new attempt: I created a new project from scratch but the issue remains,

    in addition I noticed that when I press add JMS destination to my API there is an error:

     

    but the hermes-cofing.xml is present. This is the error log:

     

    Wed Sep 29 09:47:41 CEST 2021: ERROR: java.lang.NoClassDefFoundError: com/jidesoft/action/DefaultDockableBarDockableHolder
    java.lang.NoClassDefFoundError: com/jidesoft/action/DefaultDockableBarDockableHolder
    at hermes.browser.ProxyHermesUI.setConfig(ProxyHermesUI.java:85)
    at hermes.JAXBHermesLoader.load(JAXBHermesLoader.java:340)
    at hermes.HermesContext.load(HermesContext.java:57)
    at hermes.HermesInitialContextFactory.getInitialContext(HermesInitialContextFactory.java:94)
    at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730)
    at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
    at java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
    at java.naming/javax.naming.InitialContext.<init>(InitialContext.java:208)
    at com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils.getHermes(HermesUtils.java:129)
    at com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils.hermesContext(HermesUtils.java:109)
    at com.eviware.soapui.impl.wsdl.actions.iface.AddJMSEndpointAction.getHermesContext(AddJMSEndpointAction.java:171)
    at com.eviware.soapui.impl.wsdl.actions.iface.AddJMSEndpointAction.initValues(AddJMSEndpointAction.java:126)
    at com.eviware.soapui.impl.wsdl.actions.iface.AddJMSEndpointAction.perform(AddJMSEndpointAction.java:71)
    at com.eviware.soapui.impl.wsdl.actions.iface.AddJMSEndpointAction.perform(AddJMSEndpointAction.java:1)
    at com.eviware.soapui.support.action.swing.SwingActionDelegate.actionPerformed(SwingActionDelegate.java:195)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
    at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374)
    at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1022)
    at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1066)
    at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6617)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
    at java.desktop/java.awt.Component.processEvent(Component.java:6382)
    at java.desktop/java.awt.Container.processEvent(Container.java:2264)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4993)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2322)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4825)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4934)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4563)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4504)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2308)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4825)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)


    Is there anyone who has ever tried to send weblogic jms messages with ReadyAPI 3.10?

    Is it possible to have a valid procedure to do it?

    Thank you