我确保自己理解为什么我们使用JNDI来获取我们想要在我们的应用程序中使用的对象并知道它的强大功能。但我的问题是,例如Tomcat或Jboss如何实现此功能?
如果给我一个机会,我会使用socket实现如下:
Client side:
Socket socket = new Socket("localhost",10000);
//get a Person Object
socket.write("JNDI/Person")
Server side :
ServerSocket socketServer = new ServerSocket("localhost", 10000);
string str= socket.read();
if(str.equals("JNDI/Person")){
//ok I return back you a Person object.
socketServer.write(new Person());
}
我上面草拟的方法是否正确,任何人都可以告诉我Tomcat是如何做的 / Jboss或其他容器都是JNDI实现的。提前谢谢。
答案 0 :(得分:1)
我不能告诉你它在JBoss或Tomcat中是如何工作的,但它很容易实现。遵循简单的逻辑,使用 ConcurrentHashMap 来存储对象。对任何对象的访问时间大约为O(1),非常适合查找。哈希表可以实现为静态类字段,以便正在运行的应用程序的任何部分都可以访问。
从这里开始:
http://docs.oracle.com/javase/7/docs/api/javax/naming/package-summary.html
" Context是查找,绑定,解除绑定和重命名对象以及创建和销毁子上下文的核心接口。"实际上,它提供了HashMaps的所有基本操作。其他一切只是一个扩展。
作为奖励,它只需要1个LOC而不是注释行。