X
  • January 2, 2008

Hermes JMS - Open Source JMS Console

Guest Author

This was originally posted on my dev2dev blog January 2nd, 2008.

The WebLogic Server Administration Console provides the ability to monitor and view JMS messages from 9.x onwards.  However it is a web-based tool that is optimized for configuration, not monitoring and development testing.  Looking at the contents of multiple messages requires multiple screen refreshes and it can not do some advanced JMS activities like copy messages from one queue to another very easily.  Hermes JMS is a handy open source project hosted by Sourceforge and built by Colin Crist that can be used to monitor, inspect, and interact with JMS Queues, Topics, and Messages.  Here's how Colin describes it on the website:

HermesJMS is an extensible console that helps you interact with JMS providers making it easy to browse or search queues and topics, copy messages around and delete them. It fully integrates with JNDI letting you discover administered objects stored, create JMS sessions from the connection factories and use any destinations found. Many providers include a plugin that uses the native API to do non-JMS things like getting queue depths (and other statistics) or finding queue and topic names.

It works with many of the popular JMS providers such as Active MQ, Arjuna MQ, Tibco EMS, Fiorano MQ, JBoss MQ, JORAM, OpenJMS, Oracle, Pramati, SAP, SeeBeyond ICAN, SeeBeyond JCAPS, Sonic MQ, WebLogic JMS, WebMethods, and WebSphere MQ. This post will explain how to get Hermes installed and configured for use with WebLogic JMS.  If you would like to see the setup with WebLogic as a web recording, go here, otherwise read on for the step-by-step. 

If you work in the financial vertical, Hermes also has some capabilities with FIX messages that are worth checking out.

Quick setup

To install, get the installer from sourceforge and run “java –jar hermes-installer-1.12.jar” in the directory where you have placed the installer jar.

  1. Open the <HERMES_HOME>/bin/hermes.bat or hermes.sh in your favorite editor. Add the path to your WLS JVM at the beginning of the file right after the REM comments.  Note: When I tested with the WLS 10.3 Tech Preview, I had to use the Java 6 JVM that shipped with the tech preview, so if you run into issues in the "discovery" phase, be sure to use the same JVM with Hermes as the WLS JVM you want to connect to.

set PATH=D:\bea922\jdk150_10\jre\bin
set JAVA_HOME=D:\bea922\jdk150_10\jre

  1. Launch Hermes by calling the hermes.bat
  2. Right click on “sessions” and select “new -> New session…”.
  3. On the resulting prompt, go to the “providers” tab at the bottom and add a “group” called “weblogic92” and a “library” specifying your path to weblogic.jar. Select “Don’t Scan” when prompted.

clip_image002

  1. No go back to the “Sessions” tab. Enter a name for the session, in this case “examplesQCF”. In the “Connection Factory” section, select “weblogic92” for the loader (you may have to save and then edit the session to see the provider you just configured in the drop down for loader). Then select “BEA WebLogic” for the “Plug In” dropdown. Then add the properties as in the image below select “OK”.

clip_image004

  1. Right click on the newly created “examplesQCF” session and select Discover. It should find all of the available destinations and list them under the examplesQCF session.

clip_image006

  1. If you right click on the exampleQueue node under the session and select “Browse”, you should be able to see the contents of the queue. I have populated my exampleQueue with 3 messages. The first of which has a message payload of “Test Message”. Notice the headers are also displayed.

clip_image008

Hermes can monitor multiple queues at once, auto-refresh, use selectors, delete messages, etc. Check out the user guide at http://www.hermesjms.com for more information and tutorials.

Comments from dev2dev entry:

  • Hi, I downloaded this utility to try to analize FIX log. It looks very nice and powerful, but I didn't find how I may sort all messages by time. Now I can see all incoming messages first and all outgoing messages after this. It's very uncomfortable to analize log file by this way. Is it possible to see all messages sorted by time, so it will be possible to see server's answer to each request. Please advice. Regards

    Posted by: ekhaskel on February 9, 2008 at 3:05 PM

  • Hi James, I've updated the WLS page with a link to here. The other way to do this - one that may also seem more familiar to many - is to create a context, browse it and then select the connection factory to use as the basis for a session. This JBoss tutorial shows you what I mean. Regards, Colin.

    Posted by: colincrist on January 10, 2008 at 5:20 AM

Join the discussion

Comments ( 8 )
  • Alex Tuesday, May 26, 2009
    I am getting following exception trying to use "Discover". Any pointers?
    java.lang.NoClassDefFoundError: weblogic/management/WebLogicObjectName

    at hermes.ext.weblogic.WebLogicJMSAdminFactory.createSession(WebLogicJMSAdminFactory.java:63)

    at hermes.impl.HermesAdminAdapter.getAdmin(HermesAdminAdapter.java:64)

    at hermes.impl.HermesAdminAdapter.discoverDestinationConfigs(HermesAdminAdapter.java:84)

    at hermes.impl.DefaultHermesImpl.discoverDestinationConfigs(DefaultHermesImpl.java:1357)

    at hermes.browser.tasks.DiscoverDestinationsTask.invoke(DiscoverDestinationsTask.java:76)

    at hermes.browser.tasks.TaskSupport.run(TaskSupport.java:175)

    at hermes.browser.tasks.ThreadPool.run(ThreadPool.java:170)

    at java.lang.Thread.run(Thread.java:595
  • Kris Tuesday, July 7, 2009
    Hi James,
    I tried integrating Hermes with WLS 10gR3 and not until I did this step it discovered the Queues
    http://hermesjms.org/forum/viewtopic.php?t=441
    After I built the wlfullclient.jar from the instructions above, I placed it in $HERMES-INSTALL-DIR/lib and restarted Hermes and worked fine.
    - Kris
  • itforumz Friday, September 11, 2009
    Thank You for the great post
    This works on linux as well?
  • james.bayer Friday, September 11, 2009
    It should. Hermes uses Java UI standards, probably Swing or similar, so I expect it to work fine.
  • Arun Rajendran Tuesday, February 9, 2010
    Is it possible to find source information( mainly IP address) from where the message are coming to the topic?
  • james.bayer Tuesday, February 9, 2010
    Arun, I'm not sure - I especially doubt this information is available in Hermes, but I would not be too surprised if there were some way to identify all the clients of a WLS JMS topic. I encourage you to ask this in the OTN WLS JMS forum in a more generic way:
    http://forums.oracle.com/forums/forum.jspa?forumID=831
  • Evgeniy Monday, March 8, 2010
    Screenshots are too low quality
  • james.bayer Monday, March 8, 2010
    Thanks for the note - that was a mistake on my part with the blog publishing tool I use - Windows Live Writer. If you look at the more recent version of a similar post on Hermes, it has high-res images when you click on them in the blog.
    http://blogs.oracle.com/jamesbayer/2009/02/hermes_jms_revisited_for_weblo.html
    James
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.