0

我已经做了一个web应用程序,它调用mule服务器,它正在侦听http入站点在8081访问数据库。我正在成功访问数据库并获取消息。但是当我从数据库中获取对象并运行一些操作后,我想访问其他的其他服务。 我不知道如何做到这一点。打电话到骡子休息服务ESB

请给我例子。我张贴我的流量。

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:jms="http://www.mulesoft.org/schema/mule/jms" xmlns:jersey="http://www.mulesoft.org/schema/mule/jersey" xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
    xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.5.1" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd 
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd 
http://www.mulesoft.org/schema/mule/jersey http://www.mulesoft.org/schema/mule/jersey/current/mule-jersey.xsd 
http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd 
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd"> 
    <http:endpoint exchange-pattern="request-response" host="localhost" port="8081" method="POST" name="HTTP" doc:name="HTTP"/> 
    <db:mysql-config name="MySQL_Configuration" host="localhost" port="3306" user="root" password="123456" database="Customer" doc:name="MySQL Configuration"/> 
    <flow name="muleesbintegrationFlow1" doc:name="muleesbintegrationFlow1"> 
     <http:inbound-endpoint exchange-pattern="request-response" path="crud" doc:name="HTTP" ref="HTTP"/> 
     <set-session-variable variableName="input" value="#[message.inboundProperties.'http.query.params'.input]" doc:name="input"/> 
     <set-session-variable variableName="cid" value="#[message.inboundProperties.'http.query.params'.cid]" doc:name="cid"/> 
     <set-session-variable variableName="fname" value="#[message.inboundProperties.'http.query.params'.fname]" doc:name="fname"/> 
     <set-session-variable variableName="lname" value="#[message.inboundProperties.'http.query.params'.fname]" doc:name="lname"/> 
     <choice doc:name="ChoicerOfCrud"> 
      <when expression="#[sessionVars['input']== &quot;insert&quot;]"> 
       <db:insert config-ref="MySQL_Configuration" doc:name="insert"> 
        <db:parameterized-query><![CDATA[INSERT INTO `Customer`.`customer` (`customer_id`, `fname`, `lname`) VALUES (#[sessionVars['cid']], #[sessionVars['fname']], #[sessionVars['lname']]);]]></db:parameterized-query> 
       </db:insert> 
      </when> 
      <when expression="#[sessionVars['input']]==&quot;update&quot;]"> 
       <db:update config-ref="MySQL_Configuration" doc:name="update"> 
        <db:parameterized-query><![CDATA[UPDATE `Customer`.`customer` set 
fname = #[sessionVars['fname']], 
lname= #[sessionVars['lname']] 
where customer_id = #[sessionVars['cid']];]]></db:parameterized-query> 
       </db:update> 
      </when> 
      <when expression="#[sessionVars['input']==&quot;select&quot;]"> 
       <db:select config-ref="MySQL_Configuration" doc:name="selected"> 
        <db:parameterized-query><![CDATA[SELECT * FROM Customer.customer where customer_id =#[sessionVars['cid']];]]></db:parameterized-query> 
       </db:select> 
      </when> 
      <otherwise> 
       <db:delete config-ref="MySQL_Configuration" doc:name="delete"> 
        <db:dynamic-query><![CDATA[DELETE FROM `Customer`.`customer` WHERE `customer_id`=#[sessionVars['cid']];]]></db:dynamic-query> 
       </db:delete> 
      </otherwise> 
     </choice> 
    </flow> 
</mule> 
+1

你的意思是你要调用的出站HTTP端点的污物后,操作? – 2014-11-06 06:47:00

+0

您的网络应用期望从您的Mule服务获得什么类型的结果? JSON? XML? – 2017-01-11 21:29:30

回答

0

我推荐使用http:outbound-endpoint来使用REST服务(GET,POST,PUT或DELETE)。在这个例子中,你可以看到一个流调用服务GET:

<flow name="invoke-ws" doc:name="invoke-ws"> 
    <vm:inbound-endpoint exchange-pattern="request-response" path="vm-ws" doc:name="VM"/> 
    <logger message="payload is: #[payload]" level="INFO" doc:name="Logger"/> 
    <http:outbound-endpoint exchange-pattern="request-response" method="GET" address="http://ip:port/service/#[payload]" doc:name="HTTP"> 
     <set-property propertyName="Accept" value="application/json"/> 
    </http:outbound-endpoint> 
    <byte-array-to-string-transformer doc:name="Byte Array to String"/> 
    <logger message="payload is: #[payload]" level="INFO" doc:name="Logger"/>   
</flow> 

如果该服务是通过HTTP的SOAP,我建议使用http://www.mulesoft.org/documentation/display/current/Web+Service+Consumer

+0

嘿,对不起@julio你没有得到我的问题,你看到我的流程。我在数据库中做crud操作。在crud操作后数据库返回Object.After,我想我的数据库对象打一些service.But问题是我无法理解我该如何执行。我的第一个请求是在String mvc中创建的Web应用程序,我希望我的结果应该返回到该应用程序。请帮助我。 – 2014-11-06 06:31:07

+0

在数据库中运行操作时,可以操纵要在json或xml文档中转换的对象,以更改有效内容。然后你可以包含一个vm transport:request-reponse来调用提供的例子中的流程。 – 2014-11-06 14:42:41

+0

@Manoj你上面的评论很难理解,请你澄清一下吗?您是否试图使用数据库调用的结果发送给Web服务消费者?你不应该只是返回数据库结果作为你的[Payload](https://docs.mulesoft.com/mule-user-guide/v/3.6/set-payload-transformer-reference)吗? – 2017-01-11 21:28:13