利用
JNDI
定位资源
JNDI
提供了一套标准的接口来定位资源
(
用户、网络、机器、对象和服务等
)
,比如可以利用
JNDI
在局域网上定位一台打印机,也可以用
JNDI
来定位数据库服务或一个远程
Java
对象。
JNDI
在
Java EE
中使用十分广泛;包括
EJB
、
RMI-IIOP
、
JDBC
和
JMS
等。这些技术都需要命名和目录服务的支持。
命名和给人取名字道理是一样的,名字是一个指向实际客体的引用,名字方便了我们指称物体,比如给一个打印机取名为“
PrinterA
”,就不需要描述它为“五楼转角右边数过来的第二个打印机”。给一个资源命名的过程叫做名字的绑定。命名绑定之后,一系列的资源就有一系列的名字,名字属于命名空间,比如所有的本市的电话号码都在号码薄上,我们就可以在这个空间里寻找所要的资源。
给所有的资源命名之后,我们可以想象成所有人的电话号码都输入了号码薄,接下来利用这个号码薄就可以查找具体某人的联系方式。通过号码薄查找的服务就是目录服务。所以,总体来说,
JNDI
提供了以下两种功能:
将名字绑定到资源上。
通过名字查找资源。
JDNI
由两部分组成:客户端
API
和服务提供接口
SPI(Service Provider Interface).
客户端
API
为开发者提供了操作命名和目录服务的统一接口,程序员可以利用这些
API
,在各种服务协议之上,对资源进行命名,或在目录中查找资源等。客户端
API
是与服务的协议无关的,而这个协议的具体实现由
SPI
组成。
JDNI SPI
是
JNDI
的实现框架,对各个命名和目录服务协议进行支持。各个目录协议可以通过
SPI
将其插入到
JDNI
中。
JNDI
给一个字资源命名,并通过这个名字查找资源,那么资源的命名有什么规则呢?
JNDI
中的名字可以分成两种:原子名和组合名。组合名是由原子名组成的,比如在
A
下的打印机
Printer1
就被表示成了“
A\Printer
1
”
,其中“
A\Printer
1
”
是组合名,它是由“
A
”和“
Printer
1
”
这两个原子名组成的。通过组合名就可以找到经过绑定之后的资源。
命名服务提供了一种为对象命名的机制,这样就可以无需知道对象位置的情况下获取和使用对象。只要给对象在命名服务器上注册过,且命名服务器的地址和该对象在命名服务器上注册的
JNDI
名已知。就可以找到该对象,获得其引用,从而运用它提供的服务。
利用
JNDI
可以寻找命名服务器上注册过的所有对象。
JNDI
架构提供了一个标准的、与命名系统无关的
API
,这个
API
构建在特定于命名系统的驱动程序之上。这一层帮助把应用程序和实际的数据源隔离开来,因此无论应用程序是访问任何目录服务,这都没有关系。换句话说,
JNDI
与任何特定的目录服务实现无关,可以使用任何目录,只要拥有相应的服务提供程序接口。
JNDI
可以运用在很多
JAVA
EE技术上,比如在
JDBC
、
EJB
。
下面一节讲述了一个分布式的
HelloWorld
的例子
分享到:
相关推荐
在提供的压缩包文件中,"三种方式(原始方式_spring_jndi)实现java远程调用(rmi)"包含了相关的示例代码,帮助开发者理解并实践这三种RMI实现方法。在MyEclipse或其他Java开发环境中导入这些代码,可以进行调试和...
3. **RMI Registry**:RMI注册表是一个服务,用于存储远程对象的引用,它使用JNDI(Java Naming and Directory Interface)服务提供命名和目录功能。客户端通过注册表查找并获取远程对象的引用。 4. ** stubs 和 ...
### Java RMI 用于远程调用 进行分布式开发 #### 概述 Java RMI(Remote Method Invocation)是Java平台提供的一种实现分布式计算的技术,它允许开发者在不同JVM间进行方法调用,如同调用本地对象一样简单。通过...
在Java RMI中,一个JVM作为服务器,暴露远程接口,而其他JVM作为客户端,通过这些接口进行远程调用。 标题中的“rmi 远程调用 实现客户端之间会话”指的是利用RMI技术让多个客户端与同一服务端建立会话,进行交互。...
在实际应用中,RMI可以与其他Java技术如EJB、JMS(Java消息服务)和JNDI(Java命名和目录接口)结合使用,以构建复杂的分布式系统。然而,需要注意的是,虽然RMI提供了面向对象的远程调用,但它本身并不处理并发控制...
Java 分布式处理技术 RMI,JNDI Java 分布式处理技术是指在 Java 平台上实现分布式...RMI 和 JNDI 是 Java 分布式处理技术的核心组件,RMI 实现了对象之间的交互,而 JNDI 提供了一个统一的接口来访问不同的目录服务。
在"基于RMI的Java远程调用.pdf"文件中,可能会详细解释这些步骤,并提供示例代码来帮助读者理解和实践RMI技术。它可能会涵盖常见问题,如处理异常、优化性能、使用RMI-IIOP(RMI over IIOP,一种在CORBA基础设施上...
在Java编程领域,分布式系统和远程方法调用(Remote Method Invocation, RMI)是关键的高级概念,它们允许不同计算机间的程序协同工作,提高系统的可扩展性和灵活性。本篇文章将探讨如何使用Java来实现简单的分布式...
10. **JNDI(Java Naming and Directory Interface)**:虽然RMI可以独立工作,但通常与JNDI结合使用,提供更强大的命名和目录服务,使查找远程对象变得更加灵活。 在"RMITest"这个项目中,我们可以期待看到以下...
- **生成存根和骨架**:使用Java RMI工具生成客户端和服务端的存根和骨架代码,以实现远程调用。 - **测试与部署**:编写测试应用程序验证远程对象的功能,最后部署应用程序并确保其正常运行。 #### 五、案例分析...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许Java对象在不同的网络环境中进行交互,就像调用本地方法一样。RMI是构建分布式应用的重要工具,尤其适用于需要跨...
1. 定义远程接口:创建一个接口,继承自`java.rmi.Remote`,并在接口中声明将被远程调用的方法。方法声明中必须包含`throws RemoteException`,用于处理可能出现的远程通信异常。 2. 实现远程接口:创建一个类实现...
- **JNDI(Java Naming and Directory Interface)**:RMI通常与JNDI结合使用,提供更高级别的命名和目录服务,帮助管理和查找远程对象。 - **RMI配置**:包括设置RMI主机和端口,以及处理SSL安全连接等。这些通常...
总的来说,RMI是Java中实现分布式计算的关键技术,它通过存根、骨架和远程接口的机制,提供了透明的远程调用能力,简化了跨JVM的编程。开发者可以通过学习和理解RMI,构建出高效且易于维护的分布式系统。
首先,RMI的核心概念是远程方法调用,它允许一个Java对象调用位于另一台计算机上的对象的方法。这种机制依赖于Java的序列化机制,将远程对象的引用转化为可以在网络上传输的字节流,然后在目标机器上反序列化恢复...
1. 创建远程接口:首先定义一个继承自java.rmi.Remote的接口,声明所有要远程调用的方法。 ```java public interface MyRemoteInterface extends Remote { String doSomething(String input) throws ...
骨架则在服务器端运行,它接收到客户端的远程调用,将这些调用转换为服务器上的本地调用,并将结果返回给客户端。存根和骨架由RMI编译工具自动生成,这个工具会分析服务器端的类,生成对应的存根和骨架代码。 RMI...
这种注入可以和RMI服务相结合,以实现攻击者定义的Java方法的远程调用。 文章中提到了JdbcRowSetImpl利用链和FastJson反序列化漏洞,这些是JNDI注入攻击利用的实例。JdbcRowSetImpl是Java的一个类,它允许通过JNDI...