In continuation to my previous thread(Below), I thought attaching the
complete WSDL would be useful. I kept everything as such. For
experimentation, I added findtarget which just returns a string and modified
the Value Resource Property to be of type String. So, my findtarget puts the
specified string into Value.
Here is my WSDL:
------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="MathService"
targetNamespace="
http://www.globus.org/namespaces/examples/core/MathService_instance"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="
http://www.globus.org/namespaces/examples/core/MathService_instance"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsrp="
http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd
"
xmlns:wsrpw="
http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl
"
xmlns:wsdlpp="http://www.globus.org/namespaces/2004/10/WSDLPreprocessor"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:import
namespace=
"
http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl
"
location="../../wsrf/properties/WS-ResourceProperties.wsdl" />
<!--============================================================
T Y P E S
============================================================-->
<types>
<xsd:schema targetNamespace="
http://www.globus.org/namespaces/examples/core/MathService_instance"
xmlns:tns="
http://www.globus.org/namespaces/examples/core/MathService_instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!-- REQUESTS AND RESPONSES -->
<xsd:element name="add" type="xsd:int"/>
<xsd:element name="addResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="subtract" type="xsd:int"/>
<xsd:element name="subtractResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="findtarget">
<xsd:complexType/>
</xsd:element>
<xsd:element name="findtargetResponse" type="xsd:string"/>
<xsd:element name="getValueRP">
<xsd:complexType/>
</xsd:element>
<xsd:element name="getValueRPResponse" type="xsd:string"/>
<!-- RESOURCE PROPERTIES -->
<xsd:element name="Value" type="xsd:string"/>
<!--xsd:element name="LastOp" type="xsd:string"/-->
<xsd:element name="MathResourceProperties">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="tns:Value" minOccurs="1"
maxOccurs="1"/>
<!--xsd:element ref="tns:LastOp" minOccurs="1" maxOccurs="1"/-->
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
<!--============================================================
M E S S A G E S
============================================================-->
<message name="AddInputMessage">
<part name="parameters" element="tns:add"/>
</message>
<message name="AddOutputMessage">
<part name="parameters" element="tns:addResponse"/>
</message>
<message name="SubtractInputMessage">
<part name="parameters" element="tns:subtract"/>
</message>
<message name="SubtractOutputMessage">
<part name="parameters" element="tns:subtractResponse"/>
</message>
<message name="FindtargetInputMessage">
<part name="parameters" element="tns:findtarget"/>
</message>
<message name="FindtargetOutputMessage">
<part name="parameters" element="tns:findtargetResponse"/>
</message>
<message name="GetValueRPInputMessage">
<part name="parameters" element="tns:getValueRP"/>
</message>
<message name="GetValueRPOutputMessage">
<part name="parameters" element="tns:getValueRPResponse"/>
</message>
<!--============================================================
P O R T T Y P E
============================================================-->
<portType name="MathPortType"
wsdlpp:extends="wsrpw:GetResourceProperty"
wsrp:ResourceProperties="tns:MathResourceProperties">
<operation name="add">
<input message="tns:AddInputMessage"/>
<output message="tns:AddOutputMessage"/>
</operation>
<operation name="subtract">
<input message="tns:SubtractInputMessage"/>
<output message="tns:SubtractOutputMessage"/>
</operation>
<operation name="findtarget">
<input message="tns:FindtargetInputMessage"/>
<output message="tns:FindtargetOutputMessage"/>
</operation>
<operation name="getValueRP">
<input message="tns:GetValueRPInputMessage"/>
<output message="tns:GetValueRPOutputMessage"/>
</operation>
</portType>
</definitions>
-----------------------------------------------------------------
Hello,
I modified the math service to include another function called
"findtarget"and compiled and deployed the service. However, I get the
following error on
running the service.
AxisFault
faultCode:
{http://xml.apache.org/axis/}Client<http://xml.apache.org/axis/%7DClient>
faultSubcode:
faultString: No such operation 'findtarget'
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:No<http://xml.apache.org/axis/%7DstackTrace:No>such
operation 'findtarget'
at org.apache.axis.providers.java.RPCProvider.processMessage(
RPCProvider.java:180)
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.ServiceThread.run(ServiceThread.java
:291)
{http://xml.apache.org/axis/}hostname:machine4<http://xml.apache.org/axis/%7Dhostname:machine4>
No such operation 'findtarget'
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:395)
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.examples.stubs.MathService_instance.bindings.MathPortTypeSOAPBindingStub.findtarget
(MathPortTypeSOAPBindingStub.java:534)
at org.globus.examples.clients.MathService_instance.Client.main(
Client.java:41)
I included the following code snipet in my MathService.java file:
public String findtarget(Findtarget params) throws RemoteException {
value = "machine4.devimsg.com";
return value;
}
I added the following lines to my WSDL:
<xsd:element name="findtarget">
<xsd:complexType/>
</xsd:element>
<xsd:element name="findtargetResponse" type="xsd:string"/>
<message name="FindtargetInputMessage">
<part name="parameters" element="tns:findtarget"/>
</message>
<message name="FindtargetOutputMessage">
<part name="parameters" element="tns:findtargetResponse"/>
</message>
<operation name="findtarget">
<input message="tns:FindtargetInputMessage"/>
<output message="tns:FindtargetOutputMessage"/>
</operation>
I haven't changed anything else except for my client program:
System.out.println("Target: "
+ math.findtarget(new
Findtarget()));
--------------------------------
Now why am I getting the following error? faultString: No such operation
'findtarget'
Can anyone please help?
Thanks,
Baas