Доступ к методу абстрактного класса в версии Camel Context (2.9.1) с помощью Spring DSL - PullRequest
0 голосов
/ 20 марта 2012

В рамках маршрута, определенного в контексте верблюда, я хотел бы получить доступ к методу абстрактного класса, который содержится в сторонней библиотеке, которую я использую.

 <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:camel="http://camel.apache.org/schema/spring"
   xmlns:osgi="http://www.springframework.org/schema/osgi"
   xsi:schemaLocation="
   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd
   http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> 


 <bean id="objectFactory" class="org.example.Factory" abstract="true"/>

 <camelContext xmlns="http://camel.apache.org/schema/spring">
     <route>
         ...
       <marshal>
          <rss/>
   </marshal>
   <marshal>
      <string/>
   </marshal>
       <to uri="jms:feeds"/>
       <to uri="file:/tmp/output"/>
       <!-- That is the point in the route where I would like to pass the URL of 
            the folder the files have been written to a static method of an abstract
            class in order to instantiate an object
       -->
     </route>
      ...

Приведенный выше фрагмент показывает определение маршрута в Spring DSL и определение абстрактного компонента. Я пытался использовать тег <bean> для достижения того, что я хочу, но это всегда заканчивается org.springframework.beans.factory.BeanIsAbstractException. Нет ли способа просто получить доступ к статическому методу абстрактного класса внутри camelcontext?

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Я думаю, что самый простой способ использовать абстрактный класс - это определить свой собственный класс, который расширяет абстрактный класс, а затем вызвать его.Затем вы можете использовать нормальный синтаксис бина, как упомянуто Клаусом.В этом случае нестатические методы также будут работать.

1 голос
/ 20 марта 2012

Если метод является статическим, вы можете ссылаться на него в Camel DSL напрямую

<bean type="org.example.Factory" method="myMethod"/>

Имейте в виду, что для этого требуется довольно свежая версия Camel, где мы добавили поддержку прямого вызова статических методов..

...