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