1

我正在尝试将 Spring 集成到 HiveMQ(MQTT 代理)插件中。我已经设法加载了spring-context,并且实际上扫描了bean并且可以使用@Inject而不是@Autowire进行自动装配。

当我尝试在这个插件中使用 Spring-Rabbit 时,Spring 框架抱怨它无法正确处理我的 spring-context.xml 中的 xml。

原因:org.xml.sax.SAXParseException:cvc-complex-type.2.4.c:匹配通配符是严格的,但找不到元素“rabbit:connection-factory”的声明。

弹簧上下文如下:

<?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:rabbit="http://www.springframework.org/schema/rabbit"
       xsi:schemaLocation = 'http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/rabbit
        http://www.springframework.org/schema/rabbit/spring-rabbit.xsd'>

    <context:component-scan base-package="com.acme"/>

    <rabbit:connection-factory id="connectionFactory"
                               addresses='localhost'
                               username='username'
                               password='password'
                               virtual-host='vhost'/>

</beans>

我按如下方式加载上下文:

ClassLoader classLoader = this.getClass().getClassLoader();
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext();
ctx.setClassLoader(classLoader);
ctx.setConfigLocation("spring-context.xml");
ctx.refresh();

当我在没有 HiveMQ 插件上下文的情况下正常启动应用程序时,它可以找到所需的一切。

任何提示在哪里寻找?

4

0 回答 0