2014-10-09 3 views
1

У меня есть приложение Spring-Boot, которое просто имеет простой контроллер останова. На этом контроллере я добавил аннотации jmx @ManagedResource и @ManagedOperation, и он работает нормально. Он правильно отображается в Jmx. Это приложение зависит от библиотеки «global-commons», чтобы использовать многие базовые функции для всех наших модулей.Spring-Boot: Jmx аннотация не работает в библиотеке

Но если я добавлю те же аннотации к классу в этой библиотеке, он будет проигнорирован! И прежде чем вы спросите, да, библиотека импортируется с последним изменением. В журналах нет сообщения об ошибке или предупреждении.

Я настраиваю все свои бобы с помощью xml-файла. Оба класса - это beans, определенные в одном файле. Один из них - @RestController. Другой - простой класс полезности.

Любая идея?

ответ

0

Удостоверьтесь, что классы из общемировой библиотеки управляются Spring. Пока ни один из классов в библиотеке не управляется Spring, аннотации не имеют никакого эффекта.

+0

Они есть. Как я сказал, оба класса определены в том же файле весны xml. – tleveque

0

Я нашел проблемы: боба, который не работал был определен как «внутренним» боб:

<bean id="imMetrics" class="com.imetrik.global.common.metrics.ImGlobalMetrics" init-method="init"> 
    ... 
    <property name="reporterList"> 
     <util:list> 
      <bean id="jmxReporter" class="com.imetrik.global.common.metrics.reporters.ImJmxReporter"> 
       <property name="registryId" value="metricRegistry1"/> 
       <property name="durationUnit" value="SECONDS"/> 
       <property name="rateUnit" value="SECONDS"/> 
       <property name="domain" value="com.imetrik.global.metric"/> 
      </bean> 
     </util:list> 
    </property> 
</bean> 

Аннотированных бобы «jmxReporter».

Но если я вывожу его наружу как обычный «первый уровень» и использую ссылку вместо этого, он работает. Но это раздражает! Есть ли способ заставить его работать даже как внутренняя фасоль?

Смежные вопросы