WEB

spring-integration의 sftp.session.DefaultSftpSessionFactory 설정

PSAwesome 2020. 2. 17. 15:06
반응형

안녕하세요. 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