无法在ActiveMQ中设置拦截器/代理插件

时间:2012-07-04 00:57:42

标签: activemq

我编写了一个简单的身份验证/授权插件,我想将其注入ActiveMQ。我希望它被称为onConnect和onSubscribe。我跟着these steps at the ActiveMQ website,但发生了一些事情。

1)如果我在// beans / broker / plugins的默认activemq.xml文件中输入我的bean声明,我会收到验证错误,说明那里不允许使用节点“bean”。

2)如果我将插件声明放在broker元素之外,它将注入元素,但它不会调用installPlugin(),也不会调用钩子,大概是因为那是为了代理。

3)如果我将默认的activemq.xml(http://activemq.apache.org/schema/core)中的XML名称空间声明更改为上面列出的文档(http:// activemq。 org / config / 1.0)以及正确的URL,我得到了无法找到架构文档的错误。

我唯一可以想到的是,5.6中的变化要么没有反映在文档中,我做的事情非常错误,或者我只是疯了。这是xml doc的相关部分(减去几个与问题没有直接关系的节点)。

<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'

我可以看到这是一个验证错误,但没有一个文档似乎指向我正确的方向。

2 个答案:

答案 0 :(得分:2)

想出来,虽然我之前尝试过,但它没有奏效。也许我最后一次搞砸了我的命名空间。我更改了我的插件定义,并将Spring命名空间添加到我的bean声明中。

<plugins>
    <bean id="tokenLoginPlugin" class="auth.TokenLoginPlugin" xmlns="http://www.springframework.org/schema/beans">
        <property name="host" value="localhost" />
    </bean>
</plugins>

答案 1 :(得分:0)

我的配置是:

<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:amq="http://activemq.apache.org/schema/core"
  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">

<plugins>
     <bean  xmlns="http://www.springframework.org/schema/beans"  id="probePlugin" class="com.ProbePlugin"/>
</plugins>


</beans>