产生奇怪的回应,我有以下骡子流量: -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