Um die JSOR-Kommunikation (Java™ Sockets over Remote Direct Memory Access) zu aktivieren, müssen Sie zuerst sicherstellen, dass die native Anwendung das Protokoll RSockets verwendet. Das RSockets-Protokoll kann durch das Vorabladen der nativen RSockets-Vorabladebibliothek
oder durch die Verwendung von RSockets-APIs zum Schreiben der nativen Anwendung benutzt werden.
Unterstützung für NIO-Kanalanwendungen wurde in dieser Aktualisierung hinzugefügt
Informationen zu dieser Task
Hinweis: 
Die RDMA-Implementierung, die zuvor veraltet war, wurde aus dem IBM® SDK, Java Technology Edition, Version 8 entfernt.

Es gibt zwei Methoden zum Aktivieren der JSOR-Kommunikation zwischen einer Java-Anwendung und einer nativen Anwendung. Sie müssen die richtige Systemeigenschaft für Ihre Anwendung auswählen. Beispielsweise normale Socketanwendungen für Datenströme (com.ibm.net.rdma.conf) oder NIO-Kanalanwendungen (com.ibm.nio.rdma.conf).
Vorgehensweise
- Führen Sie die folgenden Schritte aus,
wenn Sie durch das Vorabladen der nativen RSockets-Vorabladebibliothek kommunizieren wollen.
- Wenn Sie einen JSOR-Client mit einem nativen Server verbinden wollen,
geben Sie den folgenden Befehlszeilenaufruf ein:
java -Dcom.ibm.net.rdma.conf=<client.conf> -cp <classpath> SampleClient <client_args>
LD_PRELOAD=/usr/lib/rsocket/librspreload.so ./SampleServer <server_args>
Oder:
java -Dcom.ibm.nio.rdma.conf=<client.conf> -cp <classpath> NIOClient <client_args>
LD_PRELOAD=/usr/lib/rsocket/librspreload.so ./NIOServer <server_args>
Dabei gilt:
- client.conf ist die Client-RDMA-Konfigurationsdatei.
- Klassenpfad gibt den Klassenpfad an.
- Clientargumente sind die spezifischen Befehlszeilenoptionen der Clientanwendung.
- Serverargumente sind die spezifischen Befehlszeilenoptionen der nativen Anwendung.
- Wenn Sie einen JSOR-Server mit einem nativen Client verbinden wollen,
geben Sie den folgenden Befehlszeilenaufruf ein:
java -Dcom.ibm.net.rdma.conf=<server.conf> -cp <classpath> SampleServer <server_args>
LD_PRELOAD=/usr/lib/rsocket/librspreload.so ./SampleClient <client_args>
Oder:
java -Dcom.ibm.nio.rdma.conf=<server.conf> -cp <classpath> NIOServer <server_args>
LD_PRELOAD=/usr/lib/rsocket/librspreload.so ./NIOClient <client_args>
Dabei gilt:
- server.conf ist die Server-RDMA-Konfigurationsdatei.
- Klassenpfad gibt den Klassenpfad an.
- Serverargumente sind die spezifischen Befehlszeilenoptionen der Serveranwendung.
- Clientargumente sind die spezifischen Befehlszeilenoptionen der nativen Anwendung.
- Führen Sie die folgenden Schritte aus, wenn die native Anwendung so geschrieben ist,
dass die RSockets-APIs für die Kommunikation mit einer JSOR-Client- oder -Serveranwendung verwendet werden.
- Wenn Sie einen JSOR-Client mit einem nativen Server verbinden wollen,
der für die Verwendung von RSockets-APIS geschrieben ist,
geben Sie den folgenden Befehlszeilenaufruf ein:
java -Dcom.ibm.net.rdma.conf=<client.conf> -cp <classpath> SampleClient <client_args>
cc -o SampleServer -lrdmacm
./SampleServer <server_args>
Oder:
java -Dcom.ibm.nio.rdma.conf=<client.conf> -cp <classpath> NIOClient <client_args>
cc -o NIOServer -lrdmacm
./NIOServer <server_args>
Dabei gilt:
- client.conf ist die Client-RDMA-Konfigurationsdatei.
- Klassenpfad gibt den Klassenpfad an.
- Clientargumente sind die spezifischen Befehlszeilenoptionen der Clientanwendung.
- Serverargumente sind die spezifischen Befehlszeilenoptionen der nativen Anwendung.
- Wenn Sie einen JSOR-Server mit einem nativen Client verbinden wollen,
der für die Verwendung von RSockets-APIS geschrieben ist,
geben Sie den folgenden Befehlszeilenaufruf ein:
java -Dcom.ibm.net.rdma.conf=<server.conf> -cp <classpath> SampleServer <server_args>
cc -o SampleClient -lrdmacm
./SampleClient <client_args>
Oder:
java -Dcom.ibm.nio.rdma.conf=<server.conf> -cp <classpath> NIOServer <server_args>
cc -o NIOClient -lrdmacm
./NIOClient <client_args>
Dabei gilt:
- server.conf ist die Server-RDMA-Konfigurationsdatei.
- Klassenpfad gibt den Klassenpfad an.
- Serverargumente sind die spezifischen Befehlszeilenoptionen der Serveranwendung.
- Clientargumente sind die spezifischen Befehlszeilenoptionen der nativen Anwendung.
Ergebnisse
Reguläre TCP/IP-Socketaufrufe werden abgefangen und durch funktional entsprechende RDMA-Socketaufrufe
für die Kommunikation mit fernen Anwendungen über den RDMA-Pfad ersetzt.