首页 文章

spring batch - 传输文件

提问于
浏览
1

全部,我有一个要求,在使用Spring Batch我生成最终结果文件 . 生成文件后,我需要使用SFTP将它们传输到另一台服务器 . 现在我将它们视为两个独立的程序 . 有没有办法整合这两个?我想知道我是否可以使用Spring Batch生成文件,并且在此之后我可以将文件传输到生成文件的同一程序中的另一台服务器 .

我是Spring Batch的新手,因此寻找可能的方法 .

我收到以下错误:

org.xml.sax.SAXParseException; lineNumber:137; columnNumber:6; schema_reference.4:无法读取架构文档'http://www.springframework.org/schema/integration/sftp/spring-integration-sftp-3.0.xsd',因为1)找不到该文档; 2)文件无法阅读; 3)文档的根元素不是 . at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.warning(ErrorHandlerWrapper.java:99) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:433)at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:347)在com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:4166)的com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler . reportSchemaWarning(XSDHandler.java:4157)位于com.sun.org.apache上的com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument1(XSDHandler.java:2490) . 位于com.sun的com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:573)中的impl.xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.java:2187) . org.apache.xerces.internal.impl.xs.XMLSc hemaLoader.loadSchema(XMLSchemaLoader.java:616)位于com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.findSchemaGrammar(XMLSchemaValidator.java:2453)的com.sun.org.apache.xerces.internal . 位于com.sun.org.apache的com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.emptyElement(XMLSchemaValidator.java:766)中的impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1772) . 位于com.sun.org的com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2768)中的xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:353) . apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)位于com.sun.org的com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116) . com.sun.org上的apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) . apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:846)位于com.sun.org的com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:775) . apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)位于com.sun.org的com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:242) . 位于org.springframework.beans.factory.xml的org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)中的apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:345) . 位于org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java)的org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)中的XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388): 302)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefi org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)中的nitions(AbstractBeanDefinitionReader.java:174)org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:239) org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:196)at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:181)at atg.springframework.beans.factory.xmlorg.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)位于org.springframework.beans.factory的org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111) . xg.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)位于org.springframework.beans.factory文件中的org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) . (xmlBeanDefinitionReader . java:334)org.springframework上的org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) .beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinition s(AbstractBeanDefinitionReader.java:209)org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243) org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory (AbstractRefreshableApplicationContext.java:131)位于org.springframework的org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451) . context.support.ClassPathXmlAppl位于com.sftpexample.main.MainApp.main(MainApp.java:21)的org.springframework.context.support.ClassPathXmlApplicationContext . (ClassPathXmlApplicationContext.java:83)的icationContext . (ClassPathXmlApplicationContext.java:139)引起:java.net .ConnectException:连接超时:在java.net.DualStackPlainSocketImpl.smplConnect(DualStackPlainSocketImpl.java:79)的java.net.AualStackPlainSocketImpl.mplConnect(AbstractPlainSocketImpl.java:337在java.net.AbstractPlainImpl.connectToAddress(AbstractPlainSocketImpl.java:200)java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)java.net的java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) . java.net.Socket.connect(Socket.java:579)上的SocksSocketImpl.connect(SocksSocketImpl.java:392)位于sun.net.NetworkClient.doConnect(NetworkClient)的java.net.Socket.connect(Socket.java:528) .java:180)在sun.net.www.http.HttpClient.openServer(HttpCl ज.java:432)sun.net.www.http.HttpClient.openServer(HttpClient.java:527)at sun.net.www.http.HttpClient . (HttpClient.java:211)at sun.net.www . http.HttpClient.New(HttpClient.java:308)at sun.net.www.http.HttpClient.New(HttpClient.java:326)at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java: 996)at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:932)at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:850)at sun.net.www .protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1300)at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:640)at com.sun.org.apache.xerces .internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189),位于com.sun.org的com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaParsingConfig.parse(SchemaParsingConfig.java:582) . .apache.xerces.internal.impl.xs.opti.SchemaParsingConfig.parse(SC hemaParsingConfig.java:685)com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaDOMParser.parse(SchemaDOMParser.java:530)at com.sun.org.apache.xerces.internal.impl . xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.java:2175)... 42更多

线程“main”中的异常org.springframework.beans.factory.parsing.BeanDefinitionParsingException:配置问题:无法从URL位置导入bean定义[classpath *:/ jobs / dispatcherJob.xml] Offending resource:class pathresource [applicationContext.xml];嵌套异常是org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:来自URL [file:/ C:/sftpexample/dispatcherJob.xml]的XML文档中的第137行无效;嵌套异常是org.xml.sax.SAXParseException; lineNumber:137; columnNumber:6; cvc-complex-type.2.4.c:匹配的通配符是strict,但是找不到元素'int-sftp:outbound-channel-adapter'的声明 . org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)org.springframework.beans.factory.rarErd位于org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement的org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:245)中的.parsing.ReaderContext.error(ReaderContext.java:76)(DefaultBeanDefinitionDocumentReader) .java:196)org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:181)org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)at org . springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocume ntReader.java:111)org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)at org位于org.springframework.beans.factory.support的org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)中的.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) .AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java) :180)在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(Abstra) ctBeanDefinitionReader.java:243)位于org.springframework.context的org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93) .support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451) )org.springframework.context.support.ClassPathXmlApplicationContext . (ClassPathXmlApplicationContext.java:139)位于or.s.springframework.context.support.ClassPathXmlApplicationContext . (ClassPathXmlApplicationContext.java:83)at com.sftpexample.main.MainApp.main(MainApp . java:21)引起:org.springframework.beans.factory.xml.Xml BeanDefinitionStoreException:来自URL [file:/ C:/sftpexample/dispatcherJob.xml]的XML文档中的第137行无效;嵌套异常是org.xml.sax.SAXParseException; lineNumber:137; columnNumber:6; cvc-complex-type.2.4.c:匹配的通配符是strict,但是找不到元素'int-sftp:outbound-channel-adapter'的声明 . 位于org.springframework.beans.factory的org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)org.springframework.beans.factory位于org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader)的org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)中的.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) .java:209)atorg.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:239)... 20更多引起:org.xml.sax.SAXParseException; lineNumber:137; columnNumber:6; cvc-complex-type.2.4.c:匹配的通配符是strict,但是找不到元素'int-sftp:outbound-channel-adapter'的声明 . at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator $ XSIErrorReporter.reportError(XMLSchemaValidator . java:458)at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3237)at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator . handleStartElement(XMLSchemaValidator.java:1917)at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.emptyElement(XMLSchemaValidator.java:766)at com.sun.org.apache.xerces.i nternal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:353)位于com.sun.org.apache的com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2768) . 位于com.sun.org.apache的com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)中的xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) . 位于com.sun.org.apache的com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:846)中的xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) . 在com.sun.org.apache的com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)中的xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:775) . com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl中的xerces.internal.parsers.DOMParser.parse(DOMParser.java:242) . 解析(DocumentBuilderImpl.java:345)org.springframework.beans.factory文件中的org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388) ......还有25个

不确定为什么会出现Connection Timed out错误 .

XML配置是

xsi:schemaLocation=
    http://www.springframework.org/schema/integration
     http://www.springframework.org/schema/integration/spring-integration-3.0.xsd
    http://www.springframework.org/schema/integration/sftp
    http://www.springframework.org/schema/integration/sftp/spring-integration-sftp-3.0.xsd">

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

 <bean id="sftpSessionFactory"
     class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
    <property name="host" value="server" />
    <property name="user" value="userid" />
    <property name="password" value="pwd" />
    <property name="port" value="22" />
</bean>

<int:channel id="outputChannel" />

<int:channel id="inputChannel" />

<int-sftp:outbound-channel-adapter
    id="sftpOutboundAdapter" session-factory="sftpSessionFactory" channel="inputChannel"
    charset="UTF-8" remote-file-separator="/"
     remote-directory="/tmp/"
     />

 <bean id="fileNameGenerator"
    class="org.springframework.integration.file.DefaultFileNameGenerator" />

 <bean id="sftpJobTasklet" class="com.sftpexample.util.SftpTasklet">
    <property name="fileName"
        value="C:\sftpexample\test.txt" />
    <property name="sftpChannel" ref="inputChannel" />
 </bean>

1 回答

  • 0

    上述问题已得到解决 . 我不得不添加spring-integration-file和spring-integration-sftp jar,它解决了这个问题

相关问题