JavaはリモートメソッドでRMIを呼び出す方法

12109 ワード

JavaはリモートメソッドでRMIを呼び出す方法
会社がwebサービスをしているとき、資料を見てみると、rmiというもの(リモートメソッド呼び出し)が見えて、最近暇だったので、見てみると、簡単な感じでした!だから例を書いて皆さんに提供します!
rmiのサービス側は、インタフェースを使用する必要があります.また、インタフェースの実装クラスもあります.だから次の2つのファイルはインタフェースクラスとインタフェースの実装クラスです!
UserDaoインタフェース:

   
   
   
   
  1. /**  
  2.  *        Remote  
  3.  * @author spring sky  
  4.  * date: 2012 2 7  10:55:05  
  5.  * Email:[email protected]  
  6.  * QQ:840950105  
  7.  */ 
  8. public interface UserDao extends Remote{  
  9.     /**  
  10.      *   
  11.      * @param name  
  12.      */ 
  13.     public void sayName(String name) throws RemoteException;   
  14.  
  15.  

UserDaoImpl実装クラス

   
   
   
   
  1. /**  
  2.  *   
  3.  *        UnicastRemoteObject( )    UserDao  
  4.  * @author spring sky  
  5.  * date: 2012 2 7  10:56:05  
  6.  * Email:[email protected]  
  7.  * QQ:840950105  
  8.  */ 
  9. public class UserDaoImpl extends UnicastRemoteObject implements UserDao {  
  10.  
  11.     public UserDaoImpl() throws RemoteException {  
  12.     }  
  13.     @Override 
  14.     public void sayName(String name) {  
  15.         if(name!=null&&!name.equals(""))  
  16.         {  
  17.             System.out.println(" :"+name);  
  18.         }else{  
  19.             System.err.println(" ....");  
  20.         }  
  21.     }  
  22.  

対外的にurlを共有して外部にアクセスするサービスを提供しています

   
   
   
   
  1. /**  
  2.  *  main ,  
  3.  * @author spring sky  
  4.  * date:2012 2 7  10:57:37  
  5.  * Email:[email protected]  
  6.  * QQ:840950105  
  7.  */ 
  8. public class StartService {  
  9.     private static final String IP = "127.0.0.1";  
  10.     private static final int PORT = 9999;  
  11.     private static final String REMOTE_NAME = "userDao";  
  12.     private static final String REMOTE_URL = "rmi://"+IP+":"+PORT+"/"+REMOTE_NAME;  
  13.     public static void main(String[] args) {  
  14.         try {  
  15.             UserDao userDao = new UserDaoImpl();    //  
  16.             LocateRegistry.createRegistry(PORT);    //  
  17.             Naming.bind(REMOTE_URL, userDao);       //  
  18.             System.out.println(" "+REMOTE_NAME+" ....");  
  19.         } catch (RemoteException e) {  
  20.             System.err.println(" ");  
  21.             e.printStackTrace();  
  22.         } catch (MalformedURLException e) {  
  23.             System.err.println("URL ");  
  24.             e.printStackTrace();  
  25.         } catch (AlreadyBoundException e) {  
  26.             System.err.println(" ");  
  27.             e.printStackTrace();  
  28.         }  
  29.     }  

上はサービス側のコードで、起動に何の問題もなければ、クライアントアクセスをすることができますが、実は上海プラグバルブクライアントのアクセスはもっと簡単で、遠隔のインタフェースクラスとrmiのurlを検索するだけでいいです!
コードは次のとおりです.

   
   
   
   
  1. /**  
  2.  *   
  3.  * @author spring sky  
  4.  * date:2012 2 7  11:12:46  
  5.  * Email:[email protected]  
  6.  * QQ:840950105  
  7.  * name:  
  8.  */ 
  9. public class TestRemote {  
  10.     public static void main(String[] args) {  
  11.         try {  
  12.             // rmi userdao  
  13.             UserDao userDao = (UserDao) Naming.lookup("rmi://127.0.0.1:9999/userDao");     
  14.             //  
  15.             userDao.sayName("spring sky");  
  16.         } catch (MalformedURLException e) {  
  17.             System.err.println("URL ");  
  18.             e.printStackTrace();  
  19.         } catch (RemoteException e) {  
  20.             System.err.println(" ");  
  21.             e.printStackTrace();  
  22.         } catch (NotBoundException e) {  
  23.             System.err.println(" ");  
  24.             e.printStackTrace();  
  25.         }  
  26.     }  

以上がすべてのrmiリモートコールコードです!実行結果は次のとおりです.
はい、私も簡単にrmiを理解しただけで、後でrmiをするプロジェクトがあれば深く入り込むことができます!ほほほ  ,ここで私は突然感じて、webサービスも彼と同じ原理のはずだと思います!
横型自吸ポンプ43ステンレスロータポンプ
立式汚染排出ポンプ12配管汚染排出ポンプ26液下汚染排出ポンプ