Fan Li,

you can explicitly set the local ConnectionFactory on the JmsTopicConnector/JmsQueueConnector - and use the JndiTemplate for initializing the foreign JMS provider. The JmsMessageConvertor doc is misleading in it's description - for inbound messages it will expect foreign JMS -> ActiveMQ and outbound ActiveMQ -> JMS. The JMS specification states that a JMS message provider should be able to convert a foreign JMS Message if one is used - so this interface is only there if special marshaling is required.

cheers,

Rob


On 1 Feb 2006, at 12:55, Rob Davies wrote:

Hi Fan Li,

it's great to get some feedback on this!
I'm sure we can fix your issues pretty quickly. Would you mind raising a jira issue on this ? That way I won't forget about

cheers,

Rob

First of all, my apologies for spamming your e-mail account, but I am looking for help from any ActiveMQ developer who can help me answer a couple of questions.

I am currently working on a Project that would help our company to switch our existing messaging applications to used ActiveMQ instead of our own messaging system that is based on Rendezvous. My project has to do with creating a bridge that enables the communication of applications written using our messaging system to those applications written using ActiveMQ. After looking at ActiveMQ source code, I discovered a package, org.activemq.network.jms in the activemq-core/src/main/java directory, and it seems to provide the bridge functionalities I am looking for. However, when I was trying to test out the code in this package I run into a problem.

The init() method in JmsTopicConnector class calls the methods initializeForeignTopicConnection() and initializeLocalTopicConnection() to set the appropriate ConnectionFactory and Connection by look them up from the JndiTemplate object of the class. The JndiTemplate object does object lookup using a Context object that is created by the implementation of InitialContextFactroy associated with " java.naming.factory.initial". This is a problem because different JMS implementations have different InitialContextFactory classes, therefore it is not possible for one implementation of InitialContextFactory to create Context object that is capable of looking up objects implemented by two different JMS providers. Unless the association between " java.naming.factory.initial" and the InitialContextFactory can be changed between the invocation of initializeForeignTopicConnection() and initializeLocalTopicConnection(), which would require code change in the JmsTopicConnector class. Does anyone know a way to work around this problem?

Also, I need a bit of clarification on the description for the JmsMesageConvertor interface. The Java doc for the convert method of this interface says that the method is used to "Convert a foreign JMS Message to a native ActiveMQ Message", but should it also be used to perform the reverse conversion, which is to convert from a native ActiveMQ Message to a foreign JMS Message or is there a different interface that takes care of it?

Thank you

Fan Li

Reply via email to