No se puede configurar interceptor/brokerplugin en ActiveMQ

He escrito un complemento de autenticación/autorización simple que quiero inyectar en ActiveMQ. Quiero que se llame onConnect y onSubscribe. he seguido estos pasos en el sitio web de ActiveMQ pero pasan un par de cosas.

1) Si coloco mi declaración de bean en el archivo activemq.xml predeterminado en //beans/broker/plugins, obtengo un error de validación que dice que el nodo "bean" no está permitido allí.

2) Si coloco la declaración del complemento fuera del elemento del intermediario, inyectará el elemento, pero no llamará a installPlugin() ni a los ganchos, presumiblemente porque eso es algo que debe hacer el intermediario.

3) Si cambio la declaración del espacio de nombres XML en el archivo activemq.xml predeterminado (http://activemq.apache.org/schema/core) a lo que se indica en los documentos enumerados anteriormente (http://activemq.org/config /1.0) junto con las URL adecuadas, aparece el error de que no puede encontrar el documento de esquema.

Lo único que se me ocurre es que hubo cambios en 5.6 que no se reflejaron en la documentación, estoy haciendo algo muy mal o simplemente estoy loco. Aquí está la parte relevante del documento xml (menos varios nodos que no están directamente relacionados con el problema).

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

Esto genera la siguiente excepción.

The matching wildcard is strict, but no declaration can be found for element 'broker'.

Si uso las declaraciones xmlns del archivo activemq.xml predeterminado, obtengo lo siguiente.

Invalid content was found starting with element 'bean'

Puedo ver que es un error de validación, pero ninguno de los documentos parece indicarme la dirección correcta.

preguntado el 04 de julio de 12 a las 01:07

2 Respuestas

Lo descubrí, aunque lo había intentado antes y no había funcionado. Tal vez había estropeado mis espacios de nombres la última vez. Cambié la definición de mi complemento y agregué el espacio de nombres Spring a mi declaración de bean.

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

Respondido 04 Jul 12, 12:07

Mi configuración es:

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

Respondido 04 Jul 12, 12:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.