前段時間公司做web service的時候看了一下資料當時看見一個叫rmi的東西(遠程方法調用)最近閒著所以看了一下 感覺挺簡單的!所以寫了一個例子提供給大家把!
rmi的服務端必須要使用接口同時還有接口的實現類!所以下面的兩個文件是接口類和接口的實現類!
UserDao 接口
/** * 遠程接口 必須繼承與Remote對象* @author spring sky * date 年月日 * Email * QQ */ public interface UserDao extends Remote{ /** * 簡單的測試方法* @param name */ public void sayName(String name) throws RemoteException} UserDaoImpl實現類
/** * * 接口的實現類 必須繼承UnicastRemoteObject(單一遠程對象) 實現UserDao自己的接口* @author spring sky * date 年月日 * Email * QQ */ public class UserDaoImpl extends UnicastRemoteObject implements UserDao { public UserDaoImpl() throws RemoteException { } @Override public void sayName(String name) { if(name!=null&&!nameequals())
{ Systemoutprintln(我的名字是+name)}else{ Systemerrprintln(名字不為空……)}對外的提供一個服務服務中已經共享了url給外界訪問
/** * 使用main方法啟動一個服務用於外界環境訪問* @author spring sky * date年月日 * Email * QQ */ public class StartService { private static final String IP = private static final int PORT = private static final String REMOTE_NAME = userDaoprivate static final String REMOTE_URL = rmi://+IP++PORT+/+REMOTE_NAMEpublic static void main(String[] args) { try { UserDao userDao = new UserDaoImpl() //實例化對象LocateRegistrycreateRegistry(PORT) //注冊端口Namingbind(REMOTE_URL userDao) //綁定遠程服務對象Systemoutprintln(遠程+REMOTE_NAME+啟動成功……)} catch (RemoteException e) { Systemerrprintln(遠程對象出錯)eprintStackTrace()} catch (MalformedURLException e) { Systemerrprintln(URL出錯了)eprintStackTrace()} catch (AlreadyBoundException e) { Systemerrprintln(綁定的對象已經存在了)eprintStackTrace()}
上面是服務端的代碼如果啟動沒有任何問題就可以做客戶端訪問了其實客戶端的訪問更加的簡單只需要遠程的接口類和查詢rmi中的url就可以了!
代碼如下
/** * 遠程方法調用測試* @author spring sky * date年月日 * Email * QQ * name石明政*/ public class TestRemote { public static void main(String[] args) { try { //在rmi服務中查詢userdao的對象UserDao userDao = (UserDao) Naminglookup(rmi:///userDao)//調用遠程服務的方法userDaosayName(spring sky)} catch (MalformedURLException e) { Systemerrprintln(URL出錯)eprintStackTrace()} catch (RemoteException e) { Systemerrprintln(遠程對象出錯)eprintStackTrace()} catch (NotBoundException e) { Systemerrprintln(沒有找到綁定的對象)eprintStackTrace()}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26496.html