EJB design: Advice on Messaging using IBM MQ Series and EJB

  1. Can anyone please advise on the recommended design approach to a messaging interface between two corporate systems.

    System A is hosted on a Solaris E10000 with an Oracle RDBMS.

    System B is hosted on VMS and uses IBM MQ Series as its preferred point to point messaging service.

    I am looking at implementing a solution on System A which would be EJB based, possibly use JMS to connect to MQ Series. Users would be provided with a servlet front end to monitor the status of queues and stop/start queues. There is no requirement to connect outside of firewall.

    Is this a feasible approach using J2EE, EJB technology and if so how would it all fit together?
  2. "System B is hosted on VMS and uses IBM MQ Series as its preferred point to point messaging service."

    Does system B use the MQ Series JMS product?

  3. Since you can't manage queues directly using the JMS API, you would need to use the Java API instead anyway.

    It's probably easier to configure your systems without JMS, as well, since JMS takes more configuration to connect to a remote machine (it expects the MQ Queue Manager to be local by default), and since you need to set up all the queues in JNDI before you can access them in JMS with MQ.

  4. "It's probably easier to configure your systems without JMS"

    Without knowing a helluva lot about MQ Series, I would concurr completely with this judgement. I've faced a similar question in a Tibco environment and the question comes down to whether to use vanilla Tibco RV or AERV or to do a conversion adapter between JMS and native Tibco wireformat.

    I'm certain that I'll be asked to integrate an existing JMS-based system into a Tibco-based system one day, but that day hasn't come yet. Until it does there is no reason to incurr the extra overhead of a conversion adapter.
  5. Thanks for the reply, System B does not use JMS.
  6. One thing to remember if you're communicating between 'native' MQSeries and MQSeries under JMS is that JMS add headers to the message if you configure your queue to be a JMS destination. You can configure the JMS queue ( using the MQSeries JMS admin tool) to be to an MQSeries receiver, in which case the header is not inserted.

    Alternatively you can get dirty and strip the header out of the JMS message when it hits your MQSeries receiver - theres a field in the MQSeries message that tells you how long the header is.

    I think this is all in the MQSeries/JMS documentation on the IBM site.