2017-12-19 35 views
1

S3からインバウンドチャネルアダプタを使用してファイルをダウンロードしようとしています。ここに私の設定です:私が実行しようとすると、私は取得していますSpring Integration S3 'beanName'は空であってはなりません

s3.xml: 
<int:chain input-channel="s3ReaderChannel" output-channel="uncompressPayloadChannel"> 
<int:service-activator ref="s3Bean" method="generateS3ObjectHash" /> 
<int-aws:s3-inbound-channel-adapter 
       bucket="${s3.bucket}" 
       session-factory="s3SessionFactory" 
       auto-create-local-directory="true" 
       auto-startup="false" 
       filename-pattern="*.gz" 
       local-directory="." 
       local-filename-generator-expression="#this" 
       temporary-file-suffix=".transffering" 
       remote-directory="/remote/mytransfers" 
       local-filter="acceptAllFilter"/> 
</int:chain> 

<bean id="s3SessionFactory" 
class="org.springframework.integration.aws.support.S3SessionFactory"/> 




aws-credentials.xml: 
<!-- Define global credentials for all the AWS clients --> 
<aws-context:context-credentials> 
<aws-context:instance-profile-credentials/> 
<aws-context:simple-credentials access-key="${aws.accesskey}" 
           secret-key="${aws.secretkey}"/> 
</aws-context:context-credentials> 

<!-- Define global region --> 
<aws-context:context-region region="${aws.region}"/> 

Exception in thread "main"` 
`org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected 
exception parsing XML document from file`; nested exception is 
java.lang.IllegalArgumentException: 'beanName' must not be empty 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:414) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336) 
...30 more 
Caused by: java.lang.IllegalArgumentException: 'beanName' must not be empty 
at org.springframework.util.Assert.hasText(Assert.java:181) 
at org.springframework.beans.factory.config.RuntimeBeanReference.<init>(RuntimeBeanReference.java:58) 
at org.springframework.beans.factory.config.RuntimeBeanReference.<init>(RuntimeBeanReference.java:46) 
at org.springframework.beans.factory.support.BeanDefinitionBuilder.addPropertyReference(BeanDefinitionBuilder.java:226) 
at org.springframework.integration.config.xml.AbstractPollingInboundChannelAdapterParser.doParse(AbstractPollingInboundChannelAdapterParser.java:64) 
    ...20 more 
` 

をスタックトレースから、AbstractPollingInboundChannelAdapterParser.java:64は、私はそれがあるので、理解しないoutputChannel、についてですチェーンで。

私はここで何が欠けていますか?

答えて

0

右の受信チャネルアダプタはフローの開始点であり、<chain>ではまったく宣言できません。あなたの上には、いくつかの後にそれを宣言するような混乱があります<int:service-activator>

<int-aws:s3-inbound-channel-adapter><chain>の外に移動する必要があります。この1つがフローの開始になることに注意してください。

あなたは何が間違った考え方になったのかよく分かりませんが、​​の情報が必要なようです。

+0

ユースケース:S3バケットにファイルをダンプする別のサービスがあります。ロジックに基づいて、私は必要なファイルを派生させ、私はこのS3バケットから引き出します。だから、私はサービスアクチベータが論理を導くチェーンに入れました。 – Preethi

+0

そのためには、代わりに ''を使う必要があります。 Inbound Channel Adapterは、常にフローの開始点です。どんなイベントにも反応することはできません。タスクスケジューラがポーリングするだけです。期待したとおりに動かないようにするだけです。あなたはあなたの視点をこのコンポーネントに再考すべきです。 –

+0

私はそれを試みましたが、DOWNLOAD操作のために、ペイロードを 'java.io.File'型にしました。どうして? – Preethi

関連する問題