Встроенный брокер ActiveMQ в проблемах Spring / OSGi - PullRequest
1 голос
/ 20 мая 2010

Я столкнулся с очень тревожной проблемой, которая озадачивала меня некоторое время, и мне было интересно, может ли кто-нибудь дать мне некоторое представление об этом.

По сути, я пытаюсь настроить встроенный брокер ActiveMQ в контексте Spring одного из моих комплектов OSGi (в Феликсе). Я скачал пакет и все зависимости, перечисленные на этой странице. Они все работают. Вот как выглядит мой XML-файл контекста Spring:

<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:aop="http://www.springframework.org/schema/aop"
xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:amq="http://activemq.apache.org/schema/core"
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.xsd
    http://www.springframework.org/schema/osgi-compendium http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
    http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd
    http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

<!-- some uninteresting parts ommited -->

<!-- JMS Configurations -->

<amq:broker useJmx="false" start="true">
  <amq:transportConnectors>
    <amq:transportConnector uri="tcp://localhost:0"/>
  </amq:transportConnectors>
</amq:broker>

<!-- other ActiveMQ configs such as destinations and whatnot  -->

Это выглядит довольно хорошо для меня. Однако при запуске я получаю следующее сообщение:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 41 in XML document from URL [bundle://121.0:0/META-INF/spring/bundle-context.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'amq:broker'.

Я обнаружил, что у кого-то возникла похожая проблема в Eclipse (которую я тоже использую), и он, по-видимому, решил ее, указав Eclipse на связанный файл .xsd в банке ActiveMQ. Я пытался сделать то же самое, увы, безрезультатно.

У кого-нибудь есть идеи по поводу того, чего мне здесь не хватает?

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 12 сентября 2010

Просто чтобы дать вам, ребята, некоторую обратную связь, проблема была решена некоторое время назад путем указания номера версии activemq xsd, например ::10000

http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.2.0.xsd"

Однако я больше не загружал такие конфиги (хотя я не оставлял программирование для исследования великолепных ритуалов спаривания Цейлонского голубя, как предложил наш друг, хотя сейчас я серьезно об этом думаю). Сейчас я работаю с брокером, работающим вне моего приложения, поэтому загрузка конфигураций выполняется немного по-другому.

1 голос
/ 10 сентября 2010

Не обращая слишком пристального внимания на вашу конкретную проблему, я бы порекомендовал просмотреть строки xmlns: * и xsi: schemalocation = ... с гребнем с мелкими зубьями. Вы можете просто найти что-то неожиданное.

0 голосов
/ 22 апреля 2012

Перечислите комплект 'org.apache.activemq-core' (например, 'комплект 88' в равноденствие) и найдите путь, по которому он экспортирует файл activemq.xsd (запускает META-INF ...) и убедитесь, что ваш пакет с конфигурацией amq broker xml импортирует его (добавьте его в Import-Packages: например, osgi.bnd)

...