The ptolemy.distributed package domain is an extended version of the existing Synchronous Dataflow (SDF) domain that performs the simulation in a distributed manner.

The ptolemy.distributed package was developed by Daniel Lazaro Cuadrado (Aalborg University).

The ptolemy.distributed package uses Jini, which is "a network architecture for the construction of distributed systems in the form of modular co-operating services".

Building the ptolemy.distributed package

We include Jini jar files in $PTII/ptolemy/distributed/jini/jar/.

When ./configure in the $PTII directory, is run, it searches for the Jini jar files and sets corresponding variables in $PTII/mk/ptII.mk for use by make and $PTII/.classpath for use by Eclipse.

Building Ptolemy using configure

If you are running configure to setup your environment and then running make or using Eclipse, then do:

cd $PTII
./configure
You should see:
checking for jini directory... /home/eecs/cxh/ptII/ptolemy/distributed/jini
checking for jars used by jini... jini-core.jar jini-ext.jar sun-util.jar ok
If, instead, you see
checking for jini directory... configure: WARNING: Perhaps Jini is not installed?
    You need not download Jini unless you plan on use the
    distributed Ptolemy feature in ptolemy/distributed.
    Jini can be downloaded from http://www.jini.org, the
    jini-core.jar jini-ext.jar sun-util.jar copied to
    $PTII/ptolemy/distributed/jini/jars
    and configure rerun.
Then you need to obtain jini from http://www.jini.org, place jini-core.jar, jini-ext.jar and sun-util.jar in $PTII/ptolemy/jini/jars and rerun configure.

If you are not using configure, then you will need to add the jar files by hand to the classpath of your tool.

Note that the $PTII/.classpath.default file that can be used to set up Eclipse excludes ptolemy/distributed, so if you are using Eclipse do not use $PTII/.classpath.default. Instead, use configure as per $PTII/doc/coding/eclipse.htm.

Problems

Eclipse Problems

Note that under Eclipse you must run configure and add the jini jar files to your build path. See above for details.

access denied error while running

ptolemy.kernel.util.IllegalActionException: Failed to initialize Jini
  in .Sleep.Distributed SDF Director
Because:
Failed to initialize ClientServerInteractionManager using "c:/Documents and Settings/cxh/workspace/ptII\ptolemy\distributed\config\ClientServerInteractionManager.config"
        at ptolemy.distributed.domains.sdf.kernel.DistributedSDFDirector.initializeJini(DistributedSDFDirector.java:764)
        at ptolemy.distributed.domains.sdf.kernel.DistributedSDFDirector.initialize(DistributedSDFDirector.java:306)
        at ptolemy.actor.CompositeActor.initialize(CompositeActor.java:605)
        at ptolemy.actor.Manager.initialize(Manager.java:585)
        at ptolemy.actor.Manager.execute(Manager.java:321)
        at ptolemy.actor.Manager.run(Manager.java:1070)
        at ptolemy.actor.Manager$3.run(Manager.java:1111)
Caused by: java.lang.RuntimeException: Failed to initialize ClientServerInteractionManager using "c:/Documents and Settings/cxh/workspace/ptII\ptolemy\distributed\config\ClientServerInteractionManager.config"
        at ptolemy.distributed.client.ClientServerInteractionManager.init(ClientServerInteractionManager.java:172)
        at ptolemy.distributed.domains.sdf.kernel.DistributedSDFDirector.initializeJini(DistributedSDFDirector.java:760)
        ... 6 more
Caused by: java.security.AccessControlException: access denied (java.security.SecurityPermission getPolicy)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
        at java.security.AccessController.checkPermission(AccessController.java:546)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
        at java.security.Policy.getPolicy(Policy.java:137)
        at net.jini.security.Security$6.run(Security.java:779)
        at java.security.AccessController.doPrivileged(Native Method)
        at net.jini.security.Security.getPolicy(Security.java:778)
        at net.jini.security.Security.getContext(Security.java:468)
        at net.jini.discovery.LookupDiscovery.(LookupDiscovery.java:690)
        at net.jini.discovery.LookupDiscoveryManager.beginDiscovery(LookupDiscoveryManager.java:1508)
        at net.jini.discovery.LookupDiscoveryManager.(LookupDiscoveryManager.java:887)
        at ptolemy.distributed.client.ClientServerInteractionManager.init(ClientServerInteractionManager.java:166)
        ... 7 more
Caused by: java.lang.RuntimeException: Failed to initialize ClientServerInteractionManager using "c:/Documents and Settings/cxh/workspace/ptII\ptolemy\distributed\config\ClientServerInteractionManager.config"
        at ptolemy.distributed.client.ClientServerInteractionManager.init(ClientServerInteractionManager.java:172)
        at ptolemy.distributed.domains.sdf.kernel.DistributedSDFDirector.initializeJini(DistributedSDFDirector.java:760)
        at ptolemy.distributed.domains.sdf.kernel.DistributedSDFDirector.initialize(DistributedSDFDirector.java:306)
        at ptolemy.actor.CompositeActor.initialize(CompositeActor.java:605)
        at ptolemy.actor.Manager.initialize(Manager.java:585)
        at ptolemy.actor.Manager.execute(Manager.java:321)
        at ptolemy.actor.Manager.run(Manager.java:1070)
        at ptolemy.actor.Manager$3.run(Manager.java:1111)
Caused by: java.security.AccessControlException: access denied (java.security.SecurityPermission getPolicy)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
        at java.security.AccessController.checkPermission(AccessController.java:546)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
        at java.security.Policy.getPolicy(Policy.java:137)
        at net.jini.security.Security$6.run(Security.java:779)
        at java.security.AccessController.doPrivileged(Native Method)
        at net.jini.security.Security.getPolicy(Security.java:778)
        at net.jini.security.Security.getContext(Security.java:468)
        at net.jini.discovery.LookupDiscovery.(LookupDiscovery.java:690)
        at net.jini.discovery.LookupDiscoveryManager.beginDiscovery(LookupDiscoveryManager.java:1508)
        at net.jini.discovery.LookupDiscoveryManager.(LookupDiscoveryManager.java:887)
        at ptolemy.distributed.client.ClientServerInteractionManager.init(ClientServerInteractionManager.java:166)
        ... 7 more
Solution:

In Eclipse, go to Run -> Open Run Dialog -> In the "Arguments" tab, enter the following line including the double quotes.

"-Djava.security.policy=${workspace_loc:ptII/bin/policy.all}"

@since Ptolemy II 5.1