2015-04-27 64 views
0

我正在嘗試爲SOAP服務的http入站端點獲取動態地址。HTTP入站端點的動態地址Mule

<http:inbound-endpoint exchange-pattern="request-response" address="#[app.registry.appversion.getNewAddress()]" doc:name="HTTP"/> 

Spring上下文中有bean定義:

<bean id="appversion" class="com.visit.util.Application"> 

getNewAddress()的應用程序類返回一個字符串。

然而,拋出異常爲:

Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'protocol' threw exception; nested exception is java.lang.IllegalArgumentException: Address '#[app.registry.appversion.getNewAddress()]' for protocol 'http' should start with http:// 
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:102) 
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:58) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1393) 
... 38 more 

看起來沒有被評估的MEL和被視爲文字串。我錯過了什麼嗎?任何幫助讚賞。提前致謝。

+1

嘗試使用彈簧式(規劃環境地政司)來代替。 –

+0

@DavidDossot能否詳細說明爲什麼你認爲SpEL可以工作,我猜測它與啓動順序有關,如果你能向我們解釋它,那將是很好的。 – Sudarshan

+1

MEL不在任何地方進行評估,只有在編碼的地方。因爲Mule建立在Spring上,SpEL有更多機會在任何屬性中工作。 –

回答

2

使用彈簧式(SPEL)代替:

<http:inbound-endpoint exchange-pattern="request-response" 
     address="#{appversion.getNewAddress()}" doc:name="HTTP"/>