Remote


Wstęp

jPALIO udostępnia narzędzia do łatwego komunikowania się pomiędzy kilkoma serwerami jPALIO. Należy jednak pamiętać, że opisywany poniżej mechanizm opiera się na binarnej serializacji obiektów Java i może służyć tylko do przesyłania obiektów implementujących interfejsy Serializable bądź Externalizable (z pakietu java.io). Jeżeli te ograniczenia są dla Ciebie zbyt ciężki, rozważ komunikację przy użyciu Web Services. Jeżeli jednak masz taką możliwość, warto wykorzystać ten mechanizm ze względu na wysoką wydajność komunikacji i łatwość użytkowania.

Konfiguracja

Komunikacja przy użyciu modułu Remote jest jednostronna. Oznacza to, że po skonfigurowaniu dostępu, serwer źródłowy będzie mógł wywoływać określone akcje na serwerze docelowym. Jeżeli chcesz aby komunikacja mogła być dwustronna, musisz powtórzyć konfigurację w stronę przeciwną.

Aby skonfigurować połączenie od serwera A do serwera B należy:

Zobacz także:


[Remote] Konfiguracja konektora
[Remote] Konfiguracja listenera
[Remote] Przykłady
 

Przykładowa konfiguracja

Załóżmy następująca konfigurację wyjściową:

Pierwszym punktem jest dodanie definicji konektora do konfiguracji instancji source na serwerze A:

    <connector name="remote" url="remote://192.168.0.2:5454/target" refresh="0" traceRead="true">
      <user>jpalio</user>
      <password>torn</password>
      <timeout>0</timeout>
      <resetCounter>2000</resetCounter>
    </connector>

Drugim punktem jest dodanie definicji listenera do konfiguracji instancji target na serwerze B: 

    <listener name="remote">
        <class>palio.listeners.RemoteListener</class>
        <port>5454</port>
        <user>jpalio</user>
        <password>torn</password>
        <modules> user palio logic mth sql </modules>
        <objects> remote.object1 remote.object2 </objects>
    </listener>
Teraz możesz już wywoływać akcje na serwerze B w kodzie obiektu na serwerze A przy pomocy wywołania:
$=(@users, (Object[])$remote.invoke(remote, sql, readLine, ["select count(*) from P_USERS"]))
<p>W instancji target na serwerze 192.168.0.2 jest $@users[0] użytkowników.</p>