当前位置: 首页 > 知识库问答 >
问题:

Apache Synapse/WSO2 API无响应

米修平
2023-03-14
<api xmlns="http://ws.apache.org/ns/synapse" name="RestDBLookup" context="/dblookup">
   <resource methods="POST GET" uri-template="/channel/{name}" protocol="http">
      <inSequence>
         <dblookup>
            <connection>
               <pool>
                  <password>pass</password>
                  <driver>oracle.jdbc.driver.OracleDriver</driver>
                  <url>jdbc:oracle:thin:@localhost:1521:ORCL</url>
                  <user>user</user>
               </pool>
            </connection>
            <statement>
               <sql>SELECT ID, CHANNEL_NAME FROM CHANNEL where CHANNEL_NAME = ?</sql>
               <parameter expression="get-property('uri.var.name')" type="VARCHAR"/>
               <result name="channel_id" column="ID"/>
            </statement>
         </dblookup>
         <log level="custom">
            <property name="ID" expression="get-property('channel_id')"/>
            <property name="State" value="after db"/>
         </log>
      </inSequence>
      <outSequence>
         <property name="messageType" value="application/json" scope="axis2" type="STRING"/>
         <log level="full"/>
         <send/>
      </outSequence>
      <faultSequence/>
   </resource>
</api>

当我用rest客户端调用urlhttp://localhost:8280/dblookup/channel/somechannel时,我会在dblookup之后获得日志

LogMediator ID = 40810162, State = after db

但是outsequence没有执行,并且我在没有正文的rest客户端上只得到状态202接受。

所以问题是我如何构造一些响应(例如,以JSON格式)并将其发送到客户机?

共有1个答案

司雅畅
2023-03-14

突触中介有三种流程:

  • InSequence-处理即将到来的请求,并定义在将请求发送到目标endpoint之前应如何处理(中介)
  • outsequence-处理从endpoint返回的响应,并定义在将响应发送到客户端之前应如何处理(中介)
  • faultsequence-如果在服务中介期间发生错误,则故障消息将移交给故障序列。您可以根据您的需求(记录错误、丢弃消息和发送回故障),按故障顺序记录逻辑。

现在让我们看看你的用例。您要做的是按顺序查询数据库。你也会得到结果。但问题是结果没有发回给客户。这里的问题是您在inSequence中编写的中介没有调用OutSequence。因此不被击中。例如,如果您在inSequence中调用后端服务,则响应命中到outsequence。在您的情况下,响应返回到insequence。因此,我们可以做以下任一个选择:

  1. 中介器之后按顺序添加 中介器。这会将消息从inSequence移动到Outsequence。
  2. 将以outSequence写入的逻辑移动到insequence。然后在inSequence的末尾添加 。这将把当前消息发送回客户端。因此您可能不需要使用outsequence。

希望以上答案有所帮助。

干杯!

 类似资料:
  • 这是我的代码,我试图通过它发送请求http://localhost:3000/api/post/article使用邮递员,但我收到无法获取的错误。它不用路由器就可以工作。获取,但使用应用程序。所以我认为问题出在路由器上。 这是server.js文件 这是应用程序文件 这是路由器文件 这是控制器文件

  • 我正在尝试使用一种被广泛接受的方法(暗示该方法是无缝的)制作一个GUI来解决工程设计问题。 此方法的代码在独立运行时需要0.537909984588623秒(不是在tkinter中,而是在普通代码中),并且不会太复杂或混乱。当我尝试使用tkinter修改此代码以适应GUI时,在输入所有输入并选择一个按钮后,即使程序一直在后台运行,它也会变得无响应。 另外,当我强制关闭GUI窗口时,jupyter内

  • 问题内容: 我正在尝试为我的实现。在构造函数上,我使用以下代码: 当我运行它时,该消息出现在我的控制台中。但是,当我按一个键时,我没有收到其他任何消息,好像该消息根本不在那儿。 我当时想这可能是因为重点不在上 ,所以他们没有收到任何事件。但是,我很确定。 我有什么想念的吗? 问题答案: 你必须将keyListener添加到所需的每个组件中。仅具有焦点的组件将发送这些事件。例如,如果JFrame中只

  • 我为我们的一个客户开发了一个定制的SAML IdP。但是,当试图将以下响应传递给SP时,它失败了。我尝试使用一些在线SAML在线工具来验证响应,我看到了一些错误,但我不知道哪里出了问题。有人能帮忙吗? 在samltool.com上使用验证器,我得到以下错误: XML无效。 行:69列:0-->元素‘{http://www.w3.org/2000/09/xmldsig#}signature':不需要

  • HI我只是新来的改造服务,并遵循本教程https://www.simplifiedcoding.net/retrofit-android-tutorial-to-get-json-from-server/它工作得很好,想创建我自己的,所以我使用了一个新的json网络http://api.androidhive.info/contacts/,其中包含 我实现了自己的接口ContactAPI。Java

  • 我在研究项目中使用GraphDB Free 8.4.1,有时它无法响应请求。GraphDB日志中没有错误和异常,GraphDB以默认配置作为服务器工作台运行。 然而,我在组件中有一个例外,那就是请求GraphDB服务器。 例外情况是: 发生异常的代码段: 你能帮我找出问题出在哪里吗? 非常感谢!

  • 问题内容: 我正在创建一个宁静的API,它将使用服务器中的json。但是我遇到了异常: org.springframework.web.client.RestClientException:无法提取响应:在org.springframework找不到响应类型为[[Lexamples.dto.DummyDTO;]]和内容类型为[text / json; charset = utf-8]的HttpMe

  • 我正在创建一个restful API,它将使用来自服务器的json。但我得到了以下例外: 组织。springframework。网状物客户RestClientException:无法提取响应:未找到响应类型[[Lexamples.dto.DummyDTO;]的合适HttpMessageConverter和org.springframework.web.client.HttpMessageConve