Tips och Trix
På denna sida kommer vi att lista svaren på vanliga problem.
Sidan kommer att uppdateras under kursens gång.
Installation- och konfigurations-problem
Jag får word too long när jag försöker sourca
$GLOBUS_LOCATION/etc/globus-devel-env.csh
Detta beror på att en buffer i tcsh är för snålt tilltagen.
Använd bash i stället för tcsh och sourca globus-devel-env.sh
så funkar det bättre.
grid-proxy-init misslyckas: "Proxy verify failed: Unable to load CA certificates"
Felet kan bero på en namnkonflikt mellan din egen globus-installation och
institutionens globus-installation. Din egen globus-installation innehåller
nämligen också ett grid-proxy-init script som dock inte är konfigurerat med
rätt uppsättning CA-certifikat. Beroende på hur du satt upp din PATH kan det
vara grid-proxy-init från din egen installation som körs. Således gäller det
att köra grid-proxy-init från institutionens installation vilket enklast
görs genom att ange full sökväg:
/pkg/gt4/4.0.1/bin/grid-proxy-init
Programmering
Min container får OutOfMemoryError!
Öka mängden minne i globus-containern genom att sätta följande flaggor
innan ni startar containern:
export GLOBUS_OPTIONS="-Xms512m -Xmx1024m"
Mitt program tappar sina exekveringsrättigheter när jag överför det med GridFTP!
FTP-protokollet specifierar att filrättigheter ej bevaras vid
överföring. Ett sätt att lösa detta är att skicka in ett Grid-jobb
som kör chmod +x my_program innan man skickar
in Grid-jobbet som kör my_program.
Ett snabbare, men inte lika standardiserat sätt
är använda sig av CHMOD kommandot som en del FTP-servrar
(inklusive Globus GridFTP) stöder.
Om man skickar kommandot "SITE CHMOD 755 /path/to/my_program" på
kontrollkanalen (se klassen
GridFTPControlChannel),
chmoddas filen om.
Jag kan inte kompilera mitt testprogram för GRAM!
När kompilatorn klagar på cannot find symbol
och inte hittar vissa klasser för GRAM beror det på att
er classpath är felsatt. För att ordna detta,
sourca in $GLOBUS_LOCATION/etc/globus-devel-env.{csh,sh},
där GLOBUS_LOCATION pekar på "stora" containern,
/opt/globus/4.0.1 på svampbob-maskinerna respektive
/pkg/gt4/4.0.1 i labsalarna.
Om ni senare vill använda en viss .jar-fil, exempelvis
gram-utils.jar som en del i er service (som kör i er
"lilla" container), kopiera denna .jar-fil till ./lib-katalogen
under katalogen där koden till er service finns, så kommer build.xml att
se till att den deployas i er container.
I vilken .jar-fil finns klassen XYZ?
Följande lilla skript kan användas för att söka igenom
.jar-filerna efter en viss klass.
Hur konverterar jag en ResourceProperty till dess rätta typ?
Designidén är att en ResourceProperty skall kunna lagra vad som helst
(vi kan definiera godtycklig typ som ResourceProperty i den wsdl-fil som
beskriver vår service). Implementationsmässigt innebär detta att när
getResourceProperty(...) anropas, serialiserar globus-containern
ResourcePropertyn till en array av MessageElements som returneras till klienten i
ett GetResourcePropertyResponse-objekt. För att omvandla dessa till den typ som vi
har definierat (MyRPClass) kan följande kod användas på klient-sidan:
GetResourcePropertyResponse rpResponse = myService.getResourceProperty(MY_RP_QNAME);
MessageElement elements[] = rpResponse.get_any();
Object properties[] = ObjectDeserializer.toObject(elements, MyRPClass.class);
MyRPClass props[] = new MyRPClass[properties.length];
for(int i = 0; i < props.length; i++) {
props[i] = (MyRPClass) properties[i];
}
|