Togglz Spring Boot - менеджер функций не предоставляется

Я попытался интегрировать togglz в мое приложение Spring Boot, однако, похоже, что при автоматической настройке возникают трудности с предоставлением FeatureManager. Вот мой след стека:

2017-02-23 16:04:30.033 DEBUG [myService,,,] 23359 --- [  restartedMain] org.togglz.core.context.FeatureContext   : No cached FeatureManager for class loader: org.springframework.boot.devtools.restart.classloader.RestartClassLoader@6b8005f1
2017-02-23 16:05:57.403 DEBUG [myService,,,] 23359 --- [  restartedMain] org.togglz.core.context.FeatureContext   : Found 5 FeatureManagerProvider implementations...
2017-02-23 16:06:27.652 DEBUG [myService,,,] 23359 --- [  restartedMain] org.togglz.core.context.FeatureContext   : No FeatureManager provided by org.togglz.core.context.ThreadLocalFeatureManagerProvider
2017-02-23 16:06:36.436 DEBUG [myService,,,] 23359 --- [  restartedMain] org.togglz.core.context.FeatureContext   : No FeatureManager provided by org.togglz.core.context.BeanFinderFeatureManagerProvider
2017-02-23 16:06:45.980 DEBUG [myService,,,] 23359 --- [  restartedMain] org.togglz.core.context.FeatureContext   : No FeatureManager provided by org.togglz.core.context.StaticFeatureManagerProvider
2017-02-23 16:06:51.164 DEBUG [myService,,,] 23359 --- [  restartedMain] org.togglz.core.context.FeatureContext   : No FeatureManager provided by org.togglz.core.context.ContextClassLoaderFeatureManagerProvider
2017-02-23 16:06:55.980 DEBUG [myService,,,] 23359 --- [  restartedMain] o.t.c.c.JNDIFeatureManagerProvider       : FeatureMananger not found: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
2017-02-23 16:06:57.990 DEBUG [myService,,,] 23359 --- [  restartedMain] org.togglz.core.context.FeatureContext   : No FeatureManager provided by org.togglz.core.context.JNDIFeatureManagerProvider

с приложением, в конечном счете умирающим с IllegalStateException:

Caused by: java.lang.IllegalStateException: Could not find the FeatureManager. For web applications please verify that the TogglzFilter starts up correctly. In other deployment scenarios you will typically have to implement a FeatureManagerProvider as described in the 'Advanced Configuration' chapter of the documentation.
    at org.togglz.core.context.FeatureContext.getFeatureManager(FeatureContext.java:53) ~[togglz-core-2.3.0.Final.jar:na]

у меня есть togglz.enabled и мой togglz.feature-enums свойства, определенные в свойствах моего приложения, а также мой класс Configuration, реализующий TogglzConfig, кажется, что все, что Spring Boot делает за кулисами с togglz, не совсем работает. Кто-нибудь еще сталкивался с этим или знает как исправить?

1 ответ

Во-первых, я рекомендую обновить ваш пост, включив в него:

  • Конфигурация весенней загрузки
  • Минимальное перечисление объектов
  • pom.xml

Обратите внимание, что если вы используете весеннюю загрузку, вы должны использовать следующие GAV:

<dependency>
    <groupId>org.togglz</groupId>
    <artifactId>togglz-spring-boot-starter</artifactId>
    <version>2.4.1.Final</version>
</dependency>
<dependency>
    <groupId>org.togglz</groupId>
    <artifactId>togglz-console</artifactId>
    <version>2.4.1.Final</version>
</dependency>

Тогда это должно быть так же просто, как определить bean-компоненты, которые возвращают:

  • StateRepository
  • FeatureProvider
  • UserProvider

Простая реализация этого будет:

@Bean
public StateRepository getStateRepository() {
    return new InMemoryStateRepository()
}

@Bean
public FeatureProvider featureProvider() {
    return new EnumBasedFeatureProvider(MyFeatures.class);
}

@Bean
public UserProvider getUserProvider() {
    return new NoOpUserProvider();
}

Где MyFeatures.class - перечисление, которое реализует

Другие свойства, которые могут быть полезны для весенней загрузки, включают:

togglz.console.enabled=true
togglz.console.secured=false
Другие вопросы по тегам