2

キャメルコンテキストで定義されたルート内で、使用しているサードパーティライブラリに含まれている抽象クラスのメソッドにアクセスしたいと思います。

 <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>
      ...

上記のスニペットは、SpringDSLでのルート定義と抽象Beanの定義を示しています。タグを使用して目的を達成しようとしました<bean>が、これは常に。で終わりorg.springframework.beans.factory.BeanIsAbstractExceptionます。camelcontext内の抽象クラスの静的メソッドに単純にアクセスする方法はありませんか?

4

2 に答える 2

1

抽象クラスを使用する最も簡単な方法は、抽象クラスを拡張する独自のクラスを定義してから呼び出すことだと思います。その後、Claus が述べたような通常の Bean 構文を使用できます。この場合、非静的メソッドも機能します。

于 2012-03-21T06:51:45.233 に答える
1

メソッドが静的メソッドの場合、Camel DSL で直接参照できます。

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

これには、静的メソッドを直接呼び出すためのサポートを追加した、かなり最近のバージョンの Camel が必要であることに注意してください。

于 2012-03-20T16:57:48.103 に答える