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 [email protected] .
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
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.
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.
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.
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. ... } }
© 2001-2007 INRIA Sophia Antipolis All Rights Reserved