Changes between Version 2 and Version 3 of ThreeTierArchitecture


Ignore:
Timestamp:
Feb 17, 2005 4:00:24 PM (15 years ago)
Author:
hauma
Comment:

Adjusted description to the change: Using the JavaParty transparency layer from within the middle-tier.

Legend:

Unmodified
Added
Removed
Modified
  • ThreeTierArchitecture

    v2 v3  
    33
    44The concept of a JavaParty RMI server application is described in ticket:224. A proof of concept implementation is provided by the classes {{{PartyWorker}}}, {{{PartyServer}}}, and {{{PartyClient}}} in the package
    5 {{{jp.lang}}}.
     5{{{jp.example.rmiserver}}}.
    66
    77== PartyWorker ==
     
    1313The {{{PartyServer}}} builds the middle tier, moderating between the RMI clients and the JavaParty runtime environment. The {{{PartyServer}}} operates as front-end on a separate machine outside the compute cluster. The {{{PartyServer}}} itself is a RMI server application that can be contacted by clients using regular RMI. It offers the remote method {{{gotoParty()}}}, which implements a regular RMI remote interface {{{PartyServer_intf}}}. Upon startup, the {{{PartyServer}}} contacts a running JavaParty environment and forwards compute requests sent by client applications to cluster nodes. The {{{PartyServer}}} is compiled after the {{{PartyWorker}}} class using the regular javac compiler.
    1414
    15 In the demo application, the {{{PartyServer}}} creates a new {{{PartyWorker}}} for each call to {{{gotoParty()}}} and calls the {{{party()}}} method on this remote worker object. To implement the {{{PartyServer}}}, some details of the JavaParty transformation and the KaRMI internal structures must be known. This is the fact, because for cummunication with the JavaParty-remote {{{PartyWorker}}} object, the JavaParty transparent handles cannot be used, because the {{{PartyServer}}} runs outside the distributed environment. Therefore, remote object creation (within the distributed environment) must simulate the JavaParty transformation by hand.
     15In the demo application, the {{{PartyServer}}} creates a new {{{PartyWorker}}} for each call to {{{gotoParty()}}} and calls the {{{party()}}} method on this remote worker object.
     16
     17To use the JavaParty transparency layer in the {{{PartyServer}}} class, the JavaParty runtime is initialized specially, because the virtual machine running the {{{PartyServer}}} is not part of the distributed runtime environment. The same trick is used as in a virtual machine acting as front-end in a regular JavaParty application with a GUI (when using the "-frontend" switch for jpinvite). Even transparent remote object creation can be used in the front-end machine. This does not even require to compile the {{{PartyServer}}} class with the JavaParty compiler, because handle classes of transparent remote classes initiate the creation of their implementation object from their constructor. The actual implementation object is created in the cluster behind the scenes.
     18
    1619
    1720== PartyClient ==