產生奇怪的迴應,我有以下騾子流量: -REST服務在騾子
<jdbc-ee:connector name="Database_Global" dataSource-ref="DB_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database">
<jdbc-ee:query key="InsertQuery" value="INSERT INTO getData(ID,NAME,AGE,DESIGNATION)VALUES(#[flowVars['id']],#[flowVars['name']],#[flowVars['age']],#[sessionVars['valueFromgetDesc']])"/>
</jdbc-ee:connector>
<flow name="ttFlow1" doc:name="ttFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" doc:name="HTTP"/>
<set-payload doc:name="Set Payload" value="{"insertDataRequest": [{"id": "1","name": "Sidray","age": "55","designation": "SE"},{"id": "2","name": "Anir","age": "51","designation": "SE"}]}"/>
<jersey:resources doc:name="REST">
<component class="com.test.services.schema.maindata.v1.Impl.MainDataImpl"/>
</jersey:resources>
<json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>
<foreach collection="#[message.payload.insertDataRequest]" doc:name="For Each">
<logger message="INSERTDATA #[message.payload.id]" level="INFO" doc:name="Logger"/>
<set-variable variableName="id" value="#[message.payload.id]" doc:name="Variable"/>
<set-variable variableName="name" value="#[message.payload.name]" doc:name="Variable"/>
<set-variable variableName="age" value="#[message.payload.age]" doc:name="Variable"/>
<set-session-variable variableName="designation" value="#[message.payload.designation]" doc:name="Session Variable"/>
<logger message="Total #[variable:id] #[variable:name] #[sessionVars['designation']]" level="INFO" doc:name="Logger"/>
<jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="InsertQuery" queryTimeout="-1" connector-ref="Database_Global" doc:name="Database (JDBC)"/>
<scripting:component doc:name="Groovy">
<scripting:script engine="Groovy">
<scripting:text>
<![CDATA[
import com.test.services.schema.maindata.v1.*
def dResponse = new DataResponse()
dResponse.response='Data inserted Successfully'
return dResponse]]>
</scripting:text>
</scripting:script>
</scripting:component>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<logger message="Data inserted Successfully" level="INFO" doc:name="Logger"/>
</foreach>
</flow>
在這裏,我做的是我有restImpl類(<component class="com.test.services.schema.maindata.v1.Impl.MainDataImpl"/>
),這是返回按以下格式要求: -
[insertDataRequest=[DataRequest [id=1, name=Sidray, age=21, designation=SE], DataRequest [id=2, name=Anir, age=55, designation=SE]]]
之後,我使用json:json-to-object-transformer
從請求對象獲取的所有值一樣ID現在,名,年齡並將其存儲在流量變量,然後調用JDBCoutboundendpoint和SQL使用這些變量來插入數據..
我能夠插入到DB順利..。 。然後我設置響應使用Groovy腳本
現在的問題很簡單..在這裏,服務電話後瀏覽器響應,..
請幫
如果您可以格式化XML,因爲它很難閱讀,因此它會很好。另外,正如我最近在一個類似的問題上評論的那樣,我認爲使用Jersey組件和其他流程元素的組合是錯誤的設計。可以使用一個簡單的組件,也可以將其餘流程移動到另一個流程中,並從JAX-RS批註資源中調用它。 – 2014-09-25 16:23:04
現在真正的問題是:你想通過HTTP響應什麼? 「foreach」將產生多個值:你打算如何聚合它們以創建可通過HTTP序列化的響應?同樣,如果JAX-RS組件是該流程中唯一的JAX-RS組件,那將更容易,因爲響應構建將在組件中完成,而不是您在此處混淆的混合模式。 – 2014-09-25 16:25:31
David,我想設置由Groovy生成的Json格式的響應 – 2014-09-25 17:05:25