2017-02-23 55 views
1

我試圖將togglz整合到我的Spring Boot應用程序中,但它看起來好像自動配置難以提供FeatureManager。以下是我的堆棧跟蹤:Togglz Spring Boot - 沒有功能管理器提供

2017-02-23 16:04:30.033 DEBUG [myService,,,] 23359 --- [ restartedMain] org.togglz.core.context.FeatureContext : No cached FeatureManager for class loader: org.sprin[email protected]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性質實現TogglzConfig創建,它似乎是Spring Boot在幕後使用togglz做的事情不是很有效。有沒有人遇到過這個問題或知道如何解決?

+0

可以共享代碼,你是如何設置的? – xiumeteo

+0

它看起來就像我在構造函數中放置一個togglz isActive檢查一樣。我有一個DocumentBuilder()構造函數,並在那裏做切換檢查,當DocumentBuilder()在其他地方實例化時,發生上述錯誤。如果我在DocumentBuilder中將togglz isActive檢查移動到build()方法,事情就可以正常工作。 – deanmau5

+0

你如何使用這些類,你能分享這些代碼塊嗎? – xiumeteo

回答

0

首先,我建議您更新的帖子,包括:

  • 春季啓動配置,如果你正在使用
  • 最小特徵枚舉
  • 的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> 

那麼就應該爲定義返回豆簡單:

  • 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是實現的枚舉TS功能

,可能是有益的,爲您的春季啓動設置其它屬性包括:

togglz.console.enabled=true 
togglz.console.secured=false 
相關問題