рдорд▓реНрдЯреАрдкрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП RMI

рд╣реЗрд▓реЛ, рд╣реЗрдмреНрд░!
рдХрд╛рд░реНрдп рдХреЗ рджреМрд░рд╛рди, рдХрд╛рд░реНрдп рд╡рд┐рднрд┐рдиреНрди рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ (рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рдХрдИ рдЖрд░рдПрдордЖрдИ рд░рдЬрд┐рд╕реНрдЯреНрд░рд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдФрд░ рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕рдордЭрдХрд░, рдореИрдВрдиреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

Dano

рджреЛ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░: рд╕реНрдерд╛рдиреАрдп рдФрд░ рдмрд╛рд╣рд░реА рдЖрдИрдкреА рдкрддреЗред рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд:
public interface Server extends Remote { public String getMessage() throws RemoteException; } 

рдХрд╛рд░реНрдп

рджреЛ рдЖрд░рдПрдордЖрдИ рд░рдЬрд┐рд╕реНрдЯреНрд░рд┐рдпрд╛рдВ рдмрдирд╛рдПрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдПред

рдирд┐рд░реНрдгрдп

рдореБрдЭреЗ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рдкрд╛рдардХ рдЖрд░рдПрдордЖрдИ рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ (рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ , рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ)ред рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдмрдирд╛рддреЗ рд╕рдордп, рдпрд╣ java.rmi.server.hostname рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдирд╛ рд╣реЛрд╕реНрдЯрдирд╛рдо рдорд╛рди рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗред рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрд░рдПрдордЖрдИ 2 рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рдПрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рд▓рд┐рдП, рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдПред рдпрд╛рдиреА рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рджреЛ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рдХреЛрдИ рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдЕрдирд╛рдо рдкреЛрд░реНрдЯ рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддреЛ, рдЪрд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

  1. рд╣рдо рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ;
  2. рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдмрдирд╛рдПрдВ;
  3. рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ;
  4. рдмрд╛рд╣рд░реА IP рдкрддреЗ рдХрд╛ рдорд╛рди java.rmi.server.hostname рдкрд░ рджреЗрдВ;
  5. рдЦреБрд▓реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдмрдирд╛рдПрдВ;
  6. рд╣рдо рдЦреБрд▓реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рджреВрд╕рд░реЗ рдкрд░ рдПрдХ рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ;
  7. рд▓рд╛рднред


рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдкреЛрд░реНрдЯ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
 public final class ServerImpl extends UnicastRemoteObject implements Server { public ServerImpl(int port) throws RemoteException { super(port); } @Override public String getMessage() throws RemoteException { return "hello"; } } 


рд░рдЬрд┐рд╕реНрдЯреНрд░рд┐рдпрд╛рдВ рдмрдирд╛рдПрдВ

 Registry localRegistry = LocateRegistry.createRegistry(localPort); //     ServerImpl localEngine = new ServerImpl(0); //     registry.rebind("rmi://localServer", localEngine);//    System.setProperty("java.rmi.server.hostname", " IP-"); //  IP-  java.rmi.server.hostname Registry registry = LocateRegistry.createRegistry(remotePort1); //          ServerImpl engine = new ServerImpl(remotePort2); //         registry.rebind("rmi://remoteServer", engine); //    


рд╣рдореЗрдВ рджреЛ рдЖрд░рдПрдордЖрдИ рд░рдЬрд┐рд╕реНрдЯреНрд░рд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рд╕реБрд▓рдн рд╣реИрдВред рдЕрддрд┐рд░рд┐рдХреНрдд рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ рджрд┐рдП рдЧрдП рдкрддреЛрдВ рдкрд░ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЙрдХреЗрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ RMIClientSocketFactory рдФрд░ RMIServerSocketFactory рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред

Source: https://habr.com/ru/post/In185710/


All Articles