【问题标题】:Error Spring integration xsd for aws sqsaws sqs的错误Spring集成xsd
【发布时间】:2017-09-12 17:19:05
【问题描述】:

我收到一个错误:

Caused by: org.xml.sax.SAXParseException; lineNumber: 16; columnNumber: 44; cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'aws-messaging:sqs-async-client'.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
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:396)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:452)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3230)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1911)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.emptyElement(XMLSchemaValidator.java:760)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:351)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
at com.sun.org.apache.xerces.internal.parsers.XML11Confin.parse(XML11Configuration.java:770)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391) 

我正在使用以下 xsd:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aws-messaging="http://www.springframework.org/schema/c"
xmlns:int-aws="http://www.springframework.org/schema/c"
xmlns:aws-context="http://www.springframework.org/schema/p"
xmlns:int="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd"
default-lazy-init="true">

<description>
Connects to SQS, fetches the compressed payload and sends to 
uncompress channel
Step 1 of the flow
</description>

<aws-messaging:sqs-async-client id="sqs"/>

<aws-context:context-credentials>
<aws-context:simple-credentials access-key="${aws.accesskey}"
secret-key="${aws.secretkey}"/>
</aws-context:context-credentials>

这以前可以工作。我用这个作为模板:https://github.com/spring-projects/spring-integration-aws/blob/master/src/test/java/org/springframework/integration/aws/config/xml/SqsMessageHandlerParserTests-context.xml

你能帮忙吗?有什么变化吗?

【问题讨论】:

    标签: spring amazon-web-services spring-integration amazon-sqs


    【解决方案1】:

    看,你有什么命名空间前缀:

    xmlns:aws-messaging="http://www.springframework.org/schema/c"
    xmlns:int-aws="http://www.springframework.org/schema/c"
    xmlns:aws-context="http://www.springframework.org/schema/c"
    

    必须是什么:

           xmlns:int-aws="http://www.springframework.org/schema/integration/aws"
       xmlns:aws-messaging="http://www.springframework.org/schema/cloud/aws/messaging"
          xmlns:aws-context="http://www.springframework.org/schema/cloud/aws/context"
    

    另外,您还必须添加他们的schemaLocations:

           http://www.springframework.org/schema/integration/aws http://www.springframework.org/schema/integration/aws/spring-integration-aws.xsd
       http://www.springframework.org/schema/cloud/aws/messaging http://www.springframework.org/schema/cloud/aws/messaging/spring-cloud-aws-messaging.xsd
          http://www.springframework.org/schema/cloud/aws/context http://www.springframework.org/schema/cloud/aws/context/spring-cloud-aws-context.xsd
    

    【讨论】:

    • 嗯,你必须确保所有这些 jar 都在类路径中,并且你的 IDE 支持 Spring,比如 IDEA 或 STS
    • 但无论如何,您的样本在那里也无法正常工作。只是因为它不正确
    • 您能否指点我一些文档来完成这项工作?我一直在看github.com/spring-projects/spring-integration-aws
    • 不确定您需要什么文档。那不是项目的责任,我已经向您展示了声明 Spring 命名空间的正确方法。其余的一切都取决于您的 IDE。或者只是忽略它并使用 Maven 或 Gradle 构建项目。
    • 了解要使用的 spring-aws 版本会很有用。我现在得到:ClassNotFoundException:org.springframework.cloud.aws.messaging.listener.SqsMessageDeletionPolicy。我尝试添加:编译组:'org.springframework.integration',名称:'spring-integration-aws',版本:'0.5。 0.RELEASE' 但这没有帮助
    猜你喜欢
    • 2017-09-17
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    相关资源
    最近更新 更多