我正在尝试在JNDI中放置一个对象,因此只有一个程序应该能够将它放在JNDI中。有没有可以在J2EE环境中使用的全局锁。 RMI可以用于此目的吗?请提供任何参考链接。提前谢谢。
另外, NameAlreadyBoundexception 是什么?我试图将它用作同步的方法,即只有一个程序将它放在JNDI中,如果其他尝试绑定应该得到该异常。 但是,当我测试多重绑定时,我没有得到Exception.And第二个绑定完成。查找给第二个对象绑定。这是我的代码:
public class TestJNDI {
private static String JNDI_NAME = "java:comp/env/test/something";
public static void main(String[] args) throws NamingException {
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
env.put(Context.PROVIDER_URL,"t3://127.0.0.1:7001");
Context ctx = new InitialContext(env);
System.out.println("Initial Context created");
String obj1 = "obj1";
String obj2 = "obj2";
try{
ctx.bind(JNDI_NAME, obj1);
System.out.println("Bind Sucess");
}catch(NameAlreadyBoundException ne ){
// already bound
System.out.println("Name already bound");
}
ctx.close();
Context ctx2 = new InitialContext(env);
try{
// Second binding to the same name not giving the Exception??
ctx2.bind(JNDI_NAME, obj2);
System.out.println("Re Bind Sucess");
}catch(NameAlreadyBoundException ne ){
// already bound
System.out.println("Name already bound");
}
String lookedUp = (String) ctx2.lookup(JNDI_NAME);
System.out.println("LookedUp Object"+lookedUp);
ctx2.close();
}
}