SFTPからファイルをダウンロードするための基本的な春の統合を試みています。以下はコードです。問題は、service-activator が 2 回呼び出されることです。
つまり、ログを見ると、FileListener Bean のログが 2 回呼び出され、com.jcraft.jsch ログも 2 回ログに記録されます。
提案してください。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jms="http://www.springframework.org/schema/jms" xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-sftp="http://www.springframework.org/schema/integration/sftp"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms.xsd
http://www.springframework.org/schema/integration/sftp
http://www.springframework.org/schema/integration/sftp/spring-integration-sftp.xsd">
<bean id="sftpSessionFactory"
class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
<property name="host" value="11.222.333.44" />
<property name="user" value="*****" />
<property name="password" value="******"></property>
<property name="allowUnknownKeys" value="true" />
</bean>
<int-sftp:inbound-channel-adapter id="sftpadapter"
auto-startup="true" session-factory="sftpSessionFactory"
channel="requestChannel" filename-pattern="*.csv" remote-directory="/someDirectory/"
local-directory="D:\\somelocalDirectory\\"
auto-create-local-directory="true" delete-remote-files="false">
</int-sftp:inbound-channel-adapter>
<int:channel id="requestChannel">
<int:queue />
</int:channel>
<int:service-activator input-channel="requestChannel"
ref="FileListener" method="handle" />
<int:poller id="defaultpoller" default="true" fixed-rate="10000"
max-messages-per-poll="1"></int:poller>
<bean id="FileListener" class="com.somePackage.FileListener">
</bean>
AそしてJavaコードはこれと同じくらい簡単です。
public class InboundFileListener2 {
private static Log logger = LogFactory.getLog(InboundFileListener2.class);
public void handle(Message<?> message) {
String someId = null;
String fileName = null;
try {
someId = UUID.randomUUID().toString();
fileName = getFilename(message);
logger.debug(" CorrelationId : "
+ someId + " FileName is : " + fileName);
以下はログです。
SomeId : a77b2bc4-b874-40e7-998d-6ca17aeec196 FileName is : somefile_05032017142503.csv
SomeId : c50a95e9-83f5-4bb8-a3d9-15da0ff553ee FileName is : somefile_05032017142503.csv
Connecting to 11.222.333.44 port 22
Connecting to 11.222.333.44 port 22
Connection established
Connection established
aes256-ctr is not available.
aes192-ctr is not available.
aes256-cbc is not available.
aes192-cbc is not available.
更新しました:
web.xml
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>some-name</display-name>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>