0

指定された間隔でディレクトリをリッスンする必要があるファイルチャネルアダプタがあります。そして、私は次のコードを持っています。

<file:inbound-channel-adapter id="fileAdapter"
         directory="file:${SYS.com.abc.wls.workdir}/finalize/" queue-size="1000"
    auto-startup="true" filename-pattern="*.txt">
<int:poller fixed-delay="500">          

</int:poller>       
 </file:inbound-channel-adapter>

directory="file:${SYS.com.abc.wls.workdir}/finalize/実際のディレクトリ名(のような)で置き換えると、すべてが正常にdirectory="file:C:/temp/finalize/機能します。ただし、サーバーの起動時にシステムプロパティが設定されていますが、Springはシステムプロパティを検出しません。

手伝ってもらえますか?

アップデート :

プレースホルダーには次の構成があります

<beans:bean id="jobProperties"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <beans:property name="properties">
        <beans:value>
            job.group.commit.interval=5000
        </beans:value>
    </beans:property>
    <beans:property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_FALLBACK" />
    <beans:property name="ignoreUnresolvablePlaceholders"
        value="true" />
    <beans:property name="order" value="1" />
</beans:bean>

削除:file:からdirectory="file:${SYS.com.abc.wls.workdir}/finalize/"に変更されauto-create-directory="false"、次のように例外が発生しました。

    by: java.lang.IllegalArgumentException: Source directory **[${SYS.com.abc.wls.workdir}\finalize] does not exist**.
 at org.springframework.util.Assert.isTrue(Assert.java:65)
 at org.springframework.integration.file.FileReadingMessageSource.onInit(FileReadingMessageSource.java:233)
 at org.springframework.integration.context.IntegrationObjectSupport.afterPropertiesSet(IntegrationObjectSupport.java:98)
 at org.springframework.integration.file.config.FileReadingMessageSourceFactoryBean.initSource(FileReadingMessageSourceFactoryBean.java:153)
 at org.springframework.integration.file.config.FileReadingMessageSourceFactoryBean.getObject(FileReadingMessageSourceFactoryBean.java:99)
 at org.springframework.integration.file.config.FileReadingMessageSourceFactoryBean.getObject(FileReadingMessageSourceFactoryBean.java:37)
 at org.springframework.beans.factory.support.FactoryBeanRegistrySupport$2.run(FactoryBeanRegistrySupport.java:133)
 at java.security.AccessController.doPrivileged(Native Method)
 at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:131)
 ... 63 more
4

1 に答える 1

1

システムプロパティを認識するスプリングエンティティを宣言する必要があります。一般的なアプローチはPropertyPlaceHolderConfigurer、Springconfigurationにを入れることです。

デフォルトのモードはですSYSTEM_PROPERTIES_MODE_FALLBACK。これは、コンフィギュレーターによって保持されていない値がシステムプロパティとして検索されることを意味します。モードは、を使用してオーバーライドできますsetSystemPropertiesMode

于 2011-10-06T08:38:07.153 に答える