Hm, can you please try the attached (simple) client and tell if it
fails for you with the same error message, too?
It works for me with GT 4.2.1.
Replace HOST and PORT with appropriate values before you compile it.
Build and run (bash):
source $GLOBUS_LOCATION/etc/globus-devel-env.sh
javac GramClient42.java
grid-proxy-init
java -DGLOBUS_LOCATION=$GLOBUS_LOCATION GramClient42
-Martin
Mosoi Stefan wrote:
> Hello,
> I have a problem when trying to launch a gram job in Globus Toolkit 4.2.1
> using the code:
> JobDescriptionType type = new JobDescriptionType();
> type.setExecutable("/bin/echo");
> type.setArgument(new String[]{"test"});
> type.setDirectory("/tmp");
> type.setStdout("/home/stefan/std.out");
> type.setStderr("/home/stefan/std.err");
> type.setJobType(JobTypeEnumeration.single);
> GramJob crtjob=new GramJob(type);
>
> ............
> this.crtJob.setCredentials(proxy);
> this.crtJob.addListener(this);
> this.crtJob.setAuthorization(NoAuthorization.getInstance());
> ............
> this.crtJob.submit(factoryEPR, false, true, jobID);
>
> I get the following errors :
> AxisFault
> faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
> faultSubcode:
> faultString: java.io.IOException: java.io.IOException: java.io.IOException:
> Non nillable element 'consumerReference' is null.
> faultActor:
> faultNode:
> faultDetail:
> {http://xml.apache.org/axis/}stackTrace:java.io.IOException:
> java.io.IOException: java.io.IOException: Non nillable element
> 'consumerReference' is null.
> at
> org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:288)
> at
> org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1518)
> at
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:994)
> at
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:815)
> at org.apache.axis.message.RPCParam.serialize(RPCParam.java:208)
> at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
> at
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
> at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
> at
> org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
> at
> org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:314)
> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:268)
> at org.apache.axis.Message.writeTo(Message.java:539)
> at
> org.apache.axis.transport.http.CommonsHTTPSender$MessageRequestEntity.writeRequest(CommonsHTTPSender.java:878)
> at
> org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:495)
> at
> org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:1973)
> at
> org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:993)
> at
> org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
> at
> org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
> at
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
> at
> org.apache.axis.transport.http.CommonsHTTPSender.invoke(CommonsHTTPSender.java:224)
> at
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
> at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
> at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
> at
> org.apache.axis.client.AxisClient.invokeTransport(AxisClient.java:150)
> at org.apache.axis.client.AxisClient.invoke(AxisClient.java:289)
> at org.apache.axis.client.Call.invokeEngine(Call.java:2838)
> at org.apache.axis.client.Call.invoke(Call.java:2824)
> at org.apache.axis.client.Call.invoke(Call.java:2501)
> at org.apache.axis.client.Call.invoke(Call.java:2424)
> at org.apache.axis.client.Call.invoke(Call.java:1835)
> at
> org.globus.exec.generated.bindings.ManagedJobFactoryPortTypeSOAPBindingStub.createManagedJob(ManagedJobFactoryPortTypeSOAPBindingStub.java:1644)
> at org.globus.exec.client.GramJob.createJobEndpoint(GramJob.java:1565)
> at org.globus.exec.client.GramJob.submit(GramJob.java:495)
> at jobManagement.impl.JobManager.processCrtJob(JobManager.java:161)
> at jobManagement.impl.JobManager.run(JobManager.java:103)
> AxisFault
> faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
> faultSubcode:
> faultString: org.xml.sax.SAXParseException: Premature end of file.
> faultActor:
> faultNode:
> faultDetail:
> {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException:
> Premature end of file.
> at
> org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
> Source)
> at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
> at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
> at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
> at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown
> Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown
> Source)
> at javax.xml.parsers.SAXParser.parse(Unknown Source)
> at
> org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
> at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:695)
> at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
> at
> org.globus.axis.message.addressing.handler.AddressingHandler.processServerRequest(AddressingHandler.java:396)
> at
> org.globus.wsrf.handlers.AddressingHandler.processServerRequest(AddressingHandler.java:115)
> at
> org.globus.axis.message.addressing.handler.AddressingHandler.invoke(AddressingHandler.java:136)
> at
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
> at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
> at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
> at org.apache.axis.server.AxisServer.invokeService(AxisServer.java:199)
> at org.apache.axis.server.AxisServer.invoke(AxisServer.java:375)
> at
> org.globus.wsrf.container.ServiceThread.doPost(ServiceThread.java:949)
> at
> org.globus.wsrf.container.ServiceThread.process(ServiceThread.java:684)
> at
> org.globus.wsrf.container.GSIServiceThread.process(GSIServiceThread.java:182)
> at org.globus.wsrf.container.ServiceThread.run(ServiceThread.java:471)
>
>
> org.xml.sax.SAXParseException: Premature end of file.
> at org.apache.axis.AxisFault.makeFault(AxisFault.java:104)
> at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:700)
> at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
> at
> org.globus.axis.message.addressing.handler.AddressingHandler.processServerRequest(AddressingHandler.java:396)
> at
> org.globus.wsrf.handlers.AddressingHandler.processServerRequest(AddressingHandler.java:115)
> at
> org.globus.axis.message.addressing.handler.AddressingHandler.invoke(AddressingHandler.java:136)
> at
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
> at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
> at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
> at org.apache.axis.server.AxisServer.invokeService(AxisServer.java:199)
> at org.apache.axis.server.AxisServer.invoke(AxisServer.java:375)
> at
> org.globus.wsrf.container.ServiceThread.doPost(ServiceThread.java:949)
> at
> org.globus.wsrf.container.ServiceThread.process(ServiceThread.java:684)
> at
> org.globus.wsrf.container.GSIServiceThread.process(GSIServiceThread.java:182)
> at org.globus.wsrf.container.ServiceThread.run(ServiceThread.java:471)
> Caused by: org.xml.sax.SAXParseException: Premature end of file.
> at
> org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
> Source)
> at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
> at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
> at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
> at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown
> Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown
> Source)
> at javax.xml.parsers.SAXParser.parse(Unknown Source)
> at
> org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
> at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:695)
> ... 13 more
>
>
>
> If anyone can help .. please do...
>
> The whole source code of the program can be found at
> http://code.google.com/p/ogjms/ (if i missed something ...)
>
> Thank you,
> Stefan Mosoi
>
import java.util.concurrent.CountDownLatch;
import org.globus.axis.message.addressing.Address;
import org.globus.axis.message.addressing.EndpointReferenceType;
import org.globus.exec.client.GramJob;
import org.globus.exec.client.GramJobListener;
import org.globus.exec.generated.StateEnumeration;
import org.globus.exec.generated.JobDescriptionType;
import org.globus.exec.generated.JobTypeEnumeration;
import org.globus.wsrf.impl.security.authentication.Constants;
import org.globus.wsrf.security.authorization.client.Authorization;
import org.globus.wsrf.impl.security.authorization.HostAuthorization;
/*
* Prepare:
* Adjust the fields address and maybe jobDescription in the code
*
* Compile:
* Make sure the Globus jars are in your classpath
* (On Linux: source ${GLOBUS_LOCATION}/etc/globus-devel-env.sh)
* javac GramCleint42.java
*
* Run:
* java -DGLOBUS_LOCATION=${GLOBUS_LOCATION} GramClient42
*
*/
public class GramClient42 implements GramJobListener
{
private CountDownLatch latch = new CountDownLatch(1);
private String address =
"https://HOST:PORT/wsrf/services/ManagedJobFactoryService";
public static void main (String args[])
{
GramClient42 client = new GramClient42();
System.out.print("Submitting job ... ");
try {
client.submitJob();
System.out.println("Done");
System.out.println("Waiting for notification messages ...");
client.latch.await();
} catch (Exception e) {
e.printStackTrace();
}
}
public void submitJob() throws Exception
{
// Create factory epr. No ReferenceParameters needed if we
// submit to the default local resource manager defined on the server-side
EndpointReferenceType endpoint = new EndpointReferenceType();
endpoint.setAddress(new Address(this.address));
// Setup security
Authorization authz = HostAuthorization.getInstance();
boolean batchMode = false;
boolean limitedDelegation = false;
JobDescriptionType type = new JobDescriptionType();
type.setExecutable("/bin/sleep");
type.setArgument(new String[]{"1"});
type.setJobType(JobTypeEnumeration.single);
GramJob job = new GramJob(type);
job.setAuthorization(authz);
job.setMessageProtectionType(Constants.ENCRYPTION);
job.setDelegationEnabled(false);
job.addListener(this);
job.submit(endpoint, batchMode, limitedDelegation, null);
}
// GramJob calls this method when a job changes its state
// It's part of GramJobListener Interface
public void stateChanged(GramJob job)
{
StateEnumeration jobState = job.getState();
System.out.println("-- Got state notification: job is in state " +
jobState);
try {
job.refreshStatus();
} catch (Exception e) {
e.printStackTrace();
}
if (jobState.equals(StateEnumeration.Done) ||
jobState.equals(StateEnumeration.Failed)) {
System.out.print("Job finished.\nDestroying job resource ... ");
try {
job.removeListener(this);
job.terminate(true, false, false);
System.out.println("Done");
} catch (Exception e) {
e.printStackTrace();
} finally {
this.latch.countDown();
}
}
}
}