Hi people, I'm writing a service (very simple service) in GT4 that does submission of jobs (using java CoG kit abstractions). This servise print in container log one message (the message is the parameters of the method). But when I run a client to test the web service, I don't have sucess...
I saw following error message in globus container log: ------------------------------------8<-------------------------------------------- ... [16]: https://172.16.132.201:8443/wsrf/services/HelloworldService ... Job failed: AxisFault faultCode: {http://xml.apache.org/axis/}Server.NoService<http://xml.apache.org/axis/%7DServer.NoService> faultSubcode: faultString: The AXIS engine could not find a target service to invoke! targetService is null faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:The<http://xml.apache.org/axis/%7DstackTrace:The>AXIS engine could not find a target service to invoke! targetService is null at org.apache.axis.server.AxisServer.invoke(AxisServer.java:269) at org.globus.wsrf.container.ServiceThread.doPost(ServiceThread.java:664) at org.globus.wsrf.container.ServiceThread.process(ServiceThread.java:382) at org.globus.wsrf.container.GSIServiceThread.process(GSIServiceThread.java:147) at org.globus.wsrf.container.ServiceThread.run(ServiceThread.java:291) {http://xml.apache.org/axis/}hostname:mainha<http://xml.apache.org/axis/%7Dhostname:mainha> The AXIS engine could not find a target service to invoke! targetService is null at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:221) at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:128) at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(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 javax.xml.parsers.SAXParser.parse(SAXParser.java:375) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:645) at org.apache.axis.Message.getSOAPEnvelope(Message.java:424) at org.apache.axis.message.addressing.handler.AddressingHandler.processClientResponse(AddressingHandler.java:305) at org.apache.axis.message.addressing.handler.AddressingHandler.invoke(AddressingHandler.java:110) 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.invoke(AxisClient.java:190) at org.apache.axis.client.Call.invokeEngine(Call.java:2727) at org.apache.axis.client.Call.invoke(Call.java:2710) at org.apache.axis.client.Call.invoke(Call.java:2386) at org.apache.axis.client.Call.invoke(Call.java:2309) at org.apache.axis.client.Call.invoke(Call.java:1766) at org.globus.exec.generated.bindings.ManagedJobFactoryPortTypeSOAPBindingStub.getMultipleResourceProperties(ManagedJobFactoryPortTypeSOAPBindingStub.java:1219) at org.globus.exec.client.GramJob.fetchDelegationFactoryEndpoints(GramJob.java:651) at org.globus.exec.client.GramJob.populateJobDescriptionEndpoints(GramJob.java:513) at org.globus.exec.client.GramJob.submit(GramJob.java:458) at org.globus.cog.abstraction.impl.execution.gt4_0_0.JobSubmissionTaskHandler.submit(JobSubmissionTaskHandler.java:171) at org.globus.cog.abstraction.impl.common.AbstractTaskHandler.submit(AbstractTaskHandler.java:69) at org.globus.exemplos.helloworld.impl.JobSubmission.submitTask(JobSubmission.java:191) at org.globus.exemplos.helloworld.impl.HelloworldService.writeMessage(HelloworldService.java:27) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:384) at org.globus.axis.providers.RPCProvider.invokeMethodSub(RPCProvider.java:107) at org.globus.axis.providers.PrivilegedInvokeMethodAction.run(PrivilegedInvokeMethodAction.java:42) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.globus.gsi.jaas.GlobusSubject.runAs(GlobusSubject.java:55) at org.globus.gsi.jaas.JaasSubject.doAs(JaasSubject.java:90) at org.globus.axis.providers.RPCProvider.invokeMethod(RPCProvider.java:97) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:281) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:319) 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.handlers.soap.SOAPService.invoke(SOAPService.java:450) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:285) at org.globus.wsrf.container.ServiceThread.doPost(ServiceThread.java:664) at org.globus.wsrf.container.ServiceThread.process(ServiceThread.java:382) at org.globus.wsrf.container.GSIServiceThread.process(GSIServiceThread.java:147) at org.globus.wsrf.container.ServiceThread.run(ServiceThread.java:291) 2008-10-22 11:53:58,137 WARN gt4_0_0.JobSubmissionTaskHandler [ServiceThread-16,cleanup:352] Unable to destroy remote service for task urn:cog-1224687237279 java.lang.NullPointerException at org.globus.exec.generated.service.ManagedJobServiceAddressingLocator.getManagedJobPortTypePort(ManagedJobServiceAddressingLocator.java:12) at org.globus.exec.utils.client.ManagedJobClientHelper.getPort(ManagedJobClientHelper.java:32) at org.globus.exec.client.GramJob.release(GramJob.java:1489) at org.globus.cog.abstraction.impl.execution.gt4_0_0.JobSubmissionTaskHandler.cleanup(JobSubmissionTaskHandler.java:348) at org.globus.cog.abstraction.impl.execution.gt4_0_0.JobSubmissionTaskHandler.submit(JobSubmissionTaskHandler.java:185) at org.globus.cog.abstraction.impl.common.AbstractTaskHandler.submit(AbstractTaskHandler.java:69) at org.globus.exemplos.helloworld.impl.JobSubmission.submitTask(JobSubmission.java:191) at org.globus.exemplos.helloworld.impl.HelloworldService.writeMessage(HelloworldService.java:27) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:384) at org.globus.axis.providers.RPCProvider.invokeMethodSub(RPCProvider.java:107) at org.globus.axis.providers.PrivilegedInvokeMethodAction.run(PrivilegedInvokeMethodAction.java:42) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.globus.gsi.jaas.GlobusSubject.runAs(GlobusSubject.java:55) at org.globus.gsi.jaas.JaasSubject.doAs(JaasSubject.java:90) at org.globus.axis.providers.RPCProvider.invokeMethod(RPCProvider.java:97) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:281) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:319) 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.handlers.soap.SOAPService.invoke(SOAPService.java:450) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:285) at org.globus.wsrf.container.ServiceThread.doPost(ServiceThread.java:664) at org.globus.wsrf.container.ServiceThread.process(ServiceThread.java:382) at org.globus.wsrf.container.GSIServiceThread.process(GSIServiceThread.java:147) at org.globus.wsrf.container.ServiceThread.run(ServiceThread.java:291) Submission Exception: Cannot submit job: The AXIS engine could not find a target service to invoke! targetService is null -------------------------------8<-------------------------------------------- My wsdl file: -------------------------------8<-------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <definitions name="HelloworldService" targetNamespace=" http://topgrid.dcc.ufba.br/namespaces/grid/apps/HelloworldService_instance" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns=" http://topgrid.dcc.ufba.br/namespaces/grid/apps/HelloworldService_instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlpp="http://www.globus.org/namespaces/2004/10/WSDLPreprocessor" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!-- Types --> <types> <xsd:schema targetNamespace=" http://topgrid.dcc.ufba.br/namespaces/grid/apps/HelloworldService_instance" xmlns:tns=" http://topgrid.dcc.ufba.br/namespaces/grid/apps/HelloworldService_instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!-- REQUESTS AND RESPONSES --> <xsd:element name="message" type="xsd:string"/> <xsd:element name="messageResponse"> <xsd:complexType/> </xsd:element> </xsd:schema> </types> <!-- Messages --> <message name="WriteMessageInputMessage"> <part name="parameters" element="tns:message"/> </message> <message name="WriteMessageOutputMessage"> <part name="parameters" element="tns:messageResponse"/> </message> <!-- PortType --> <portType name="HelloWorldPortType"> <operation name="writeMessage"> <input message="tns:WriteMessageInputMessage"/> <output message="tns:WriteMessageOutputMessage"/> </operation> </portType> </definitions> -------------------------------8<-------------------------------------------- My java class of the service: -------------------------------8<-------------------------------------------- package org.globus.exemplos.helloworld.impl; import java.rmi.RemoteException; import org.globus.exemplos.stubs.HelloworldService_instance.MessageResponse; public class HelloworldService { public MessageResponse writeMessage(String message) throws RemoteException { try { // Output in the globus container log System.out.println("Submiting task"); JobSubmission job = new JobSubmission(); StringBuffer specification = new StringBuffer(); specification.append("<job>"); specification.append(" <executable>/bin/echo</executable>"); specification.append(" <argument>" + message + "</argument>"); specification.append(" <stdout>${GLOBUS_USER_HOME}/helloworld.stdout</stdout>"); specification.append(" <stderr>${GLOBUS_USER_HOME}/helloworld.stderr</stderr>"); specification.append("</job>"); job.setJobmanager("FORK"); job.setSpecification(specification.toString()); job.prepareTask(); job.submitTask(); job.waitJob(); System.out.println(job.getExitValue()); } catch (Exception e) { //TODO } return new MessageResponse(); } } -------------------------------8<-------------------------------------------- The java class of JobSubmission is very similar with the example in java cog wiki: http://www.cogkit.org/viewcvs/viewcvs.cgi/src/cog/modules/abstraction-examples/src/org/globus/cog/abstraction/examples/execution/ Finally, my client java class: -------------------------------8<-------------------------------------------- package org.globus.clients.helloworld; import javax.xml.rpc.Stub; import org.globus.axis.util.Util; import org.apache.axis.message.addressing.Address; import org.apache.axis.message.addressing.EndpointReferenceType; import org.globus.wsrf.impl.security.authorization.NoAuthorization; import org.globus.wsrf.security.Constants; import org.globus.exemplos.stubs.HelloworldService_instance.HelloWorldPortType; import org.globus.exemplos.stubs.HelloworldService_instance.service.HelloworldServiceAddressingLocator; public class HelloworldClient { static { Util.registerTransport(); } public HelloWorldPortType getPortType(String URI, boolean security) throws Exception { HelloworldServiceAddressingLocator locator = new HelloworldServiceAddressingLocator(); EndpointReferenceType endpoint = new EndpointReferenceType(); HelloWorldPortType helloworld = null; endpoint.setAddress(new Address(URI)); helloworld = locator.getHelloWorldPortTypePort(endpoint); if (security) { ((Stub) helloworld)._setProperty(Constants.GSI_TRANSPORT, Constants.ENCRYPTION); ((Stub) helloworld)._setProperty(Constants.AUTHORIZATION, NoAuthorization.getInstance()); } return helloworld; } public static void main(String[] args) { try { String URI = " https://172.16.132.201:8443/wsrf/services/HelloworldService"; HelloworldClient client = new HelloworldClient(); HelloWorldPortType helloworld = client.getPortType(URI,true); helloworld.writeMessage("Hello World!"); } catch (Exception e) { e.printStackTrace(); } } } -------------------------------8<-------------------------------------------- Any suggestions to why it does not work ? Thanks. ps: sorry my english... :) -- Saudações, Italo Valcy :: http://twiki.dcc.ufba.br/~ItaloValcy<http://twiki.dcc.ufba.br/%7EItaloValcy> Graduando em Ciência da Computação - DCC/UFBA :: http://www.dcc.ufba.br
