2015-04-27 437 views
1

我們使用Spring的集成版本 - 4.0.3.RELEASEorg.apache.commons.net.ftp.parser.ParserInitializationException:未知解析器類型:未知類型:L8

我們正在使用<int-ftp:inbound-channel-adapter>。應用程序正在處理連接到本地FileZilla FTP服務器的本地Windows工作站。但是,當我們部署服務器(Linux上的Weblogic 10)的代碼,我們看到下面的錯誤 -

Apr 24, 2015 04:29:34.076 PM - <DEBUG> <task-scheduler-3> <loyalty-batch> <org.springframework.integration.ftp.session.DefaultFtpSessionFactory> - <Connected to server [test.ftp.server:10021]> 
at org.springframework.integration.file.remote.synchronizer.AbstractInboundFileSynchronizer.synchronizeToLocalDirectory(AbstractInboundFileSynchronizer.java:193) 
    at org.springframework.integration.file.remote.synchronizer.AbstractInboundFileSynchronizingMessageSource.receive(AbstractInboundFileSynchronizingMessageSource.java:167) 
    at org.springframework.integration.endpoint.SourcePollingChannelAdapter.receiveMessage(SourcePollingChannelAdapter.java:124) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.doPoll(AbstractPollingEndpoint.java:190) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.access$000(AbstractPollingEndpoint.java:55) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:149) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:146) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller$1.run(AbstractPollingEndpoint.java:284) 
    at org.springframework.integration.util.ErrorHandlingTaskExecutor$1.run(ErrorHandlingTaskExecutor.java:52) 
    at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:51) 
    at org.springframework.integration.util.ErrorHandlingTaskExecutor.execute(ErrorHandlingTaskExecutor.java:59) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller.run(AbstractPollingEndpoint.java:300) 
    at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) 
    at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:82) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:440) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:139) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919) 
    at java.lang.Thread.run(Thread.java:682) 
Caused by: org.springframework.messaging.MessagingException: Failed to execute on session; nested exception is org.apache.commons.net.ftp.parser.ParserInitializationException: Unknown parser type: UNKNOWN Type: L8 
    at org.springframework.integration.file.remote.RemoteFileTemplate.execute(RemoteFileTemplate.java:311) 
    at org.springframework.integration.file.remote.synchronizer.AbstractInboundFileSynchronizer.synchronizeToLocalDirectory(AbstractInboundFileSynchronizer.java:167) 
    at org.springframework.integration.file.remote.synchronizer.AbstractInboundFileSynchronizingMessageSource.receive(AbstractInboundFileSynchronizingMessageSource.java:168) 
    at org.springframework.integration.endpoint.SourcePollingChannelAdapter.receiveMessage(SourcePollingChannelAdapter.java:124) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.doPoll(AbstractPollingEndpoint.java:192) 
    ... 18 more 
Caused by: org.apache.commons.net.ftp.parser.ParserInitializationException: Unknown parser type: UNKNOWN Type: L8 
    at org.apache.commons.net.ftp.parser.DefaultFTPFileEntryParserFactory.createFileEntryParser(DefaultFTPFileEntryParserFactory.java:118) 
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2358) 
    at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2141) 
    at org.springframework.integration.ftp.session.FtpSession.list(FtpSession.java:68) 
    at org.springframework.integration.ftp.session.FtpSession.list(FtpSession.java:41) 
    at org.springframework.integration.file.remote.synchronizer.AbstractInboundFileSynchronizer$1.doInSession(AbstractInboundFileSynchronizer.java:171) 
    at org.springframework.integration.file.remote.synchronizer.AbstractInboundFileSynchronizer$1.doInSession(AbstractInboundFileSynchronizer.java:167) 
    at org.springframework.integration.file.remote.RemoteFileTemplate.execute(RemoteFileTemplate.java:302) 
    ... 22 more 

回答

0

看到這裏的修補程序:https://issues.apache.org/jira/browse/NET-230

而且我看到FTPClientConfig代碼如下:

/** 
* Some servers return an "UNKNOWN Type: L8" message 
* in response to the SYST command. We set these to be a Unix-type system. 
* This may happen if the ftpd in question was compiled without system 
* information. 
* 
* NET-230 - Updated to be UPPERCASE so that the check done in 
* createFileEntryParser will succeed. 
* 
* @since 1.5 
*/ 
public static final String SYST_L8 = "TYPE: L8"; 

因此,請確保您正確配置了DefaultFtpSessionFactory bean。

+0

我看到與批處理war文件捆綁在一起的「commons-net-3.3.jar」版本。 Jira發行「NET-230」是固定版本2.0。我還需要補丁嗎? – user3610560