我编写了一个简单的身份验证/授权插件,我想将它注入 ActiveMQ。我希望它被称为 onConnect 和 onSubscribe。我在 ActiveMQ 网站上遵循了这些步骤,但发生了一些事情。
1) 如果我在 //beans/broker/plugins 的默认 activemq.xml 文件中放入我的 bean 声明,我会收到一个验证错误,指出节点“bean”不允许在那里。
2)如果我将插件声明放在代理元素之外,它将注入该元素,但它不会调用 installPlugin() 也不会调用钩子,大概是因为这是代理要做的。
3) 如果我将默认 activemq.xml (http://activemq.apache.org/schema/core) 中的 XML 命名空间声明更改为上面列出的文档中所述的内容 (http://activemq.org/config /1.0) 连同正确的 URL,我得到它找不到架构文档的错误。
我唯一能想到的是 5.6 中的更改未反映在文档中,我做错了什么,或者我只是疯了。这是 xml 文档的相关部分(减去与问题没有直接关系的几个节点)。
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.org/config/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">
<plugins>
<bean id="tokenLoginPlugin" class="auth.TokenLoginPlugin">
<property name="host" value="localhost" />
</bean>
</plugins>
</broker>
这会产生以下异常。
The matching wildcard is strict, but no declaration can be found for element 'broker'.
如果我使用默认 activemq.xml 文件中的 xmlns 声明,我会得到以下信息。
Invalid content was found starting with element 'bean'
我可以看到这是一个验证错误,但似乎没有一个文档将我指向正确的方向。