2013-12-11 28 views
1

我用騾子3.3.CE騾子 - 在騾子流春天對象調用設置的屬性

我有一個名爲SpringObject類,它實現Callable接口

package com.threads.test; 

import org.mule.api.MuleEventContext; 
import org.mule.api.lifecycle.Callable; 

public class SpringObject implements Callable { 

    private String someData; 
    public String getSomeData() { 
     return someData; 
    } 

    public void setSomeData(String someData) { 
     this.someData = someData; 
    } 

    @Override 
    public Object onCall(MuleEventContext eventContext) throws Exception { 
     System.out.println("CALL SPRING --->>"+someData); 

     return eventContext.getMessage(); 
    } 

}  

而且我的流程是

<http:connector name="httpConnectorEntryPoint" doc:name="HTTP\HTTPS"/> 

<spring:beans xmlns="http://www.springframework.org/schema/beans"> 
<spring:bean id="component" name="component" class="com.threads.test.SpringObject" lazy-init="false"> 
</spring:bean> 
</spring:beans> 
<flow name="TestThreadsFlow1" doc:name="TestThreadsFlow1"> 
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8099" path="m" connector-ref="httpConnectorEntryPoint" doc:name="HTTP"/> 
     <set-payload value="#[&quot;ExitA&quot;]" doc:name="Set Payload"/> 
     <component doc:name="Java"> 
      <spring-object bean="component"> 
       <property key="someData" value="Information"/> 
      </spring-object> 
     </component> 
    </flow> 

問題是,當我運行我的流程並使用http連接器時,控制檯顯示

CALL SPRING --- >>空

,而不是

CALL SPRING --- >>信息

可能是什麼?

回答

3

你可以嘗試將流量如下外配置的Spring bean:

<spring:bean id="component" name="component" 
    class="com.threads.test.SpringObject" lazy-init="false"> 
    <spring:property name="someData" value="Information" /> 
</spring:bean> 

and inside the flow do: 

<component> 
    <spring-object bean="component" /> 
</component> 
+0

爲什麼重複的答案嗎? – Seba

2

從XSD屬性元素描述:

設置一個騾屬性。這是一個名稱/值對,可以在 組件,服務等上設置,並提供配置系統的通用方式 。通常,您不需要使用類似這樣的通用 屬性,因爲幾乎所有功能都通過 專用元素公開。但是,它可用於配置不明確的 或忽略的選項以及配置來自通用端點元素的傳輸。

這意味着它不適合您嘗試使用它。用適當的方式在你的bean設置屬性如下:

<spring:bean id="component" name="component" class="com.threads.test.SpringObject" lazy-init="false"> 
    <spring:property name="someData" value="Information"/> 
</spring:bean>