2015-06-22 132 views
0

尝试连接到SFTP主机时出现以下异常。 我已经添加了stacktrace和我的配置文件设置以及我用于sftp的依赖关系。无法找到XML架构名称空间的Spring NamespaceHandler [http://www.springframework.org/schema/integration/sftp]

INFO: Loading XML bean definitions from class path resource [app-config.xml] 
Exception in thread "main" 
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: 
Configuration problem: Unable to locate Spring NamespaceHandler for 
XML schema namespace [http://www.springframework.org/schema/integration/sftp] 
Offending resource: class path resource [app-config.xml] 

    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:70) 
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85) 
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:316) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1421) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1414) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:187) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:141) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:110) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:335) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:216) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:251) 
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127) 
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93) 
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:540) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at com.canaldigital.tsi.bank.config.AppMain.main(AppMain.java:15) 

的pom.xml

<dependency> 
    <groupId>org.springframework.integration</groupId> 
    <artifactId>spring-integration-core</artifactId> 
    <version>4.1.5.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.sshd</groupId> 
    <artifactId>sshd-core</artifactId> 
    <version>0.10.1</version> 
    <scope>compile</scope> 
</dependency> 

的App-config.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:task="http://www.springframework.org/schema/task" 
    xmlns:int="http://www.springframework.org/schema/integration" 
    xmlns:int-sftp="http://www.springframework.org/schema/integration/sftp" 

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd 
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd 
          http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd 
          http://www.springframework.org/schema/integration 
          http://www.springframework.org/schema/integration/spring-integration.xsd 
          http://www.springframework.org/schema/integration/sftp 
          http://www.springframework.org/schema/integration/sftp/spring-integration-sftp.xsd"> 


    <context:component-scan base-package="com.canaldigital.tsi.bank" /> 
    <context:property-placeholder location="classpath:settings.properties" /> 

    <task:scheduled-tasks scheduler="myScheduler"> 
     <task:scheduled ref="myBean" method="printMessage" fixed-delay="600000" initial-delay="3000"/> 
     <task:scheduled ref="myBean" method="checkStatus" fixed-delay="6000" initial-delay="2000"/> 
    </task:scheduled-tasks> 

    <task:scheduler id="myScheduler" pool-size="10" /> 


    <bean id="sftpSessionFactory" class="org.springframework.integration.file.remote.session.CachingSessionFactory"> 
     <constructor-arg ref="defaultSftpSessionFactory" /> 
      <property name="sessionCacheSize" value="10"/> 
      <property name="sessionWaitTimeout" value="1000"/>  
    </bean> 


    <bean id="defaultSftpSessionFactory" 
      class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory"> 
     <property name="host" value="${sftp.host}"/> 
     <property name="username" value="${sftp.username}"/> 
     <property name="password" value="${sftp.password}"/> 
     <property name="port" value="#{sftp.serverPort}"/>  
    </bean> 

<int-sftp:inbound-channel-adapter id="sftpAdapterAutoCreate" 
      session-factory="sftpSessionFactory" 
      channel="requestChannel" 
      filename-pattern="*.csv" 
      remote-directory="/home/oracle/IBSTOBANK/DNB/Norway/Outgoing" 
      preserve-timestamp="true" 
      local-directory="file:target/foo" 
      auto-create-local-directory="true" 
      local-filename-generator-expression="#this.toUpperCase() + '.a'" 
      local-filter="myFilter" 
      temporary-file-suffix=".writing" 
      delete-remote-files="false"> 
     <int:poller fixed-rate="1000" max-messages-per-poll="1"/> 
</int-sftp:inbound-channel-adapter> 
    <int:channel id="requestChannel"> 
     <int:queue/> 
    </int:channel> 

</beans> 

回答

1

这可能是因为你缺少spring-integration-sftp.jar文件在您classpath。你可以验证这个文件是否在classpath。如果不存在,请加下面一个:

<dependency> 
    <groupId>org.springframework.integration</groupId> 
    <artifactId>spring-integration-sftp</artifactId> 
    <version>4.1.5.RELEASE</version> 
</dependency> 
相关问题