$BL\ | $BA0$N9`L\(B | $B Java Remote Method Invocation


5.8 RMI $B%=%1%C%H%U%!%/%H%j(B

RMI $B%i%s%?%$%`java.net.Socket $B$*$h$S(B java.net.ServerSocket $B$,I,MW$J>l9g$K$O!"$3$l$i$N%/%i%9$N%*%V%8%'%/%H$rD>@\%$%s%9%?%s%92=$9$k$N$G$O$J$/!"(Bstatic $B%a%=%C%I(B RMISocketFactory.getSocketFactory $B$K$h$C$FJV$5$l$k!"8=:_$N(B RMISocketFactory $B%*%V%8%'%/%H$N(B createSocket $B$*$h$S(B createServerSocket $B%a%=%C%I$r8F$S=P$7$^$9!#$3$l$K$h$j!"%"%W%j%1!<%7%g%s$O!"(Bjava.net.Socket $B$*$h$S(B java.net.ServerSocket $B%/%i%9$NBeBX%5%V%/%i%9$J$I$N(B RMI $BE>Aw$G;H$o$l$k%=%1%C%H$NRMISocketFactory $B$N%$%s%9%?%s%9$O!"?.Mj$G$-$k%7%9%F%`%3!<%I$K$h$C$F0lEY$K@_Dj$G$-$^$9!#(BJDK1.1 $B$G$O!"$3$N%+%9%?%^%$%:$O!"%=%1%C%H$Nl9g$K8B$i$l$F$$$^$7$?!#(B $B$3$l$O!"%U%!%/%H%j$N%a%=%C%I$KEO$5$l$k%Q%i%a!<%?$,!"(BcreateSocket $B$N(B host $B$H(B port$B!"$*$h$S(B createServerSocket $B$N(B port $B$@$1$G$"$C$?$?$a$G$9!#(B

Java 2 $B%W%i%C%H%U%)!<%`$G$O!"%j%b!<%H%*%V%8%'%/%H$H$NDL?.$K$I$N%W%m%H%3%k$r;H$&$+$K$D$$$F!"$h$j=@Fp$K%+%9%?%^%$%:$G$-$k$h$&$K!"?7$7$$%$%s%?%U%'!<%9(B RMIServerSocketFactory $B$*$h$S(B RMIClientSocketFactory $B$,F3F~$5$l$^$7$?!#(B

RMI $B$r;H$C$?%"%W%j%1!<%7%g%s$G!"$3$l$i$N?7$7$$%=%1%C%H%U%!%/%H%j%$%s%?%U%'!<%9$rMxMQ$9$k$?$a$K!"(BUnicastRemoteObject $B$H(B java.rmi.activation.Activatable $B$NN>J}$K!"$$$/$D$+$N?7$7$$%3%s%9%H%i%/%?$*$h$S(B exportObject $B%a%=%C%I$,DI2C$5$l$^$7$?!#(B $B$3$l$i$N%3%s%9%H%i%/%?$*$h$S%a%=%C%I$O!"%/%i%$%"%s%H$*$h$S%5!<%P%=%1%C%H%U%!%/%H%j$rDI2C$5$l$?%Q%i%a!<%?$H$7$FMxMQ$7$^$9!#(B

$B$3$N?7$7$$%3%s%9%H%i%/%?$^$?$O(B exportObject $B%a%=%C%I$N$I$A$i$+$K$h$C$F(B (RMIClientSocketFactory $B$*$h$S(B RMIServerSocketFactory $B%Q%i%a!<%?$r;H$C$F(B) $B%(%/%9%]!<%H$5$l$k%j%b!<%H%*%V%8%'%/%H$O!"(BRMI $B%i%s%?%$%`$K$h$jFCJL$K07$o$l$^$9!#%j%b!<%H%*%V%8%'%/%H$NB8B34|4VCf!"%i%s%?%$%`$O!"(BServerSocket $B$r:n@.$7$F%j%b!<%H%*%V%8%'%/%H$X$NCe8F$rRMIServerSocketFactory $B$r;HMQ$7!"(BSocket $B$r:n@.$7$F%/%i%$%"%s%H$r%j%b!<%H%*%V%8%'%/%H$K@\B3$9$k$?$a$K!"%+%9%?%`$N(B RMIClientSocketFactory $B$r;HMQ$7$^$9!#(B

$B%+%9%?%`%=%1%C%H%U%!%/%H%j$H$H$b$K%(%/%9%]!<%H$5$l$k%j%b!<%H%*%V%8%'%/%H$N%9%?%V$*$h$S%9%1%k%H%sFb$G;H$o$l$k(B RemoteRef $B$*$h$S(B ServerRef $B$N$l(B UnicastRef2 $B$*$h$S(B UnicastServerRef2 $B$G$9!#(BUnicastRef $B7?$N%o%$%d$NI=8=$G$O!"@\B3$9$k$?$a$N!V%(%s%I%]%$%s%H!W$NI=8=$K!"(BUTF $B7A<0$N%[%9%HL>J8;zNs$H$=$N$"$H$K@0?t$N%]!<%HHV9f$@$1$r;HMQ$7$F$$$^$7$?!#(B UnicastRef2 $B7?$N%o%$%d$NI=8=$K$O!"$3$l$H$O0[$J$kI=8=$,4^$^$l$F$$$^$9!#(BUnicastRef2 $B$G$O!"%(%s%I%]%$%s%H$N%o%$%dI=8=$O!";D$j$N%(%s%I%]%$%s%HI=8=$NFbMF$r;XDj$9$k7A<0$N%P%$%H(B ($B>-Mh$N%(%s%I%]%$%s%HI=8=$N3HD%MQ(B)$B!"$*$h$S$=$l$KB3$/;XDj$5$l$?7A<0$N%G!<%?$K$h$C$F9=@.$5$l$F$$$^$9!#8=:_$N$H$3$m!"%G!<%?$O!"(BUTF $B7A<0$N%[%9%HL>!"%]!<%HHV9f!"$*$h$S(B ($B%(%s%I%]%$%s%H$N7A<0%P%$%H$K$h$C$F;XDj$5$l$?$H$-$O(B) $B%/%i%$%"%s%H$,$3$N%(%s%I%]%$%s%H$G%j%b!<%H%*%V%8%'%/%H$X$N%=%1%C%H@\B3$r@8@.$9$k$?$a$K;H$&(B RMIClientSocketFactory $B%*%V%8%'%/%H$ND>Ns2=I=8=$G9=@.$5$l$^$9!#%(%s%I%]%$%s%H$NI=8=$K$O!"%j%b!<%H%*%V%8%'%/%H$N%(%/%9%]!<%H;~$K;XDj$5$l$?(B RMIServerSocketFactory $B%*%V%8%'%/%H$O4^$^$l$^$;$s!#(B

UnicastRef2 $B7?$N;2>H$r;H$C$F8F$S=P$7$,9T$o$l$?>l9g!"%i%s%?%$%`$O $B

(B $BRMISocketFactory
java.rmi.server.RMISocketFactory abstract $B%/%i%9$O!"%H%i%s%9%]!<%H$,%=%1%C%H$rjava.net $B%Q%C%1!<%8$N(B Socket $B$*$h$S(B ServerSocket $B$r;HMQ$7$^$9!#(B

package java.rmi.server;

public abstract class RMISocketFactory implements RMIClientSocketFactory, RMIServerSocketFactory { public abstract Socket createSocket(String host, int port) throws IOException;   public abstract ServerSocket createServerSocket(int port) throws IOException; public static void setSocketFactory(RMISocketFactory fac) throws IOException; public static RMISocketFactory getSocketFactory(); public static void setFailureHandler(RMIFailureHandler fh); public static RMIFailureHandler getFailureHandler(); }

static $B%a%=%C%I(B setSocketFactory $B$O!"(BRMI $B$,%=%1%C%H$rRMISocketFactory $B$N%$%s%9%?%s%9$N$?$a$K$3$N%a%=%C%I$r8F$S=P$;$k$N$O(B 1 $B2s$@$1$G$9!#%"%W%j%1!<%7%g%s$NDj5A$K$h$k(B RMISocketFactory $B$Njava.net.Socket $B$^$?$O(B java.net.ServerSocket $B%/%i%9$rFH<+$K3HD%$7$?$b$N$rJV$7$F!"3NRMISocketFactory $B$r@_Dj$G$-$k$N$O!"l9g$@$1$G$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B $B%=%1%C%H%U%!%/%H%j$N@_Dj$,5v2D$5$l$F$$$J$$>l9g$K$O!"(BSecurityException $B$,%9%m!<$5$l$^$9!#(B

static $B%a%=%C%I(B getSocketFactory $B$O!"(BRMI $B$K$h$k%=%1%C%H%U%!%/%H%j$rJV$7$^$9!#%=%1%C%H%U%!%/%H%j$,@_Dj$5$l$F$$$J$1$l$P!"$3$N%a%=%C%I$O(B null $B$rJV$7$^$9!#(B

$B%H%i%s%9%]!<%H%l%$%d$O!"%H%i%s%9%]!<%H$G%=%1%C%H$N:n@.$,I,MW$K$J$k$H!"(BgetSocketFactory $B%a%=%C%I$,CM$rJV$7$?(B RMISocketFactory $B>e$G(B createSocket $B$H(B createServerSocket $B%a%=%C%I$r8F$S=P$7$^$9!#Nc$r<($7$^$9!#(B

RMISocketFactory.getSocketFactory().createSocket(myhost, myport)
createSocket $B%a%=%C%I$O!";XDj$5$l$?%[%9%H$H%]!<%H$K@\B3$5$l$k%/%i%$%"%s%H%=%1%C%H$r:n@.$9$k$b$N$G$9!#(BcreateServerSocket $B$O!";XDj$5$l$?%]!<%H>e$K%5!<%P%=%1%C%H$r:n@.$9$k$b$N$G$9!#(B

$B%G%U%)%k%H%H%i%s%9%]!<%H$K$*$1$k(B RMISocketFactory $B$N

  • createSocket $B>e$G!"%U%!%/%H%j$OD>@\%=%1%C%H$K$h$k@\B3$,$G$-$J$$%[%9%H$K<+F0E*$K(B HTTP $B@\B3$r;n$_$k(B
  • createServerSocket $B>e$G!"%U%!%/%H%j$O%5!<%P%=%1%C%H$rJV$7!"?7$7$/
setFailureHandler $B%a%=%C%I$O!"%5!<%P%=%1%C%H$N:n@.$K<:GT$9$k$H<:GTMQ%O%s%I%i$r(B RMI $B%i%s%?%$%`$K$h$j8F$S=P$5$l$k$h$&$K@_Dj$7$^$9!#<:GTMQ%O%s%I%i$O%V!<%kCM$rJV$7$F!"%j%H%i%$$r9T$J$C$F$h$$$+$I$&$+$r<($7$^$9!#%G%U%)%k%H$N<:GTMQ%O%s%I%i$O(B false $B$rJV$7!"%G%U%)%k%H>r7o$G$O%i%s%?%$%`$O%=%1%C%H:n@.$N%j%H%i%$$r9T$o$J$$$3$H$r<($7$^$9!#(B

getFailureHandler $B%a%=%C%I$O!"%=%1%C%H:n@.<:GT$N8=:_$N%O%s%I%i$rJV$7!"<:GTMQ%O%s%I%i$,@_Dj$5$l$F$$$J$1$l$P!"(Bnull $B$rJV$7$^$9!#(B


5.8.2 RMIServerSocketFactory $B%$%s%?%U%'!<%9(B

$B%j%b!<%H%*%V%8%'%/%H$H$N%+%9%?%`$NDL?.$r%5%]!<%H$9$k$K$O!"%(%/%9%]!<%H;~$K%j%b!<%H%*%V%8%'%/%H$KBP$7$F(B RMIServerSocketFactory $B$N%$%s%9%?%s%9$r;XDj$7$^$9!#(B $B$3$N>l9g!"E,@Z$J(B UnicastRemoteObject $B%3%s%9%H%i%/%?$+(B exportObject $B%a%=%C%I!"$^$?$OE,@Z$J(B java.rmi.activation.Activatable $B%3%s%9%H%i%/%?$+(B exportObject $B%a%=%C%I$r;HMQ$7$Fl9g!"(BRMI $B%i%s%?%$%`$O!"%j%b!<%H%/%i%$%"%s%H$+$i$N@\B3$rRMIServerSocketFactory.createServerSocket $B%a%=%C%I$r;HMQ$7$F(B) ServerSocket $B$r:n@.$7$^$9!#(B

package java.rmi.server;

public interface RMIServerSocketFactory { public java.net.ServerSocket createServerSocket(int port) throws IOException; }


5.8.3 RMIClientSocketFactory $B%$%s%?%U%'!<%9(B

$B%j%b!<%H%*%V%8%'%/%H$H$N%+%9%?%`DL?.$r%5%]!<%H$9$k$?$a$K!"%(%/%9%]!<%H;~$K%j%b!<%H%*%V%8%'%/%H$N(B RMIClientSocketFactory $B$N%$%s%9%?%s%9$r;XDj$G$-$^$9!#(B $B$3$N>l9g!"E,@Z$J(B UnicastRemoteObject $B%3%s%9%H%i%/%?$+(B exportObject $B%a%=%C%I!"$^$?$OE,@Z$J(B java.rmi.activation.Activatable $B%3%s%9%H%i%/%?$+(B exportObject $B%a%=%C%I$K$h$C$F9T$$$^$9!#%(%/%9%]!<%H;~$K!"%j%b!<%H%*%V%8%'%/%H$K$3$N$h$&$J%5!<%P%=%1%C%H%U%!%/%H%j$,4XO"IU$1$i$l$F$$$k>l9g!"%j%b!<%H%*%V%8%'%/%H$KBP$9$k%j%b!<%H;2>H$H$H$b$K%/%i%$%"%s%H%=%1%C%H%U%!%/%H%j$,%j%b!<%H(B Virtual Machine $B$K%@%&%s%m!<%I$5$l$^$9!#(B RMI $B%i%s%?%$%`$O!"%/%i%$%"%s%H$+$i%j%b!<%H%*%V%8%'%/%H$X$N@\B3$K!"(BRMIClientSocketFactory.createSocket $B%a%=%C%I$r;HMQ$7$^$9!#(B

package java.rmi.server;

public interface RMIClientSocketFactory { public java.net.Socket createSocket(String host, int port) throws IOException; }



$BL\ | $BA0$N9`L\(B | $B
Copyright © 1997-1999 Sun Microsystems, Inc. All Rights Reserved.