Hi,

I just started playing around with Qpid and I've been trying to see if Qpid is compatible with Sun's suite of sample JMS code (without any modification to the Sun's sample code). But it appears that the binding class name for the QueueConnectionFactory are ending up in the wrong java.util.Map inside org.apache.qpid.jndi.ReadOnlyContext.

Instead of ending up in the Map called "bindings", it is ending up in the Map called "environment" and therefore does not resolve into an instantiated object when ReadOnlyContext.lookup() is called.

I'll be more than happy to provide a patch. But I'm new to JNDI/JMS and so I want to make sure this isn't a configuration error on my part.

Here's my setup:

- I'm trying to use JNDI via a file system configuration instead of with a directory server.

So I created a "jndi.properties" file that looks like this:

  $ cat jndi.properties
java.naming.factory.initial = org.apache.qpid.jndi.PropertiesFileInitialContextFactory java.naming.provider.url = /home/georget/mqtest/qpid-jclient/ samples/qpid.bindings

Now, I realize that java.naming.provider.url is supposed to be a URL, but when I used "file:///" syntax, the file failed to load. It actually loads this way!

Anyway, I next created the "qpid.bindings" file as follows:

  $ cat qpid.bindings
  QueueConnectionFactory=org.apache.qpid.client.AMQConnectionFactory
  ...

Anyway, the qpid.bindings file gets read with no problems via the getInitialContext() method in org.apache.qpid.jndi.PropertiesFileInitialContextFactory.

One things that looks suspicious in PropertiesFileInitialContextFactory.java is this code snippet:

protected ReadOnlyContext createContext(Map data, Hashtable environment)
   {
       return new ReadOnlyContext(environment, data);
   }

Why are environment and data getting swapped?

Any thoughts? Does this look like a bug(s)? Or am I misconfiguring things? Should I be using Sun's InitialContext factory instead (com.sun.jndi.fscontext.RefFSContextFactory)?

Thanks in advance!

Cheers,

George

Reply via email to