views:

14

answers:

2

I am using the com.sun.jndi.fscontext.RefFSContextFactory file based JNDI context factory. It seems to take the drive of the where the java application is started in.

Hashtable properties = new Hashtable(2);
properties.put(Context.PROVIDER_URL,"file:///tmp/jms/mycontext");
properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
InitialContext ctx = new InitialContext(properties);

How can I specify the drive letter such as d:/tmp/jms/mycontext ? Using file://d:/tmp/jms/mycontext seems to still go to the c drive on my system

A: 

Like so:

"file:D:\\tmp\\jms\\mycontext"

There are some examples in a tutorial at developerWorks that may be useful:
IBM WebSphere Developer Technical Journal: Running a standalone Java application on WebSphere MQ V6.0

T.Rob
actually that does not work as file://d:/tmp/jms/mycontext or file:D:\\tmp\\jms\\mycontext still goes to the drive that is used to start java and if java is started from C: it looks for c:/tmp/jms/context
mrjohn
Sorry to hear that. It works perfectly for me. I'm using IBM's Java 6.0 implementation though.
T.Rob
You could be right it depends on the java implementation. Didn't work for me with java 5 and eclipse as my development environment
mrjohn
A: 

After some troubleshooting and debugging myself I figured it out. Using an extra \ before the drive letter solves it

properties.put(Context.PROVIDER_URL,"file://\\d:\\tmp\\mycontext");
mrjohn