Discussions

News: Hermes: Open source JMS Queue/Topic Browser/Monitor 1.5

  1. In my day job I deal with many different messaging providers and wanted a tool to browse and get/put messages onto topics and queues. Nothing was out there to do what I wanted so I created Hermes and released it as open source.

    Hermes has been tested with IBM WebSphere MQ 5.X, Weblogic 6.X, JBossMQ 4.X, WebMethods Enterprise 6.X and ActiveMQ.

    View the home page of Hermes JMS

    Threaded Messages (28)

  2. Great, this is just what I've been looking for, and came close to writing myself. I'll test it out on Weblogic 8.1 and see if it works there. Thanks
  3. Instructions[ Go to top ]

    Are there any detailed instructions for integrating with JBoss - I am finding the docs downloaded a bit wanting in this area - although the tool itself looks very nice?
    Thanks-
  4. Instructions[ Go to top ]

    Muito,

    I've tested with JBoss 4.0.0DR2 and it works fine, take a look at the RELEASE.NOTES in the bin directory.

    In summary you need to specify the JNDIQueue/TopicConnectionFactory and the properties that you would have supplied to the InitialContextFactory set on that JMS factory (via the Options->Preferences->Sessions dialog). The Destinations you configure are the names of the bindings in JNDI.

    I've not tested with JBoss 3.X but it should be fine, feel free to drop me a line (rather than pollute this thread) if you've got other issues.

    Cheers,

    Colin.
  5. Instructions[ Go to top ]

    To confirm: I tested with JBoss 3.2.1. Works great.
    It's a nice tool. Thanks
    -- Paul
  6. About OpenJMS[ Go to top ]

    Did someone get it work with OpenJMS?
  7. About OpenJMS[ Go to top ]

    Not as far as I know, give it a pop and let me know!

    Cheers,

    Colin.
  8. About OpenJMS[ Go to top ]

    Colin, is it possible to see byte message as a text? I'm getting messages from MQ wrapped into RFH, MQ JMS client can open them without any problem, but the type is byte.
  9. About OpenJMS[ Go to top ]

    Hi,

    How are you encoding the text in the BytesMessage? Bytes are opaque and Hermes does not try to interpret them. Why not send the message as a proper TextMessage if really is text?

    However Hermes is extensible in how it renders messages, you can write your own that implements hermes.browser.MessageRenderer, you can then add your renderer to via Options->Properties->Renderers - right click and add your renderer class, ensuring its in the CLASSPATH.

    The default one is here, the key method to worry about is:

    public javax.swing.JComponent render(final javax.jms.Message m)

    If you cannot render the message then you must return null in order to let the default renderer run.

    Colin.
  10. About OpenJMS[ Go to top ]

    Hi,How are you encoding the text in the BytesMessage? Bytes are opaque and Hermes does not try to interpret them. Why not send the message as a proper TextMessage if really is text?
    I'm not sending these messages. That is a legacy application which seems have bug in JMS/MQ bindings, which never going to be fixed, so I have to deal with that.
    However Hermes is extensible in how it renders messages, you can write your own that implements hermes.browser.MessageRenderer, you can then add your renderer to via Options->Properties->Renderers - right click and add your renderer class, ensuring its in the CLASSPATH.The default one is here, the key method to worry about is:public javax.swing.JComponent render(final javax.jms.Message m)If you cannot render the message then you must return null in order to let the default renderer run.Colin.
    I was thinking about that, but it will be better to ave such functionality right in the Hermes. In my case it just using encoding from the message to convert bytes to string (no base64 or any other encoding). I can probably add a custom renderer, but it seems make sence to assign it only to particular queues (I know that Hermes does not provide such functionality).
  11. About OpenJMS[ Go to top ]

    See what you mean and you're correct that you cannot configure specific renderers on a queue/topic basis, the same chain of command is used for all. It would be very easy to add this in and I'll put it on the feature list for the future - the only time consuming bit is the configuration dialogs. In the meantine I figure out something simple for the next release that will help.

    When you say "encoding from the message to convert bytes to string" can u post me the exact java code you use to go from a BytesMessage to a String so I know what you're doing.

    Colin.
  12. UI[ Go to top ]

    See what you mean and you're correct that you cannot configure specific renderers on a queue/topic basis, the same chain of command is used for all. It would be very easy to add this in and I'll put it on the feature list for the future - the only time consuming bit is the configuration dialogs.
    By the way, speaking of the UI, it will be more intuitive to be able to add a new session and queues right from the session tree as well as jumping into their properties. Present properties dialog is unfortunately far away from being intuitive. It took me some time to configure my MQ and WLS 7 queues. Probably I can help you with that if you like.
    In the meantine I figure out something simple for the next release that will help.When you say "encoding from the message to convert bytes to string" can u post me the exact java code you use to go from a BytesMessage to a String so I know what you're doing.Colin.
    I've emailed you some code.
  13. MessageRenderers[ Go to top ]

    Peter Schmidt noticted that there is a problem in 1.5 with user defined renderers being ignored, if you're trying this (and Peter your email bounced) then here is a patched hermes.jar:

    http://hermesjms.sourceforge.net/patch/hermes-1.5.1/hermes.jar

    Colin.
  14. Tibco JMS supported?[ Go to top ]

    Is Tibco supported? After adding the appropiate jars no provider shows up in the preferences tab.
  15. Tibco JMS supported?[ Go to top ]

    I've not tested with Tibco JMS. Check to make sure connection factory classes are actually in the JAR files you add.

    It may also be the case that you can only access the administered objects via JNDI, in which case follow the instructions as per JBoss.

    Colin.
  16. Hi!

    Is JOnAS 3.3.x supported? I am downloading it and will try. But if you have any specific comments (its not supported/its supported but needs something else etc) please let me know.

    Thanx in advance.
  17. Hi,

    No I've not tested with JOnAS 3.3.x, let me know how you get on!

    Colin.
  18. Hermes: With JOnAS[ Go to top ]

    Hi,

    I downloaded the software and the UI is nice!

    I am trying to setup JOnAS but I am finding hard to understand the steps involved.

    What I did is:
    1. Added ow_jonas.jar
    2. After starting hermes, I didn't find sessions like the snap-shot on your site shows (JBoss, MQSeries etc). I could see only 'Files'.
    3. I tried preferences, and added ow_jonas.jar in providers.
    4. I could see connect factory in Sessions now, but still not in 'jms' treeview.
    5. I gave relavent properties like (initialContextFactory etc)
    6. Destination as 'jms/UserQueue' (I have it deployed on JOnAS)
    7. I could see the destination under 'Session\Files'

    When I double-click on jms/UserQueue, it was giving error dialog with message 'cf'... didn't understand what it means. After restarting it said 'No Connection Factory has created...'.

    Am I going on a completely wrong track? Can you help me please?

    Thanx for your help in advance.
  19. Hermes: With JOnAS[ Go to top ]

    Manish,

    You must set the "binding" property on JNDIQueue/Topic/ConnectionFactory to reference the Queue/TopicConnectionFactory you have bound in JNDI (cf is the default in Hermes). Check out hermes.log for the exception trace it may help if you're setting this property already - send me the log (and hermes-config.xml) if this is still an issue.

    The screens on the web site are from my test environment, only the quasi JMS files provider is distributed with Hermes.

    The next release of Hermes (1.6, soonish!) includes http://activemq.codehaus.org as the demonstration provider which is fully functional and kinda cool.

    Colin.
  20. I have used Hermes with TIBCO JMS[ Go to top ]

    Just use this in your hermes-config.xml: (and make sure you add tibjms.jar to your Hermes CLASSPATH)

    <factory>
      <provider className="hermes.JNDIQueueConnectionFactory">
        <properties>
          <property name="initialContextFactory" value="com.tibco.tibjms.naming.TibjmsInitialContextFactory"/>
          <property name="providerURL" value="tibjmsnaming://localhost:7222"/>
          <property name="binding" value="QueueConnectionFactory"/>
        </properties>
      </provider>
      <connection>
        <session transacted="true" reconnects="0" audit="false" id="TIBCO_EMS"/>
      </connection>
      <destination name="queueA" domain="1"/>
    </factory>
  21. How about JORAM?[ Go to top ]

    If anyone tries it with JORAM (JOnAS), I'd be interested to have the results.

    Cheers,
    Luc
  22. Weblogic 8.1[ Go to top ]

    Hi,
    I like the idea of the tool very much and I think it can be very useful.
    I tried to run it on weblogic 8.1 and I got 100% cpu busy forever. Any ideas?
  23. Weblogic 8.1[ Go to top ]

    Get the hermes.log and some stack traces of the running process and I'll take a look.
  24. Weblogic 8.1[ Go to top ]

    Working fine on WLS 7 for me. Have you check how many messages do you have?
  25. Weblogic 8.1[ Go to top ]

    Hi,I like the idea of the tool very much and I think it can be very useful.I tried to run it on weblogic 8.1 and I got 100% cpu busy forever. Any ideas?
    I am also having problems with weblogic 8.1, I have the weblogic.jar in the classpath, and wljmsclient.jar in the providers. I don't get the option to add a JNDI entry in the destinations box. When I try just use the JNDI name and try browse I get a reference helper not set error. I am using the weblogic.jms.client.JMSConnectionFactory. If anyone has got this to work with 8.1 I'd love to hear from you.
  26. Weblogic 8.1[ Go to top ]

    The "reference helper not set" is not from Hermes - can u get me the hermes.log and hermes-config.xml and I'll take a look.

    I suspect you are misssing a parameter on the JNDiQueue/TopicConnectionFactory. Do u have some regular java code with JNDI properties set that works and are you using the same config?

    Cheers,

    Colin.
  27. Better go to the sourcefore forums for the project, I am liable to miss things here.

    http://sourceforge.net/forum/?group_id=61713

    Thanks for all the feedback from TSS.

    Colin.
  28. Hi Ben,

    I added the tibco parameters in hermes_config.xml still I am not able to access the queues/topic.I am getting the user name/password error.

    thanks
    Sri
  29. Invalid username/password error[ Go to top ]

    Hi Ben,
    I tried to use the same data but does not work, if the server name is not localhost.

    I modifed by adding tibco factories and got through the error, but whenever i try to browse , it says "No messages to read" though my queue has lot of messages.

    Would be helpful if anybody facing similar problem and had success.

        <factory>
            <provider className="com.tibco.tibjms.TibjmsTopicConnectionFactory">
                <properties>
                    <property name="currentUrl" value="tcp://abc.com:7222"/>
                </properties>
            </provider>
            <connection username="abc" password="cba">
                <session transacted="true" reconnects="0" audit="false" id="tibjmstopics"/>
            </connection>
            <destination name="A.B" className="com.tibco.tibjms.TibjmsTopic" domain="2"/>
        </factory>
        <factory>
            <provider className="com.tibco.tibjms.TibjmsQueueConnectionFactory">
                <properties>
                    <property name="url" value="tcp://abc.com:7222"/>
                </properties>
            </provider>
            <connection/>
        </factory>

    thanks in advance.