閱讀927 返回首頁    go 技術社區[雲棲]


關於RMI服務端端口定製的處理辦法

文章標題: 關於RMI服務端端口定製的處理辦法

 

作者: javaboy2012
Email:yanek@163.com
qq:    1046011462


關於RMI服務器對外提供服務通常需要兩個端口:

注冊端口和服務端口

如果不做處理,每次啟動服務,提供服務的端口會改變,如果需要固定下來需要做如下處理:


編寫一個類如下:

package com.yanek.rmi;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.rmi.server.RMISocketFactory;

public class CustomSocket extends RMISocketFactory {

 /**
  * @param args
  */
 public static void main(String[] args) {


 }

 @Override
 public ServerSocket createServerSocket(int port) throws IOException {
  
  if (port==0)
  {
   port=8866;
  }
  return new ServerSocket(port);
 }

 @Override
 public Socket createSocket(String host, int port) throws IOException {

  System.out.println("host:"+host+" port:"+port);
  return new Socket(host,port);
 }

}

 

這樣服務端口就是固定為8866了。

注冊的端口在啟動服務的類裏設置:

如下為啟動的類:

package com.yanek.cms.rmi;

import java.io.IOException;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.RMISocketFactory;

public class RMIServer {

 /**
  * @param args
  */
 public static void main(String[] args) {

  try {
   

   CustomSocket cs=new CustomSocket();
   try {
    RMISocketFactory.setSocketFactory(cs);
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   
   
   LocateRegistry.createRegistry(1099);
   Naming.rebind("UserFav", UserFav.getInstance());
   
   System.out.println("RMI Server ready.");
   
  } catch (RemoteException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

}


這樣,服務程序就通過 8866和1099 對外 提供服務了,設置防火牆隻要設置這兩個端口開放就可以了。

 

最後更新:2017-04-03 22:15:47

  上一篇:go 我眼中的技術高手
  下一篇:go Android一鍵鎖屏開發全過程