Chapter 3. ProActive Trouble Shooting

In this section we present common problems encountered while trying to use ProActive. For further assistance, please post your question on the ProActive mailing list proactive@objectweb.org .

3.1. Enabling the loggers

To enable the debuging logger the following log file can be used:

-Dlog4j.configuration=file:ProActive/compile/proactive-log4j

In this file, the relevant loggers can be uncommented (by removing the leading #). For example, the deployment loggers are activated with the following lines:

log4j.logger.proactive.deployment = DEBUG, CONSOLE
log4j.logger.proactive.deployment.log = DEBUG, CONSOLE
log4j.logger.proactive.deployment.process = DEBUG, CONSOLE

3.2. Hostname and IP Address

To function properly, ProActive requires machines to have a correctly configured hostname and domain name. If the names of a machines is not properly configured, then remote nodes will be unable to locate the machine.

To test if the involved machines are properly configured, in L(U)nix you can run the following commands:

$>hostname
localhost     //This is an error!

$>hostname -i
127.0.0.1     //This is an error!

hostname should print the hostname of the machine as known by the other hosts, and hostname -i should return the network interface accessible by other machines.

3.3. Domaine name resolution problems

To work around misconfigured domain names ProActive can be activated to use IP adresses through the following java property:

-Dproactive.useIPaddress=true

This property should be given as parameter to java virtual machines deployed on machines who's names can not be properly resolved.

3.4. RMI Tunneling

ProActive provides rmi tunneling through ssh for crossing firewalls that only allow ssh connections. Things to verify when using rmissh tunneling:

  • ProActlive/lib/jsch.jar must be uncluded in the classpath of the concerned machines.

  • The jvm that is only accesible with ssh must be started using: -Dproactive.communication.protocol=rmissh

  • A key without a passhprase must be installed on the machine accepting connections with ssh. It should be possible to log into the site without using an ssh-agent and without providing a password.

3.5. Public remote method calls

Methods that will be called remotely on an active object must be public. While java will impose this restriction between classes of different types, this problem usually takes place when invoking a remote method on an object of the same type.

class A{

  public void foo(A a){ 
   ...
   a.bar();           //This call will not be handled by the remote active object!!!
   ...
  }

  private void bar(){  //To fix this, change this method to public.
   ...
  }
}