【问题标题】:WSO2 ESB 4.0.3 Proxy Service issue : The endpoint reference (EPR) for the Operation not foundWSO2 ESB 4.0.3 代理服务问题:找不到操作的端点参考 (EPR)
【发布时间】:2012-08-16 14:51:41
【问题描述】:

您好,我尝试创建一个指向以下端点的代理“myfirst_proxy”:test_myapp

这个端点指向http://server1/myapp/service/test.php?wsdl(我测试了url,它返回成功)

我创建了一个序列:log and drop,并将其添加到代理配置中的 Out Sequence。

为了测试,我添加了一个计划任务,在 9 点后每 2 分钟运行一次:

 <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>

现在当我访问http://myesbserver:8280/services/myfirst_proxy 时,我将收到以下错误:未找到操作的端点引用 (EPR) 是 /services/myfirst_proxy 并且 WSA 操作 = null。如果此 EPR 以前可以访问

但是当我在末尾添加 ?wsdl 时,我会看到 WSDL 文件。

在日志文件中,我看到执行了以下计划任务:

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>

我检查了应用服务器是否收到来自 ESB 代理的任何请求,但没有,我使用 ESB 附带的 Try 工具,将字符串放在正文标签之间并运行它。响应成功。

所以我的问题是,我是否错过了允许我的任务与远程 WSDL 对话的步骤?

干杯。

【问题讨论】:

  • 你能提供你的代理配置吗?
  • @Ratha 这是代理配置:&lt;proxy name="myfirst_proxy" transports="http" startOnLoad="true" trace="enable"&gt; &lt;target endpoint="test_myapp" inSequence="log_and_drop" faultSequence="fault"/&gt; &lt;publishWSDL uri="http://server1/myapp/service/test.php?wsdl"/&gt; &lt;policy key="conf:/repository/axis2/service-groups/myfirst_proxy/services/myfirst_proxy/policies/RMPolicy"/&gt; &lt;parameter name="Action"&gt;sendText&lt;/parameter&gt; &lt;parameter name="interface"&gt;MYAPPPortType&lt;/parameter&gt; &lt;parameter name="serviceType"&gt;proxy&lt;/parameter&gt; &lt;enableRM/&gt; &lt;/proxy&gt;
  • 您的端点配置是什么?
  • `
    server1/myapp/service/test.php?wsdl" statistics="enable" format="soap11"/>
    `

标签: wso2 task wso2esb esb endpoint


【解决方案1】:

这样定义任务..

 <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>

然后在主序路由中代理;

<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>

【讨论】:

  • 所以在代理配置中我应该添加“main”作为输入还是输出序列?我有点困惑,我会说顺序。再次感谢
  • "What getparam?a=1" 只是例如..您不需要将主序列定义为您的输出序列..它将任务消息路由到代理..您可以定义您的自定义序列作为您的外序列。
【解决方案2】:

您好,您的端点 url 错误..它应该指向实际的服务端点..而不是 wsdl url.. 可能是这样的;

http://server1/myapp/service/test.php

【讨论】:

  • 那一定是我复制 URL 时出错了,我改了,我查看了端点 access_log,我看不到任何来自 ESB 的活动,在浏览器中输入 URL myesbserver:8280/services/myfirst_proxy它会重置连接,我可以在访问日志中看到以下条目:..."GET /myapp/service/test.php HTTP/1.1" 200 4936 "-" "Synapse-HttpComponents-NIO",当我添加 ?wsdl 时,它会显示 wsdl 文件。
  • 我添加了完整配置以获得更多可见性pastebin.com/P1svUY2s感谢您的帮助
  • 当您向代理发送 GET 请求时,请检查您在代理中提供的 WSDL 以及您的实际后端服务中是否存在特定的 get 操作。
  • 它之所以存在是因为我使用 SoapUI 以及 ESB 附带的工具对其进行了测试,它确实抓取了我正在发送的消息,但是当我尝试安排一个任务来调用代理时甚至不会到达服务器,.我不确定它是否与顺序有关。我将序列配置为执行记录和发送,如果我错了,请纠正我。尽管我将其设置为 Trace、Debug 等,但我在日志中看不到任何错误消息。我在另一台服务器上运行 tcpdump,当我在代理中保存更改或测试远程时,我看到的都是来自 ESB 的数据包WSDL。
  • 哦..对不起..你不能从任务中调用代理..你必须通过主序列发送它..检查我的第二个回答 smaple
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多