Все, у меня есть требование, когда при использовании 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.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument1 (XSDHandler.java:2490) на com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument (XSDHandler.java:2187) на com.sun.org.apache.xerces.internal.impl.xs.traversers. XSDHandler.parseSchema (XSDHandler.java:573) на com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema (XMLSchemaLoader.java:616) на com.sun.org.apache.xerces. internal.impl.xs.XMLSchemaValidator.findSchemaGrammar (XMLSchemaValidator.java:2453) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement (XMLSchemaValidator.java:1772) at com.sun. org.apache.xerces.internal.impl.xs.XMLSchemaValidator.emptyElement (XMLSchemaValidator.java:766) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement (XMLNSDocumentScannerImpl.java:353) atcom.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next (XMLDocumentFragmentScannerImpl.java:2768) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next (XMLDocumentScannerImpl.java: 606) на com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next (XMLNSDocumentScannerImpl.java:116) в com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument (XMLDocumentFragmentScannerImpl. java: 511) на com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse (XML11Configuration.java:846) на com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse (XML11Configuration.java:775) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse (XMLParser.java:123) at com. sun.org.apache.xerces.internal.parsers.DOMParser.parse (DOMParser.java:242) на com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse (DocumentBuilderImpl.java:345) at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument (DefaultDocumentLoader.java:75) на org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions (XmlBeanDefinitionReader.java:388) на org.springframework.beans. factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.Java: 334) в org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:302) на org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:174) на org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:209) на 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 (DefaultBeanDef initionDocumentReader.java:181) на org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions (DefaultBeanDefinitionDocumentReader.java:140) на org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions (DefaultBeanDefinitionDocumentReader.java:111) в org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions (XmlBeanDefinitionReader.java:493) на org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions (XmlBeanDefinitionReader.java:390) в org.springframework. beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:334) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.ja ва: 302) на org.springframework.beans.factory.support.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 (AbstractBeanDefinitionReader.java:243) в org.springframework.context. support.AbstractXmlApplicationContext.loadBeanDefinitions (AbstractXmlApplicationContext.java:127) at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions (AbstractXmlApplicationContext.java:93)на org.springframework.context.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) на org.springframework.context.support.ClassPathXmlApplicationContext. (ClassPathXmlApplicationContext.java:83) на com.sftpexample.main.MainApp.main (MainApp.java:21) Вызвано: java.net.ConnectException: время ожидания подключения: подключитесь на java.net.Dual StackPlainSocketImpl.connect0 (Родной метод) на java.net.DualStackPlainSocketImpl.socketConnect (DualStackPlainSocketImpl.java:79) на java.net.AbstractPlainSocketImpl.doConnect (AbstractPlainSocketImpl.java:339) в java.net.AbstractPlainSocketImpl.connectToAddress (AbstractPlainSocketImpl .java: 200) на java.net.AbstractPlainSocketImpl.connect (AbstractPlainSocketImpl.java:182) в java.net.PlainSocketImpl.connect (PlainSocketImpl.java:172) в java.net.SocksSocketImpl.connect (SocksSocketImpl.java : 392) на java.net.Socket.connect (Socket.java:579) на java.net.Socket.connect (Socket.java:528) на sun.net.NetworkClient.doConnect (NetworkClient.java:180) на sun.net.www.http.HttpClient.openServer (HttpClient.java:432) at sun.net.www.http.HttpClient.openServer (HttpClient.java:527) at sun.net.www.http.HttpClient. (HttpClient.java:211) на 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) на 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) на com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion (XMLVersionDetector.java:189) на com.sun.org.apache.xerces.internal.impl.xs .opti.SchemaParsingConfig.parse (SchemaParsingConfig.java:582) на com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaParsingConfig.parse (SchemaParsingConfig.java:685) на com.sun.org .apache.xerces.internal.impl.xs.opti.SchemaDOMParser.parse (SchemaDOMParser.java:530) на com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument (XSDHandler.java : 2175) ... 42 еще
Исключение в теме "main" org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configu проблема с рацией: не удалось импортировать определения bean-компонентов из URL-адреса [classpath *:/jobs/dispatcherJob.xml] Оскорбительный ресурс: ресурс пути класса [applicationContext.xml]; Вложенное исключение - org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: строка 137 в XML-документе из URL [файл:/C: /sftpexample/dispatcherJob.xml] недействительна; Вложенное исключение - org.xml.sax.SAXParseException; lineNumber: 137; columnNumber: 6; cvc-complex-type.2.4.c: Соответствующий шаблон является строгим, но для элемента 'int-sftp: outbound-channel-adapter' не найдено декларации. на org.springframework.beans.factory.parsing.FailFastProblemReporter.error (FailFastProblemReporter.java:68) в org.springframework.beans.factory.parsing.ReaderContext.error (ReaderContext.java:85) в org.springframework. beans.factory.parsing.ReaderContext.error (ReaderContext.java:76) на org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource (DefaultBeanDefinitionDocumentReader.java:245) на org.springframework.beans.factory.xml. DefaultBeanDefinitionDocumentReader.parseDefaultElement (DefaultBeanDefinitionDocumentReader.java:196) на org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions (DefaultBeanDefinitionDocumentReader.java:181) в org.springframework.beans.factory.xml.Defau ltBeanDefinitionDocumentReader.doRegisterBeanDefinitions (DefaultBeanDefinitionDocumentReader.java:140) на org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions (DefaultBeanDefinitionDocumentReader.java:111) на org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions (XmlBeanDefinitionReader. Java: 493) на org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions (XmlBeanDefinitionReader.java:390) на org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:334) на org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:302) at org.springframework.beans.factory.support.AbstractBeanDefinitionRea der.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 (AbstractBeanDefinitionReader.java:243) на org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions (AbstractXmlApplicationContext.java:127) в орг. springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions (AbstractXmlApplicationContext.java:93) на org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory (AbstractRefreshableApplicationContext.java:131) в org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory (AbstractApplicationContext.java:537) at org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:451) на org.springframework.context.support.ClassPathXmlApplicationContext. (ClassPathXmlApplicationContext.java:139) на org.springframework.context.support.ClassPathXmlApplicationContext. (ClassPathXmlApplicationContext.java:83) в com.sftpexample.main.MainApp.main (MainApp.java21) Вызвано: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: строка 137 в документе XML из URL [файл:/C: /sftpexample/dispatcherJob.xml] недействительна; Вложенное исключение - org.xml.sax.SAXParseException; lineNumber: 137; columnNumber: 6; cvc-complex-type.2.4.c: Соответствующий шаблон является строгим, но для элемента 'int-sftp: outbound-channel-adapter' не найдено декларации. в org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions (XmlBeanDefinitionReader.java:396) на org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:334) в org.springframework. beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:302) на org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:174) на org.springframework.beans.factory.support. AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:209) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource (DefaultBeanDefinitionDocumentReader.java:239) ... 20 подробнее Вызвано: org.xml.sax.SAXParseException; lineNumber: 137; columnNumber: 6; cvc-complex-type.2.4.c: Соответствующий шаблон является строгим, но для элемента 'int-sftp: outbound-channel-adapter' не найдено декларации. на com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException (ErrorHandlerWrapper.java:198) на 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) на com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator $ XSIErrorReporter.reportError (XMLSchemaValidator.java:458) на com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError (XMLSchemaValidator.java:3237) на com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement (XMLSchemaValidator.java:1917) на com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.emptyElement (XMLSchemaValidator.java:766) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement (XMLNSDocumentScannerImpl.java:353) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next (XMLDocumentFragmentScannerImpl.java:2768) на com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next (XMLDocumentScannerImpl.java:606) на com.sun.org.apache.xerces.internal. impl.XMLNSDocumentScannerImpl.next (XMLNSDocumentScannerImpl.java:116) на com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument (XMLDocumentFragmentScannerImpl.java:511) на com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse (XML11Configuration.java:846) на com.sun.org.apache.xerces.internal. parsers.XML11Configuration.parse (XML11Configuration.java:775) на com.sun.org.apache.xerces.internal.parsers.XMLParser.parse (XMLParser.java:123) на com.sun.org.apache.xerces. internal.parsers.DOMParser.parse (DOMParser.java:242) на com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse (DocumentBuilderImpl.java:345) на org.springframework.beans.factory. xml.DefaultDocumentLoader.loadDocument (DefaultDocumentLoader.java:75) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions (XmlBeanDefinitionReader.jav a: 388) ... 25 еще
не уверен, почему произошла ошибка при подключении.
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>