2015-11-12 3 views
0

Я пытаюсь определить опубликовать работу в Hazelcast тему с использованием Spring DSLApache Camel - константы Ссылки типа в Spring DSL

<from uri="direct:inbound" />  
     <onCompletion> 
      <log message="onCompletion:- ${body}" /> 
      <setHeader headerName="${type:org.apache.camel.component.hazelcast.HazelcastConstants.OPERATION}"> 
       <simple>${type:org.apache.camel.component.hazelcast.HazelcastConstants.PUBLISH_OPERATION}</simple> 
      </setHeader> 
      <to uri="hazelcast:topic:foo" /> 
     </onCompletion>             
     <log message="${body}" /> 

Вышеприведенные маршрут работает, но я должен использовать длинный простые сценарии, такие как " $ {type: org.apache.camel.component.hazelcast.HazelcastConstants.OPERATION} ", чтобы указать постоянное значение. Есть ли более простая или короткая форма для этого?

Я попытался определить пружинный боб для класса HazelcastConstants и реф через простые сценарии, как показано ниже, но это не работает с MethodNotFoundException «Метод с именем: ОПЕРАЦИЯ не найден на боб»

<bean id="hazelcastConstants" class="org.apache.camel.component.hazelcast.HazelcastConstants" /> 
... ... 
<simple>${bean:hazelcastConstants.OPERATION}</simple> 

ответ

0

Ваш боб обходной путь работа, если вы определили боб содержит метод, возвращающий эту константу, например:

public class ContantRetriever() { 
    public String getHazelCastOperation() { 
    return org.apache.camel.component.hazelcast.HazelcastConstants.PUBLISH_OPERATION; 
    } 
} 

Вашего Родник контекст:

<bean id="hazelcastConstants" class="yourpackage.ContantRetriever"/> 
<simple>${bean:hazelcastConstants.getHazelCastOperation}</simple> 

Если это вам не подходит, я боюсь, что вы застряли в длинной форме доступа к константам.

Смежные вопросы