ОТДАЛЕЧЕНИ ОБЕКТИ- 2

Конфигуриране на java машината - Properties

Properties представляват конфигурационни параметри  използвани от  програмата при нейното изпълнение.  Те се представят чрез двойки от низове свойство/значение (key/value pairs).  

Има два начина на задаване на конфигурационните параметри - чрез използване опцията -D на командния ред във вида:
java -D<key1>=<value1> -D<key2>=<value2>  package.class

или  чрез вмъкване в кода на програмата:

import java.util.Properties;
...
Properties props = System.getProperties();
props.put(key,value);      // key, value   като низове

Всяка програма има подразбиращи се конфигурационни параметри. Те могат да бъдат видяни например чрез

import java.util.Properties;
public class TestPr {
    public static void main(String[] arg){
        Properties props = System.getProperties();
        System.out.println (props);
    }
}

като отделните конфигурационни параметри са във вида <параметър>=<стойност> и са разделени със запетаи. 

Повече за Properties може да се види тук.

Разделяне на клиента и сървъра

1.Разделяне на файловете в 2 директории

server
client

В директорията server:  (java файловете могат да бъдат свалени от тук)
SampleServer.class
SampleServerImpl.class
SampleServerStart.class


В директорията client    (файловете могат да бъдат свалени от тук)
client.policy
SampleClient.class
SampleServer.class

2. Стартиране на WEB сървър

Има два подхода за осигуряване на класовете stub при клиента - простото им копиране на ръка - тогава при промени в отдалечения обект трябва да се копират отново, или да се заредят чрез стартиран  WEB сървър при отдалечения обект (или чрез NFS)

WEB сървъра трябва да бъде стартиран и директорията, от която да се зареждат, трябва да бъде преместена на обслужвано от WEB сървъра място, което да се вижда например като

http://host/download/

В директорията на WEB сървъра трябва да бъдат поместени файловете (файловете могат да бъдат свалени от тук)

SampleServer.class
SampleServerImpl.class


3.Стартиране на bootstrap registry service

rmiregistry &                                         под Unix

start rmiregistry                                     под Windows

От версия  JDK 7u21 е необходимо да се укаже  откъде ще се зареждат класовете stub (SampleServer.class и  SampleServerImpl.class)

start rmiregistry -J-Djava.rmi.server.codebase=file:///<path-to-remote-classes>/       ако са ще достъпни например чрез NFS или са на една и съща машина с клиента

или

start rmiregistry -J-Djava.rmi.server.codebase=http://host/download/                     ако  ще са достъпни  през  WEB сървъра на машината host

start rmiregistry -J-Djava.rmi.server.codebase=ftp://host/download/                     ако  ще са достъпни  през FTP сървъра на машината host

 Внимание!  http://host/download/   а не  http://host/download

4. Зареждане на обектите - сървъри

java SampleServerStart &              Unix

start java  SampleServerStart            Windows

или

start java  -Djava.rmi.server.hostname=<host> SampleServerStart    

подразбиращият се адрес за host е IP адреса на компютъра

    

5. Промяна на файла за сигурността при клиента

файлът client.policy трябва да разрешава ползването на сокети на портовете над 1023 и да разрешава ползването на WEB сокета - 80:

grant
{
permission java.net.SocketPermission "*:1024-65535", "connect";
permission java.net.SocketPermission "*:80", "connect";
};

6. Стартиране на клиента:

java  SampleClient host        //ако политиката за управление на сигурността е инсталирана в програмата на клиента:

    // set the security manager for the client
System.setProperty("java.security.policy","client.policy");
System.setSecurityManager(new RMISecurityManager());

или

java -Djava.security.policy=client.policy SampleClient host   // ако не е инсталирана