activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From boekhold <boekh...@gmx.com>
Subject ActiveMQ 5.10 client in Tomcat 7 with InitialDirContext
Date Mon, 20 Apr 2015 05:47:34 GMT
Hi all,

I'm working with an existing web application (running in Tomcat 7.0.26) that
normally communicates with external systems over IBM WebsphereMQ, via the
JMS API. The code looks similar to:

    Hashtable<String, String> env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, initialContextFactory);
    env.put(Context.PROVIDER_URL, providerURL);

    // Note that this is instantiating an InitialDirContext,
    // NOT an InitialContext!!!
    Context context = new InitialDirContext(environment);

    qcf = (QueueConnectionFactory)context.lookup(qcfName);
    requestQueue = (Queue)context.lookup(requestQueueName);
    responseQueue = (Queue)context.lookup(responseQueueName);

//... etc, usual type of JMS code

I'm now trying to make this work with ActiveMQ 5.10 client libraries. A
restriction on my end is that I cannot modify the source code. The only
thing I have to play with are the variables as shown in the above code:

- initialContextFactory is in the current case always set
  to com.sun.jndi.fscontext.RefFSContextFactory
- providerURL is currently set to a file://C:/directory URL,
  pointing to a .bindings file as generated by "Managed JMS Objects"
  from WebsphereMQ Explore
- requestQueueName & responseQueueName

I'm now changing initialContextFactory to
org.apache.activemq.jndi.ActiveMQInitialContextFactory, and providerURL to
tcp://localhost:61616. Although I'm not getting any errors from the code, it
doesn't work. I cannot see any connection in the ActiveMQ Web Admin console.
Unfortunately I also cannot run this in a debugger to see what's going on :(

Researching on the web, I see that normally ActiveMQ JNDI with Tomcat is set
up differently:

- Resource entries in context.xml
- Create the InitialContext as new InitialContext();
- get a 'sub context' as envContext = (Context)
initCtx.lookup("java:comp/env");
- Get the JMS objects from this sub context (using a "jms/" prefix)

But as I wrote before, this is not an option for me: although I have access
to the code, I cannot modify it.

Does anybody know a way around this? How can I get ActiveMQ
QueueConnectionFactory/Queue objects from an instance of InitialDirContext,
initialized only with INITIAL_CONTEXT_FACTORY and PROVIDER_URL, and
presumably without any additional configuration on the Tomcat side (although
if necessary I do have the option of changing the tomcat config as well).

Maarten




--
View this message in context: http://activemq.2283324.n4.nabble.com/ActiveMQ-5-10-client-in-Tomcat-7-with-InitialDirContext-tp4695248.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Mime
View raw message