Search code examples
wso2taskesbendpointwso2-esb

WSO2 ESB 4.0.3 Proxy Service issue : The endpoint reference (EPR) for the Operation not found


Hello I tried to create a proxy "myfirst_proxy" that points to the following endpoint : test_myapp

this Endpoint is pointing to http://server1/myapp/service/test.php?wsdl ( I tested the url and it returned successful )

I created a sequence : log and drop and added it to the Out Sequence in the proxy config.

I added a scheduled task to run every 2 min after 9 just for the sake if testing:

 <task name="testtask" class="org.apache.synapse.startup.tasks.MessageInjector" group="synapse.simple.quartz">
    <trigger cron="0 0/2 9 * * ?"/>
    <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="message">
        <sendText xmlns=""/>
    </property>
    <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="to" value="http://myesbserver:8280/services/myfirst_proxy"/>
    <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="soapAction" value="urn:MYAPP#sendText"/>
    <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="format" value="soap11"/>
</task>

Now when I access http://myesbserver:8280/services/myfirst_proxy I will get the following error : he endpoint reference (EPR) for the Operation not found is /services/myfirst_proxy and the WSA Action = null. If this EPR was previously reachable

but when I add ?wsdl at the end I see the WSDL file.

in the Log file I see the following scheduled task been executed:

INFO - LogMediator To: http://myesbserver:8280/services/myfirst_proxy, WSAction: urn:MYAPP#sendText, SOAPAction: urn:SLATE#sendText, MessageID: urn:uuid:87b2695a-ce95-43fa-b7d2-3d638c3d5f20, Direction: request, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><sendApproval/></soapenv:Body></soapenv:Envelope>

I checked the App Server if it received any request from ESB Proxy, it did not, I use the Try tool that comes with the ESB, I put the string between the body tags and run it. the response was successful.

So my question, am I missing a step that would allow my task to talk to the remote WSDL ?

Cheers.


Solution

  • Define task like that..

     <task name="testtask" class="org.apache.synapse.startup.tasks.MessageInjector" group="synapse.simple.quartz">
    
        <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="to" value="http://myesbserver:8280/services/myfirst_proxy/getparam?a=1"/>  
            </task>
    

    Then in the main sequence route that to proxy;

    <sequence xmlns="http://ws.apache.org/ns/synapse" name="main">
       <in>
          <log level="full"/>
          <filter xmlns:ns="http://org.apache.synapse/xsd"
                  xmlns:ns3="http://org.apache.synapse/xsd"
                  source="get-property('To')"
                  regex=".*/myfirst_proxy.*">
             <then>
                <property name="OUT_ONLY" value="true"/>
                <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
                <log level="custom">
                   <property name="***********MESSAGE******" value="executing myfirst Proxy Sequence"/>
                </log>
                <send/>
                <drop/>
             </then>
             <else/>
          </filter>