Mule ESB中的.txt文件中数据库中查询的结果



我的场景是当我转到localhost:8081/search时,必须加载一个简单的HTML文件,该文件具有文本字段(输入)和提交按钮。

我在文本字段中编写一个主题,然后单击"提交"按钮,必须将主题传输到我的数据库中以应用一些SQL查询,然后查询结果必须返回为.txt.html文件。

但是当我查看文本文件时,我只是看到非常不寻常的字符。

这是mule中的XML流量代码

<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"/>
<db:mysql-config name="MySQL_Configuration" host="localhost" port="3306" user="root" password="Blue1234" database="news" doc:name="MySQL Configuration"/>
<http:request-config name="HTTP_Request_Configuration" host="localhost"  doc:name="HTTP Request Configuration" port="8081"/>
<file:connector name="file" writeToDirectory="C:UsersHershDesktopfile" autoDelete="true" streaming="true" validateConnections="true" doc:name="File" />
<flow name="parsetemplateFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/web" doc:name="HTTP"/>
    <set-payload value="#[message.inboundProperties.'http.query.params'.q]" doc:name="Set Payload" mimeType="text/html"/>
    <db:select config-ref="MySQL_Configuration" doc:name="Database">
        <db:parameterized-query><![CDATA[select txt from news.nws where sub=#[message.payload]]]></db:parameterized-query>
    </db:select>
    <response>
        <http:static-resource-handler resourceBase="C:UsersHershDesktopattach" defaultFile="index.html" doc:name="HTTP Static Resource Handler"/>
    </response>
    <logger message="#[message.payload]" level="INFO" doc:name="Logger"/>
    <set-payload value="#[message.payload]" doc:name="Set Payload"/>
    <response>
        <file:outbound-endpoint path="C:UsersHershDesktopfile" outputPattern="output.txt" connector-ref="file" responseTimeout="10000" doc:name="File"/>
    </response>
</flow>
</mule>

这是流量的屏幕截图

在此处输入图像描述

理想情况下,流的结构应该是这样的,

  • 您使用Parse模板/HTTP静态资源处理程序通过HTML输入输入
  • 在DB中使用这些值
  • 使用文件组件组件将数据库的响应写入文件。

如果这不是您的案例评论您需要的内容。

样本配置xml-

 <http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"/>
<db:mysql-config name="MySQL_Configuration" host="localhost" port="3306" user="root" password="Blue1234" database="news" doc:name="MySQL Configuration"/>
<http:request-config name="HTTP_Request_Configuration" host="localhost"  doc:name="HTTP Request Configuration" port="8081"/>
<file:connector name="file" writeToDirectory="C:UsersHershDesktopfile" autoDelete="true" streaming="true" validateConnections="true" doc:name="File" />
<flow name="parsetemplateFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/web" doc:name="HTTP"/>
        <http:static-resource-handler resourceBase="C:UsersHershDesktopattach" defaultFile="index.html" doc:name="HTTP Static Resource Handler"/>
        <set-payload value="#[message.inboundProperties.'http.query.params'.q]" mimeType="text/html" doc:name="Set Payload"/>
    <db:select config-ref="MySQL_Configuration" doc:name="Database">
        <db:parameterized-query><![CDATA[select txt from news.nws where sub=#[message.payload]]]></db:parameterized-query>
    </db:select>
    <logger message="#[message.payload]" level="INFO" doc:name="Logger"/>
    <set-payload value="#[message.payload]" doc:name="Set Payload"/>
        <file:outbound-endpoint path="C:UsersHershDesktopfile" outputPattern="output.txt" connector-ref="file" responseTimeout="10000" doc:name="File"/>
</flow>

数据库连接器以java.util.LinkedList(Java Collection Format)的形式返回数据,这就是您获得不寻常字符的原因。要获得纯文本,您首先必须将数据从Java对象转换为纯文本。您可以使用转换消息进行转换。

最新更新