Java遠程方法調用RMI

來源:文萃谷 2.42W

rmi的服務端,必須要使用接口,同時還有接口的實現類!所以下面的兩個文件是接口類和接口的實現類!下面一起學習一下吧!

Java遠程方法調用RMI

UserDao 接口:

/**

* 遠程接口 必須繼承與Remote對象

* @author spring sky

* date: 20xx年2月7日 10:55:05

*

* QQ:xxxxxx

*/

public interface UserDao extends Remote{

/**

* 簡單的測試方法

* @param name

*/

public void sayName(String name) throws RemoteException;

}

UserDaoImpl實現類

/**

*

* 接口的實現類 必須繼承UnicastRemoteObject(單一遠程對象) 實現UserDao自己的接口

* @author spring sky

* date: 2xxx年2月7日 10:56:05

*

* QQ:xxxxxx

*/

public class UserDaoImpl extends UnicastRemoteObject implements UserDao {

public UserDaoImpl() throws RemoteException {

}

@Override

public void sayName(String name) {

if(name!=null&&!ls(""))

{

tln("我的名字是:"+name);

}else{

tln("名字不為空....");

}

}

}

對外的提供一個服務,服務中已經共享了url給外界訪問

/**

* 使用main方法啟動一個服務,用於外界環境訪問

* @author spring sky

* date:2xxx年2月7日 10:57:37

*

* QQ:xxxxx

*/

public class StartService {

private static final String IP = "";

private static final int PORT = 9999;

private static final String REMOTE_NAME = "userDao";

private static final String REMOTE_URL = "rmi://"+IP+":"+PORT+"/"+REMOTE_NAME;

public static void main(String[] args) {

try {

UserDao userDao = new UserDaoImpl(); //實例化對象

teRegistry(PORT); //註冊端口

(REMOTE_URL, userDao); //綁定遠程服務對象

tln("遠程"+REMOTE_NAME+"啟動成功....");

} catch (RemoteException e) {

tln("遠程對象出錯");

tStackTrace();

} catch (MalformedURLException e) {

tln("URL出錯了");

tStackTrace();

} catch (AlreadyBoundException e) {

tln("綁定的對象已經存在了");

tStackTrace();

}

}

}

上面是服務端的代碼,如果啟動沒有任何問題,就可以做客户端訪問了,其實客户端的訪問更加的簡單,只需要遠程的接口類和查詢rmi中的'url就可以了!

  代碼如下:

/**

* 遠程方法調用測試

* @author spring sky

* date:2xxx年2月7日 11:12:46

*

* QQ:xxxxx

* name:石明政

*/

public class TestRemote {

public static void main(String[] args) {

try {

//在rmi服務中查詢userdao的對象

UserDao userDao = (UserDao) up("rmi://");

//調用遠程服務的方法

ame("spring sky");

} catch (MalformedURLException e) {

tln("URL出錯");

tStackTrace();

} catch (RemoteException e) {

tln("遠程對象出錯");

tStackTrace();

} catch (NotBoundException e) {

tln("沒有找到綁定的對象");

tStackTrace();

}

}

}

以上就是所有的rmi遠程調用代碼了!運行結果如下:

好了,本人也只是簡單的瞭解了rmi,如果以後有項目做rmi就可以深入了! 呵呵 ,在這裏我突然感覺,想web service也應該和他一樣的原理的把!

熱門標籤