Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
·Ö²¼Ê½¼ÆËã¡¢ÔÆ¼ÆËãÓë´óÊý¾Ý¸ÅÂÛÐĵÃÀí½â
 
×÷ÕߣºMartian
 
  3165  次浏览      27
2020-12-31
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜÁËRMI·¶ÐÍÓëÓ¦Óá¢RMI¼ò½é¡¢RMI»ù±¾Ó¦Óÿª·¢¡¢RMI¿Í»§»Øµ÷¼°×®ÏÂÔØÓ밲ȫ¹ÜÀíÆ÷¡£
±¾ÎÄÀ´×Ôcsdn£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼­¡¢ÍƼö¡£

RMI·¶ÐÍÓëÓ¦ÓÃ

·Ö²¼Ê½¶ÔÏó·¶ÐÍ

·Ö²¼Ê½¶ÔÏó·¶ÐÍÊÇÔÚÏûÏ¢´«µÝÄ£ÐÍÖ®ÉÏÌṩ³éÏóµÄÒ»ÖÖ·¶ÐÍ£¬ÊÇ»ùÓÚ·Ö²¼Ê½ÏµÍ³ÖжÔÏóÒ»ÖÖ¼ÆËã·¶ÐÍ£¬Ê¹ÓÃËüÓû§¿ÉÒÔ·ÃÎÊÍøÂçÉϵĶÔÏ󣨼´·Ö²¼Ê½¶ÔÏ󣩡£·Ö²¼Ê½¶ÔÏó·¶Ð͵ĺËÐÄÊDzÙ×÷µ÷Ó㬶ø´«µÝµÄÊý¾Ý³Ðµ£¸¨Öú½ÇÉ«¡£

ÉÏͼչʾÁË·Ö²¼Ê½¶ÔÏó·¶ÐÍ£¬ÔËÐÐÔÚÖ÷»úAÉϵĽø³ÌÏòפÁôÓÚÖ÷»úBÉϵķֲ¼Ê½¶ÔÏó·¢³ö·½·¨µ÷Óã¬Èç¹ûÐèÒª´«µÝÊý¾Ý£¬½«×÷Ϊ²ÎÊýËæµ÷Óô«µÝ¡£Ö÷»úAÉϵĽø³Ì·¢³öµÄµ÷ÓûᵼÖÂÖ÷»úBÉϵÄij¸ö·½·¨±»Ö´ÐУ¬Èç¹û¸Ãµ÷ÓôæÔÚ·µ»ØÖµ£¬Ò²»á´ÓÖ÷»úB´«Ë͵½Ö÷»úA¡£Ê¹Ó÷ֲ¼Ê½¶ÔÏóµÄ½ø³Ì³ÆÎª¸Ã¶ÔÏóµÄ¿Í»§½ø³Ì¡£¸Ã¶ÔÏóµÄ·½·¨³ÆÎª¿Í»§½ø³ÌµÄÔ¶³Ì·½·¨¡£

·Ö²¼Ê½¶ÔÏó·¶Ð͵ÄÌåϵ½á¹¹

ÏÂͼÃèÊöÁËÖ§³Ö·Ö²¼Ê½¶ÔÏó·¶Ð͵Ļù±¾Ìåϵ½á¹¹£¬Ò»¸ö·Ö²¼Ê½¶ÔÏóÓÉijһ½ø³ÌÌṩ£¬ÕâÀï³ÆÖ®Îª¶ÔÏó·þÎñÆ÷£¨object server£©£¬Í¬Ê±±ØÐëÔÚϵͳÖÐΪ·Ö²¼Ê½¶ÔÏó×¢²áÌṩһÖÖÉèÊ©£¬ÕâÀï³ÆÖ®Îª¶ÔÏó×¢²áÆ÷£¨object registry£©£¬»ò¼ò³ÆÎª×¢²áÆ÷£¨registry£©¡£

 

peer-to-peer·¶ÐÍ

1.peer-to-peer·¶ÐÍÔ´ÓÚP2PÍøÂ磨ÓÖ³ÆÎª¶ÔµÈ¼ÆËãÍøÂ磩£¬¼ò³ÆÎªP2P·¶ÐÍ¡£P2PÍøÂçÊÇÎÞÖÐÐÄ·þÎñÆ÷¡£

2.ÔÚpeer-to-peer·¶ÐÍÖУ¬¸÷²ÎÓë½ø³ÌµÄµØÎ»ÊÇÆ½µÈµÄ£¬¶¼¾ßÓÐÏàͬµÄÐÔÄܺÍÔðÈΣ¨Òò´Ë£¬³ÆËüÃÇΪpeer£©¡£Ã¿¸ö²ÎÓëÕߣ¨½ø³Ì£©¶¼¿ÉÒÔÏòÁíÒ»¸ö²ÎÓëÕß·¢ÆðÇëÇóºÍ½ÓÊÕÏìÓ¦¡£ÔÚÒ»¸ö»ùÓÚP2P·¶Ð͵ķֲ¼Ê½Ó¦ÓÃÖУ¬Ã¿Ò»¸ö²ÎÓëµÄ½ø³ÌÍùÍù¼È³Ðµ£µÄ·þÎñÆ÷½ø³ÌµÄ½ÇÉ«£¨×ÊÔ´ÌṩÕߣ©£¬Óֳе£Á˿ͻ§½ø³ÌµÄ½ÇÉ«£¨×ÊÔ´ÇëÇóÕߣ©¡£

ÈçºÎ·ÃÎÊijһ·Ö²¼Ê½¶ÔÏó

1.¶ÔÏó¿Í»§£¨object client£©½ø³Ì´Ó×¢²áÆ÷Öвéѯ¸Ã¶ÔÏóµÄÒýÓã¬È»ºóʹÓöÔÏóµÄÒýÓõ÷ÓÃÔ¶³Ì·½·¨¡£¶ÔÏó¿Í»§Í¨¹ý¿Í»§´úÀíµ÷ÓÃÔ¶³Ì·½·¨¡£ÔÚ·Ö²¼Ê½¼ÆËã»·¾³ÖУ¬´úÀíÊÇÖ¸³äµ±ÆäËûÈí¼þ¹¹¼þÖ®¼äµÄЭµ÷ÕßµÄÈí¼þ¹¹¼þ¡£´úÀíͨ¹ýÓë¿Í»§Ö÷»úÉϵÄÈí¼þ½»»¥£¬Ìṩ·Ö²¼Ê½¶ÔÏóϵͳµÄÔËÐÐʱ֧³Ö¡£ÀýÈ縺ÔðÏòÔ¶³ÌÖ÷»ú´«ËÍ·½·¨µ÷ÓÃËùÐèµÄ½ø³Ì¼äͨÐÅ£¬°üÀ¨·â×°ÐèÒª´«Êä¸øÔ¶³Ì¶ÔÏóµÄ²ÎÊýÊý¾Ý¡£

2.·þÎñÆ÷¶ËÒ²ÐèÒªÀàËÆÌåϵ½á¹¹£¬ÆäÖзֲ¼Ê½¶ÔÏóϵͳµÄÔËÐÐʱ֧³Ö´¦ÀíÏûÏ¢½ÓÊÕºÍÊý¾Ý½â·â£¬²¢½«µ÷ÓÃת·¢µ½³ÆÎª·þÎñÆ÷´úÀíµÄÈí¼þ¹¹¼þ¡£·þÎñÆ÷´úÀíͨ¹ýÓë·Ö²¼Ê½¶ÔÏó½»»¥£¬ÔÚ±¾µØµ÷Ó÷½·¨£¬²¢½«½â·âÊý¾Ý×÷Ϊ²ÎÊý´«Èë¡£¸Ã·½·¨µ÷Óóö·¢·þÎñÆ÷Ö÷»úÉÏijЩÈÎÎñµÄÖ´ÐС£·½·¨µÄÖ´Ðнá¹û£¬±»·þÎñÆ÷´úÀíͨ¹ýË«·½µÄÔËÐÐʱ֧³ÖºÍÍøÂçÖ§³Ö£¬×ª·¢¸ø¿Í»§´úÀí¡£

Ô¶³Ì¹ý³Ìµ÷Óã¨RMI£©

RMIÔ´ÓÚÔ¶³Ì¹ý³Ìµ÷ÓÃRPC£¨Remote Procedure Call£©,RPC·¶Ð͵÷Óùý³ÌÈçÏÂͼËùʾ¡£

±¾µØ¹ý³Ìµ÷ÓúÍÔ¶³Ì¹ý³Ìµ÷ÓõÄÇø±ð

RMI¼ò½é

1.RMI£¨Remote Method Invocation£©¼´Ô¶³Ì·½·¨µ÷Óã¬ÊÇ·Ö²¼Ê½¼ÆËãµÄ¹Ø¼ü¡£RMIÊÇRPCÄ£Ð͵ÄÃæÏò¶ÔÏóʵÏÖ£¬ÊÇÒ»ÖÖÓÃÓÚʵÏÖÔ¶³Ì¹ý³Ìµ÷ÓõÄÓ¦ÓóÌÐò±à³Ì½Ó¿Ú£¬Ëüʹ¿Í»§»úÉÏÔËÐеijÌÐò¿ÉÒÔµ÷ÓÃÔ¶³Ì·þÎñÆ÷ÉϵĶÔÏó¡£ÓÉÓÚRMI APIÖ»ÊÊÓÃÓÚJava³ÌÐò£¬ËùÒÔ£¬ÎÒÃÇÒ»°ã³ÆÎªJava RMI¡£

2.ͨ¹ýµ÷ÓÃRMIµÄAPI£¬¶ÔÏó·þÎñÆ÷ͨ¹ýĿ¼·þÎñµ¼³öºÍ×¢²áÔ¶³Ì¶ÔÏó£¬ÕâЩ¶ÔÏóÌṩһЩ¿ÉÒÔ±»¿Í»§³ÌÐòµ÷ÓõÄÔ¶³Ì·½·¨¡£´ÓÓï·¨ÉÏÀ´¿´£¬RMIͨ¹ýÔ¶³Ì½Ó¿ÚÉùÃ÷Ô¶³Ì¶ÔÏ󣬸ýӿÚÊÇJava½Ó¿ÚµÄÀ©Õ¹¡£Ô¶³Ì½Ó¿ÚÓɶÔÏó·þÎñÆ÷ʵÏÖ¡£¶ÔÏó¿Í»§Ê¹ÓÃÓë±¾µØ·½·¨µ÷ÓÃÀàËÆµÄÓï·¨·ÃÎÊÔ¶³Ì¶ÔÏ󣬲¢µ÷ÓÃÔ¶³Ì¶ÔÏóµÄ·½·¨¡£

Java RMIÌåϵ½á¹¹

×®/¿ò¼Ü£¨Stub/Skeleton£©²ã£º¿Í»§¶ËµÄ×®ºÍ·þÎñÆ÷¶ËµÄ¿ò¼Ü£»

Ô¶³ÌÒýÓã¨remote reference£©²ã£º´¦ÀíÔ¶³ÌÒýÓÃÐÐΪ£»

´«Êä²ã£¨transport£©£ºÁ¬½ÓµÄ½¨Á¢ºÍ¹ÜÀí£¬ÒÔ¼°Ô¶³Ì¶ÔÏóµÄ¸ú×Ù¡£

stubºÍskeleton

-------×®£¨stub£©ÊÇÔ¶³Ì¶ÔÏóµÄÒ»ÖÖ´úÀí½á¹¹£¬Ê¹µÃÔ¶³Ì¶ÔÏó¿ÉÒÔÏñ±¾µØ¶ÔÏóÄÇÑù±»·ÃÎÊ¡£×®ÌṩÁËÔ¶³Ì¶ÔÏóµÄËùÓÐÄܱ»µ÷ÓõÄÔ¶³Ì·½·¨£¬µ÷ÓÃÕß¿ÉÒÔͨ¹ýµ÷Óñ¾µØ×®£¨Ô¶³Ì¶ÔÏó´úÀí£©ËùÌṩµÄ·½·¨À´ÊµÏÖÔ¶³Ì¶ÔÏóµÄ·½·¨µ÷Óá£ÔÚRMIÖУ¬×®ÉùÃ÷ÁËͬԶ³Ì¶ÔÏóËùʵÏֵĽӿÚÏàͬµÄ·½·¨¼¯ºÏ¡£

-----µ±µ÷Ó÷½µ÷ÓÃ×®Äڵķ½·¨Ê±£¬»áÒÔÈçÏ·½Ê½½øÐд¦Àí£º

1.³õʼ»¯Ò»¸öÓëÔ¶³ÌJVM£¨°üº¬ÁËÔ¶³Ì¶ÔÏ󣩵ÄÁ¬½Ó

2.ÏòÔ¶³ÌJVM´«Êä·â×°ºóµÄ²ÎÊý£¨µ÷Ó÷½·¨Ãû£¬²ÎÊýµÈ£©

3.µÈ´ýÔ¶³ÌJVMÉϵķ½·¨µ÷Óýá¹û

4.½«·µ»Ø½á¹û»òÒì³£ÐÅÏ¢½â°ü

5.µ÷Ó÷½µÃµ½µ÷Óýá¹û

-----¿ÉÒÔ¿´³ö£¬×®¸ºÔðΪµ÷Ó÷½ÊµÏÖ²ÎÊýµÄÐòÁл¯ºÍ·´ÐòÁл¯£¬ÒÔ¼°·â×°ÁËÍøÂç²ãµÄͨѶ¹ý³Ì£¬¼ò»¯Á˵÷Ó÷½µÄ²Ù×÷¡£

-----ÔÚÔ¶³ÌÖ÷»úJVM£¬Ã¿Ò»¸öÔ¶³Ì¶ÔÏóÓÐÒ»¸ö¶ÔÓ¦µÄskeleton£¨Java2ƽ̨ϲ»ÔÙÐèÒªskeleton£©¡£Skeleton¸ºÔð·ÖÎöµ÷Ó÷½´«À´µÄ²ÎÊý£¬²¢µ÷ÓÃÏàÓ¦µÄʵ¼Ê¶ÔÏó¡£µ±skeleton½ÓÊÕµ½Ò»¸öÔ¶³Ì·½·¨µ÷ÓÃÇëÇó£¬Ëü½«°´ÈçÏ·½Ê½½øÐд¦Àí£º

1.½â°ü²¢·ÖÎö½ÓÊÕµ½µÄ²ÎÊýÐÅÏ¢

2.µ÷ÓÃÏàÓ¦µÄʵ¼Ê¶ÔÏóÉϵķ½·¨

3.½«µ÷Óýá¹û·â×°²¢´«Ê䏸µ÷Ó÷½·¨

-------¿ÉÒÔ¿´³öskeletonÓëstubµÄ´¦Àí¹ý³ÌÀàËÆ£¬µ«Ë³ÐòÕýºÃÏà·´£¬µ«ÔÚJava 2ƽ̨»ò¸ü¸ßµÄ°æ±¾ÖÐÒѾ­²»ÔÙÐèÒªskeleton£¬ËüµÄ¹¦Äܱ»·´Éä»úÖÆËùÈ¡´ú¡£

RMI stubÓëskeletonÖ®¼äµÄ½»»¥

¶ÔÏó×¢²á

ͨ¹ýRMI API£¬¿ÉÒÔÀûÓÃÈô¸ÉÖÖĿ¼·þÎñÀ´×¢²á·Ö²¼Ê½¶ÔÏó¡£JNDI£¨Java Naming and Directory Interface£¬JavaÃû×ÖºÍĿ¼£©¾ÍÊÇÒ»ÖÖÕâÑùµÄĿ¼·þÎñ£¬¿ÉÒÔ½«ÆäÓÃÓÚδʹÓÃRMI APIµÄÓ¦ÓÃÖС£ÁíÍ⣬RMI×¢²á±írmiregistry£¬ÊÇJava SDKÌṩµÄÒ»ÖÖ¼òµ¥Ä¿Â¼·þÎñ¡£

RMI»ù±¾Ó¦Óÿª·¢

Ô¶³Ì½Ó¿Ú

-----Ò»¸ö²»¶¨Òå·½·¨µÄ±ê¼Ç½Ó¿Ú¡£ÔÚRMI APIÖУ¬·Ö²¼Ê½¶ÔÏóµÄ´´½¨¿ªÊ¼ÓÚÔ¶³Ì½Ó¿Ú¡£¶ø´´½¨Ô¶³Ì½Ó¿Úʱ,±ØÐë×¼ÊØÒÔϹæÔò£º

(1)Ô¶³Ì½Ó¿Ú±ØÐëÖ±½Ó»ò¼ä½ÓÀ©Õ¹Java.rmi.Remote½Ó¿Ú£¬ÇÒ±ØÐëÉùÃ÷Ϊpublic£¬³ý·Ç¿Í»§¶ËÓÚÔ¶³Ì½Ó¿ÚÔÚͬһ°üÖУ»

(2)³ýÓëÓ¦ÓóÌÐò±¾ÉíÓйصÄÎ¥ÀýÖ®Í⣬Զ³Ì½Ó¿ÚÖеÄÿ¸ö·½·¨±ØÐëÔÚ×Ô¼ºµÄthrows´Ó¾äÖÐÉùÃ÷java.rmi.RemoteException£»

(3)ÔÚÔ¶³Ì·½·¨ÉùÃ÷ÖУ¬×÷Ϊ²ÎÊý»ò·µ»ØÖµÉùÃ÷µÄÔ¶³Ì¶ÔÏó±ØÐëÉùÃ÷ΪԶ³Ì½Ó¿Ú£¬¶ø·Ç¸Ã½Ó¿ÚµÄʵÏÖÀࣻ

·þÎñÆ÷¶ËÈí¼þ

-----¶ÔÏó·þÎñÆ÷ÊÇÖ¸ÕâÑùµÄÒ»ÖÖ¶ÔÏó£¬Ëü¿ÉÒÔÌṩijһ·Ö²¼Ê½¶ÔÏóµÄ·½·¨ºÍ½Ó¿Ú¡£Ã¿¸ö¶ÔÏó·þÎñÆ÷±ØÐ룺

1£©ÊµÏÖ½Ó¿Ú²¿·Ö¶¨ÒåµÄÿ¸öÔ¶³Ì·½·¨£»

2£©ÏòĿ¼·þÎñ×¢²á°üº¬ÁËʵÏֵĶÔÏó¡£

----Ò»°ã½¨Ò齫Á½²¿·Ö×÷Ϊ¶ÀÁ¢µÄÀà·Ö±ðʵÏÖ¡£

stubºÍskeletonÉú³É

1.ÔÚRMIÖУ¬·Ö²¼Ê½¶ÔÏóÐèҪΪÿ¸ö¶ÔÏó·þÎñÆ÷ºÍ¶ÔÏó¿Í»§Ìṩ´úÀí£¬·Ö±ð³ÉΪ¶ÔÏóskeletonºÍstub¡£ÕâЩ´úÀí¿Éͨ¹ýʹÓÃJava SDKÌṩµÄRMI±àÒëÆ÷rmic£¬±àÒëÔ¶³Ì½Ó¿ÚʵÏÖÉú³É¡£¿ÉÔÚÃüÁîÐÐÏÂÊäÈëÏÂÊöÃüÁîÉú³ÉstubºÍskeletonÎļþ£ºrmic

2.Èô±àÒë³É¹¦£¬ÔòÉú³ÉÁ½¸ö´úÀíÎļþ£¬ÎļþÃû¶¼ÒÔʵÏÖÀàµÄÀàÃûΪǰ׺£¬ÈçSomeImpl_stub.classºÍSomeImpl_skel.class£¬ÔÚJava2ƽ̨Ï£¬Ö»Éú³ÉstubÎļþ¡£¶ÔÏóµÄstubÎļþ¼°Ô¶³Ì½Ó¿ÚÎļþ£¬±ØÐ뱻ÿ¸ö¶ÔÏó¿Í»§Ëù¹²Ïí¡£

RMIÓ¦Óù¹½¨²½Öè

1.Ϊ¸ÃÓ¦ÓõÄËùÓдýÉú³ÉÎļþ´´½¨Ò»¸öĿ¼¡£

2.ÔÚSomeInterface.javaÖж¨ÒåÔ¶³Ì·þÎñÆ÷½Ó¿Ú¡£±àÒë²¢Ð޸ijÌÐò£¬Ö±µ½²»ÔÙÓÐÈκÎÓï·¨´íÎó¡£

3.SomeImpl.javaÖÐʵÏÖ½Ó¿Ú£¬±àÒë²¢Ð޸ijÌÐò£¬Ö±µ½²»ÔÙÓÐÈκÎÓï·¨´íÎó¡£

4.ʹÓÃRMI±àÒëÆ÷rmic´¦ÀíʵÏÖÀ࣬Éú³ÉÔ¶³Ì¶ÔÏóµÄstubÎļþ rmic SomeImpl

5.ÒÔ´ÓĿ¼Öп´µ½ÐÂÉú³ÉÎļþSomeImpl_Stub.class£¬Ã¿´ÎÐ޸ĽӿÚʵÏÖʱ£¬¶¼ÒªÖØÐÂÖ´Ðв½Öè3ºÍ²½Öè4

6.´´½¨¶ÔÏó·þÎñÆ÷³ÌÐòSomeServer.java£¬±àÒë²¢Ð޸ijÌÐò£¬Ö±µ½²»ÔÙÓÐÈκÎÓï·¨´íÎó¡£

7.¼¤»î¶ÔÏó·þÎñÆ÷ java SomeServer

RMIÓ¦ÓõÄÎļþ·ÅÖÃλÖÃ

²âÊԺ͵÷ÊÔ

------¿ª·¢RMIÓ¦ÓÃʱ£¬½¨Òé×ñÑ­ÒÔϲ½Ö裺

1.¹¹½¨×îСRMI³ÌÐòµÄÒ»¸öÄ£°å¡£´ÓÒ»¸öÔ¶³Ì½Ó¿Ú¿ªÊ¼£¬ÆäÖаüÀ¨Ò»¸ö·½·¨Ç©Ãû£¬Ò»¸östubʵÏÖ£¬Ò»¸öÊä³ö¶ÔÏóµÄ·þÎñÆ÷³ÌÐòÒÔ¼°Ò»¸ö×ãÒÔÓÃÀ´µ÷ÓÃÔ¶³Ì·½·¨µÄ¿Í»§³ÌÐò¡£ÔÚµ¥»úÉϲâÊÔÄ£°å³ÌÐò£¬Ö±µ½Ô¶³Ì·½·¨µ÷Óóɹ¦¡£

2.ÿ´ÎÔÚ½Ó¿ÚÖÐÔö¼ÓÒ»¸ö·½·¨Ç©Ãû¡£Ã¿´ÎÔö¼Óºó¶¼Ð޸Ŀͻ§³ÌÐòÀ´µ÷ÓÃÐÂÔö·½·¨¡£

3.ÍêÉÆÔ¶³Ì·½·¨¶¨ÒåÄÚÈÝ£¬Ã¿´ÎÖ»ÐÞ¸ÄÒ»¸ö¡£ÔÚ¼ÌÐøÏÂÒ»¸ö·½·¨Ö®Ç°£¬²âÊÔ²¢³¹µ×µ÷ÊÔÿ¸öÐÂÔö·½·¨¡£

4.ÍêÈ«²âÊÔËùÓÐÔ¶³Ì·½·¨ºó£¬²ÉÓÃÔöÁ¿Ê½·½·¨¿ª·¢¿Í»§Ó¦Óá£Ã¿´ÎÔö¼Óºó£¬¶¼²âÊԺ͵÷ÊÔ³ÌÐò¡£

5.½«³ÌÐò²¿Êðµ½¶ą̀»úÆ÷ÉÏ£¬²âÊÔ²¢µ÷ÊÔ¡£

RMI¿Í»§»Øµ÷

¿Í»§»Øµ÷

----»Øµ÷¼¼ÊõÔÊÐí¶ÔÌØ¶¨Ê±¼äµÄ·¢Éú¸ÐÐËȤµÄ¶ÔÏó¿Í»§ÔÚ¶ÔÏó·þÎñÆ÷ÉÏ×¢²á×Ô¼º£¬ÒÔ±ã·þÎñÆ÷¿ÉÒÔÔÚËùµÈ´ýʼþ·¢Éúʱ£¬Ïò¶ÔÏó¿Í»§·¢ÆðÒ»´ÎÔ¶³Ì·½·¨µ÷Óá£ÏÂͼ±È½ÏÁËÂÖѯÓë»Øµ÷ÕâÁ½ÖÖ¼¼Êõ¡£

------ÔÚRMIÖУ¬¿Í»§»Øµ÷ÊÇÔÊÐí¶ÔÏó¿Í»§ÔÚÔ¶³Ì»Øµ÷¶ÔÏó·þÎñÆ÷ÉÏ×¢²á×Ô¼º£¬ÒÔ±ã·þÎñÆ÷¿ÉÒÔÔÚËùµÈ´ýʼþ·¢Éúʱ£¬Ïò¿Í»§·¢ÆðÔ¶³Ì·½·¨µ÷ÓõÄÒ»¸öÌØÕ÷¡£×¢Ò⣬ÔÚ¿Í»§»Øµ÷ÖУ¬Ô¶³Ì·½·¨µ÷Óñà³ÌÊÇË«ÏòµÄ£¨»ò³ÆÈ«Ë«¹¤µÄ£©¡£ÏÂͼ½éÉÜȫ˫¹¤Ó¦ÓÃģʽ¡£

ÏÂͼ½éÉÜÁ˿ͻ§»Øµ÷»ù±¾¼Ü¹¹¡£ÈçÏÂͼËùʾ£¬Ã¿¸ö¿Í»§¶ÔÏó¶¼Ôڻص÷·þÎñÆ÷ÉÏ×¢²á×Ô¼º£¬Ëæºóÿµ±ÁíÒ»¸ö¿Í»§¶ÔÏóΪ֧³Ö»Øµ÷¶øÔÚ¶ÔÏó·þÎñÆ÷ÉÏ×¢²áʱ¼´±»Í¨¸æ¡£

Ö§³Ö¿Í»§»Øµ÷µÄRMIÓ¦ÓõĴ´½¨²½Öè

----¿ª·¢·þÎñÆ÷¶ËÈí¼þµÄËã·¨²½Ö裺

1.Ϊ±¾Ó¦Óü´½«Éú³ÉµÄËùÓÐÎļþ´ò¿ªÒ»¸öĿ¼

2.ÔÚCallbackServerInterface.javaÖж¨ÒåÔ¶³Ì·þÎñÆ÷½Ó¿Ú£¬±àÒë³ÌÐò£¬Ö±µ½Ã»ÓÐÈκÎÓï·¨´íÎó

3.ÔÚCallbackServerImpl.javaÖÐʵÏָýӿڡ£±àÒë³ÌÐò£¬Ö±µ½Ã»ÓÐÈκÎÓï·¨´íÎó

4.ʹÓÃRMI±àÒëÆ÷rmic´¦ÀíʵÏÖÀ࣬Éú³ÉÔ¶³Ì¶ÔÏóµÄstubÎļþ£¬¿ÉÒÔ´Óµ±Ç°Ä¿Â¼Öз¢ÏÖÐÂÉú³ÉµÄÎļþ£ºrmic CallbackServerImpl

5.»ñÈ¡¿Í»§Ô¶³Ì½Ó¿ÚÀàÎļþµÄÒ»¸ö¿½±´¡£´ËÍâÒ²¿ÉÒÔ»ñȡԶ³Ì½Ó¿ÚÔ´ÎļþµÄÒ»¸ö¿½±´Ê¹ÓÃjavac±àÒë¸Ã³ÌÐò£¬Éú³É½Ó¿ÚÀàÎļþCallbackClientInterface.class

6.´´½¨¶ÔÏó·þÎñÆ÷³ÌÐòSomeServer.java¡£±àÒë³ÌÐò£¬Ö±µ½Ã»ÓÐÈκÎÓï·¨´íÎó

7.»ñÈ¡¿Í»§Ô¶³Ì½Ó¿ÚstubÎļþµÄÒ»¸ö¿½±´CallbackClientImpl_stub.class

8.¼¤»î¶ÔÏó·þÎñÆ÷£ºjava SomeServer

´ø¿Í»§»Øµ÷µÄRMIÓ¦ÓÃÖеÄÎļþ²¼¾Ö

×®ÏÂÔØÓ밲ȫ¹ÜÀíÆ÷

×®£¨stub£©ÏÂÔØ

-------ÔÚ·Ö²¼Ê½¶ÔÏóϵͳµÄÌåϵ½á¹¹ÖУ¬ÐèÒªÓôúÀíÓÚ¶ÔÏó¿Í»§µÄÔ¶³Ì·½·¨µ÷Óý»»¥¡£ÔÚJava RMI ÖУ¬¸Ã´úÀíÊÇ·þÎñÆ÷Ô¶³Ì½Ó¿Ústub¡£Java¡¡RMIÌṩÁ˿ͻ§¶¯Ì¬·ÃÎÊstubµÄ»úÖÆ¡£Ê¹Óö¯Ì¬stubÏÂÔØ£¬¿Í»§Ö÷»úÉϾͲ»ÔÙÐèÒªÓÐstubÀàÎļþµÄ¿½±´ÁË¡£È¡¶ø´úÖ®µÄÊÇ£¬stubÀà¿ÉÒÔÔÚ¿Í»§±»¼¤»îʱ£¬°´Ðè´ÓWeb·þÎñÆ÷´«Ë͵½¿Í»§Ö÷»úÉÏ¡£

RMI°²È«¹ÜÀíÆ÷

1.stubÏÂÔØ»á´øÀ´ÏµÍ³°²È«ÎÊÌâ¡£µ±´ÓÔ¶³ÌÖ÷»ú´«ÊäRMI stubµÈ¶ÔÏóʱ£¬ËüµÄÖ´Ðлáʹ±¾µØÖ÷»úÔâÊܵ½Ç±ÔڵĶñÒâ¹¥»÷¡£

ΪÁËÓ¦¶ÔÏÂÔØµÄstubËùÒýÆðµÄÍþв£¬JavaÌṩÀàRMISecurityManager¡£RMI³ÌÐò¿ÉÒÔʵÀý»¯¸ÃÀàµÄÒ»¸ö¶ÔÏó£¬ÊµÀý»¯µÄ¶ÔÏóÄܼàÊÓ³ÌÐòÖ´2.ÐÐÆÚ¼äËùÒýÆðµÄËùÓа²È«Ãô¸Ð¶¯×÷¡£ÕâЩ¶¯×÷°üÀ¨·ÃÎʱ¾µØÎļþºÍʹÓÃÍøÂçÁ¬½Ó£¬ÒòΪÕâЩ¶¯×÷¿ÉÄܵ¼Ö¶Ա¾µØ×ÊÔ´ÒÔÍâÐ޸Ļò¶ÔÍøÂç×ÊÔ´µÄÎóÓá£

3.ÌØ±ðµØ£¬RMIÔËÐÐʱ֧³ÖÒªÇó·þÎñÆ÷½ø³ÌÔÚÊä³östubÏÂÔØËùÐèÒªµÄÈκζÔÏó֮ǰ£¬°²×°°²È«¹ÜÀíÆ÷£¬¿Í»§½ø³ÌÔÚÏÂÔØstub֮ǰ£¬Ò²ÐèÒª°²×°°²È«¹ÜÀíÆ÷¡£Ä¬ÈÏÇé¿öÏ£¬ÔÚÿ¸öÖ§³ÖJavaµÄϵͳµÄÌØ¶¨Ä¿Â¼ÖУ¬¶¼×°ÓÐÒ»¸öϵͳ¼¶°²È«²ßÂÔÎļþ¡£¸Ãϵͳ°²È«²ßÂÔÎļþ¶¨ÒåµÄÏÞÖÆ½«±»°²È«¹ÜÀíÆ÷Ö´ÐС£

Java°²È«²ßÂÔÎļþµÄÓï·¨

----Java°²È«²ßÂÔÎļþÊÇÒ»ÖÖÎı¾Îļþ£¬ÆäÖаüº¬Á˶¨ÒåÌØ¶¨Ðí¿ÉÊÚȨµÄ´úÂ룬ÏÂÃæÊÇRMIÓ¦ÓÃÖÐÒ»¸öµäÐ͵Äjava.policyÎļþ¡£

grant {

// permits socket access to all common TCP ports, including the

// default RMI registry port (1099) ¨C need for both the client and the server.

// permission java.net.SocketPermission ¡°:1024-65535",connect,accept,resolve";

// permits socket access to port 80, the default HTTP port ¨C needed

// by client to contact an HTTP server for stub downloading

permission java.net.SocketPermission ":80¡±, ¡°connect¡±;

};

----¼¤»î¿Í»§Óë·þÎñÆ÷µÄÐÎʽÈçÏ£º

java -Djava.security.policy=java.policy SomeClient

java -Djava.security.policy=java.policy SomeServer

Ö¸¶¨stubÏÂÔØºÍ°²È«²ßÂÔÎļþ

**Èç¹û½«´ÓHTTP·þÎñÆ÷ÉÏÏÂÔØstub£¬ÄÇôӦ½«stubÀàÎļþ´«Êäµ½HTTP·þÎñÆ÷µÄÏàӦĿ¼ÖУ¬ÀýÈ磬Ö÷»úwww.mycompony.comµÄstubĿ¼£¬²¢È·±£¸ÃÎļþµÄ·ÃÎÊȨÏÞÊÇÈ«Çò¿É¶ÁµÄ¡£¼¤»î·þÎñÆ÷ʱ£¬Ö¸¶¨ÏÂÁÐÃüÁîÑ¡Ï

java ¨CDjava.rmi.server.codebase= -Djava.security.policy=<µ½°²È«²ßÂÔÎļþµÄÍêÕû·¾¶>

ÆäÖУ¬Êǰüº¬stubÀàµÄĿ¼URL£»<µ½°²È«²ßÂÔÎļþµÄÍêÕû·¾¶>Ö¸¶¨¸ÃÓ¦Óõݲȫ²ßÂÔÎļþ£»

ÀýÈ磺

java -Djava.rmi.server.codebase=

http://www.mycompany.com:8080/stubs/

-Djava.security.policy=java.policy HelloServer

----ÉÏÊö´úÂ뽫Æô¶¯HelloServer£¬²¢ÔÊÐí´ÓWeb·þÎñÆ÷www.mycompany.comµÄĿ¼stubsÏÂÔØstub¡£

----ÏÂͼչ³öÁËRMIÓ¦ÓÃËùÐèµÄÒ»×éÎļþ¼°ÕâЩÎļþµÄ²¼¾Ö¡£·þÎñÆ÷¶ËµÄÀàÎļþ°üÀ¨·þÎñÆ÷¡¢Ô¶³Ì½Ó¿Ú¡¢½Ó¿ÚʵÏÖ¡¢stubÀàµÄÀàÎļþºÍÓ¦Óõݲȫ²ßÂÔÎļþ¡£ÔÚ¿Í»§¶ËËùÐèµÄÎļþ°üÀ¨¿Í»§À࣬·þÎñÆ÷Ô¶³Ì½Ó¿ÚÀàºÍÓ¦Óð²È«²ßÂÔÎļþ¡£×îºó£¬stubÀàÎļþÐèÒª´æ´¢ÔÚHTTPÖ÷»úÉÏ£¬¿ÉÒԴӸ÷þÎñÆ÷ÉÏÏÂÔØstub¡£

Ö§³ÖstubÏÂÔØµÄRMIÓ¦ÓõĴ´½¨²½Öè

¡ª¿ª·¢·þÎñÆ÷¶ËÈí¼þµÄËã·¨²½Ö裺

1.Ϊ±¾Ó¦Óü´½«Éú³ÉµÄËùÓÐÎļþ´ò¿ªÒ»¸öĿ¼£»

2.ÔÚSomeInterface.javaÖж¨ÒåÔ¶³Ì·þÎñÆ÷½Ó¿Ú¡£±àÒë³ÌÐò£¬Ö±µ½Ã»ÓÐÈκÎÓï·¨´íÎó¡£

3.ÔÚSomeImpl.javaÖÐʵÏָýӿڡ£±àÒë³ÌÐò£¬Ö±µ½Ã»ÓÐÈκÎÓï·¨´íÎó£»

4.ʹÓÃRMI±àÒëÆ÷rmic´¦ÀíʵÏÖÀ࣬Éú³ÉÔ¶³Ì¶ÔÏóµÄstubÎļþ£¬¿ÉÒÔ´Óµ±Ç°Ä¿Â¼Öз¢ÏÖÐÂÉú³ÉµÄÎļþ£ºrmic SomeImpl£»

5.´´½¨¶ÔÏó·þÎñÆ÷³ÌÐòSomeServer.java£¬±àÒë³ÌÐòÖ±µ½Ã»ÓÐÈκÎÓï·¨´íÎó£»

6.Èç¹ûÏ£ÍûʹÓÃstubÏÂÔØ£¬½«stubÀàÎļþ¿½±´µ½HTTPÖ÷»úµÄÏàӦĿ¼ÖУ»

7.Èç¹ûʹÓÃÁËRMI×¢²á±í£¬µ«Ã»Óм¤»î£¬Ç뼤»îRMI×¢²á±í¡£ÀýÈ磺

rmiregistry <¶Ë¿ÚºÅ£¬Ä¬ÈÏ1099>

8.Ò²¿ÉÒÔÔÚ¶ÔÏó·þÎñÆ÷³ÌÐòÖÐʹÓôúÂ뼤»îRMI×¢²á±í£»

9.ΪӦÓñ༭һ¸öJava°²È«²ßÂÔÎļþ£¬ÎļþÃûΪjava.policy£¬½«¸ÃÎļþ·ÅÔÚÏàӦĿ¼ÖУ¬»òÖ±½Ó·ÅÔÚµ±Ç°Ä¿Â¼ÖУ»

10.¼¤»î·þÎñÆ÷£¬Ö¸¶¨Ï£ÍûstubÏÂÔØµÄcodebaseºÍ°²È«²ßÂÔÎļþ£º

Java ¨CDjava.rmi.server.codebase

=http://somehost.someu/edu/stubs/

-Djava.security.polict=java.policy

----¿ª·¢¿Í»§¶ËÈí¼þµÄËã·¨²½Ö裺

1.Ϊ±¾Ó¦Óü´½«Éú³ÉµÄËùÓÐÎļþ´ò¿ªÒ»¸öĿ¼£»

2.»ñȡԶ³Ì·½·¨½Ó¿ÚÀàÎļþSomeInterface.classµÄÒ»¸ö¿½±´£»

3.¿ª·¢¿Í»§³ÌÐòSomeClient.java£¬±àÒë³ÌÐòÉú³É¿Í»§Àࣻ

4.Èç¹û²»Ï£ÍûstubÏÂÔØ£¬»ñÈ¡stubÀàÎļþµÄÒ»¸ö¿½±´£¬²¢½«Æä·ÅÔÚµ±Ç°Ä¿Â¼ÖУ»

5.ΪӦÓñ༭һ¸öJava°²È«²ßÂÔÎļþjava.policy£¬½«¸ÃÎļþ·ÅÔÚÏàÓ¦µÄĿ¼»òÖ±½Ó·ÅÔÚµ±Ç°Ä¿Â¼ÖУ»

6.¼¤»î¿Í»§£¬Ö¸¶¨°²È«²ßÂÔÎļþ£º

java ¨CDjava.security.policy=java.policy SomeClient

 
   
3165 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
´óÊý¾Ýƽ̨ϵÄÊý¾ÝÖÎÀí
ÈçºÎÉè¼ÆÊµÊ±Êý¾Ýƽ̨£¨¼¼Êõƪ£©
´óÊý¾Ý×ʲú¹ÜÀí×ÜÌå¿ò¼Ü¸ÅÊö
Kafka¼Ü¹¹ºÍÔ­Àí
ELK¶àÖּܹ¹¼°ÓÅÁÓ
×îпγÌ
´óÊý¾Ýƽ̨´î½¨Óë¸ßÐÔÄܼÆËã
´óÊý¾Ýƽ̨¼Ü¹¹ÓëÓ¦ÓÃʵս
´óÊý¾ÝϵͳÔËά
´óÊý¾Ý·ÖÎöÓë¹ÜÀí
Python¼°Êý¾Ý·ÖÎö
³É¹¦°¸Àý
ijͨÐÅÉ豸ÆóÒµ PythonÊý¾Ý·ÖÎöÓëÍÚ¾ò
Ä³ÒøÐÐ È˹¤ÖÇÄÜ+Python+´óÊý¾Ý
±±¾© Python¼°Êý¾Ý·ÖÎö
ÉñÁúÆû³µ ´óÊý¾Ý¼¼Êõƽ̨-Hadoop
ÖйúµçÐÅ ´óÊý¾Ýʱ´úÓëÏÖ´úÆóÒµµÄÊý¾Ý»¯ÔËӪʵ¼ù