안녕하세요. xml 설정이 많은 웹에서 ftp 전송 서버를 추가할 때 필요한 설정을 작성하고자 합니다.
단 방향이 (outbound) 필요하기 때문에 이번 글에서는 outbound 만 작성하게 되었습니다.
진행 순서
- org.springframework.integration.sftp.session.DefaultSftpSessionFactory
- org.springframework.integration.sftp.outbound.SftpMessageHandler
- org.springframework.integration.file.remote.session.CachingSessionFactory
- channel open
- send
- reply
- outbound-gateway 설정
아래 코드들은 integration 설정 관련된 xml 한 곳에 작성합니다.
구현 코드
1. DefaultSftpSessionFactory를 선언합니다.
<bean id="mySftpSessionFactory" class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
<property name="host" value="localhost"/>
<property name="port" value="22"/>
<property name="user" value="ps"/>
<property name="passowrd" value="ps123"/>
<property name="enableDaemonThread" value="true"/>
<property name="allowUnknownKeys" value="true"/>
</bean>
추가로 데몬 쓰레드와 unkounKeys의 설정을 true로 변경하였습니다.
두 설정의 default = false
2-1. SftpMessageHandler 설정
<bean class="org.springframework.integration.sftp.outbound.SftpMessageHandler">
<constructor-arg ref="mySftpSessionFactory"/>
</bean>
위에서 설정한 SessionFactory를 인자로 전달합니다.
2-2. CachingSessionFactory
<bean id="mySftpCachingFactory" class="org.springframework.integration.file.remote.session.CachingSessionFactory">
<constructor-arg ref="mySftpSessionFactory"/>
</bean>
1번에서 정의한 팩토리를 캐싱 세션 팩토리에 전달해줍니다.
이 작업은 실제 사용하는 곳에서 다른 모델들이 caching session factory를 기본적으로 사용하고 있어 추가합니다.
3. channel 설정
두 채널이 설정되는데요.
보내는 채널과 응답 채널을 설정합니다.
<int:channel id="mySendSftpChannel"/>
<int:channel id="myReplySftpChannel">
<int:queue />
</int:channel>
응답 채널로 사용하는 것에는 queue를 선언합니다.
4. outbound-gateway
<int-sftp:outbound-gateway id="mySftpOutbound"
session-factory="mySftpCachingFactory"
request-channel="mySendSftpChannel"
reply-channel="myReplySftpChannel"
command="mput"
expression="payload"
remote-directory-expression="'/mytemp/sftp/test/data'"
auto-create-directory="true">
<int-sftp:request-handler-advice-chain>
<int:retry-advice max-attempts="3" send-timeout="300"/>
</int-sftp:request-handler-advice-chain>
<int-sftp:outbound-gateway>
outbound-gateway의 id는 유일 값으로 설정하면 되고,
session-factory 는 sftpHandler를 품은 cachingFactory를 전달합니다.
remote-directory-expression은 서버의 directory 어디에 올릴 것인지 설정하는 부분입니다.
ftp 설정과 매우 흡사하지만 약간 다른 몇 가지로 정리해보았습니다.
감사합니다.
'WEB' 카테고리의 다른 글
highcharts exports 한글로 변경하기 (0) | 2021.01.08 |
---|---|
javascript JSON object validation (0) | 2020.04.04 |
application.properties 설정 (0) | 2020.02.03 |
CodexException: 500 Server Error / Generic.ver (0) | 2019.08.25 |
CodecException: 500 Server Error (0) | 2019.08.21 |