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

Reply via email to