4

Togglz を Spring MVC アプリと統合すると、例外が発生します。

例外

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.
    org.togglz.core.context.FeatureContext.getFeatureManager(FeatureContext.java:53)
    org.togglz.core.manager.LazyResolvingFeatureManager.getDelegate(LazyResolvingFeatureManager.java:24)
    org.togglz.core.manager.LazyResolvingFeatureManager.getCurrentFeatureUser(LazyResolvingFeatureManager.java:49)
    org.togglz.console.TogglzConsoleServlet.isFeatureAdmin(TogglzConsoleServlet.java:75)
    org.togglz.console.TogglzConsoleServlet.service(TogglzConsoleServlet.java:62)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.togglz.servlet.TogglzFilter.doFilter(TogglzFilter.java:100)

以下の依存関係はmavenで定義されています-

<dependency>
  <groupId>org.togglz</groupId>
  <artifactId>togglz-core</artifactId>
  <version>2.3.0.Final</version>
</dependency>

<!-- Spring integration (optional) -->
<dependency>
  <groupId>org.togglz</groupId>
  <artifactId>togglz-spring-web</artifactId>
  <version>2.3.0.Final</version>
</dependency>
<!-- Togglz Admin Console -->
<dependency>
  <groupId>org.togglz</groupId>
  <artifactId>togglz-console</artifactId>
  <version>2.3.0.Final</version>
</dependency>

私の設定クラス -

@Component
public class MyTogglzConfiguration implements TogglzConfig {

    /* ..... */

    @Override
    public UserProvider getUserProvider() {
        return new UserProvider() {
            @Override
            public FeatureUser getCurrentUser() {
                return new SimpleFeatureUser("admin", true);
            }
        };
    }

    @Override
    public Class<? extends Feature> getFeatureClass() {
        // TODO Auto-generated method stub
        return MyFeatures.class;
    }

    @Override
    public StateRepository getStateRepository() {
        // TODO Auto-generated method stub
         return new FileBasedStateRepository(new File("c:/tmp/features.properties"));
    }
}

マイ フィーチャ クラス-

public enum MyFeatures implements Feature {


    @Label("First Feature")
    FEATURE_ONE,

    @EnabledByDefault
    @Label("Second Feature")
    FEATURE_TWO;

    public boolean isActive() {
        return FeatureContext.getFeatureManager().isActive(this);

    }
}

上記の構成は機能するはずでしたが、「java.lang.IllegalStateException: TogglzConfig または TogglzBootstrap の実装が見つかりませんでした」というメッセージが表示されました。context-params の下に追加した後、このエラーはなくなりましたが、「FeatureManager が見つかりませんでした」というメッセージが表示されるようになりました。

public class WebAppInitializer implements WebApplicationInitializer  {

    @Override
    public void onStartup(ServletContext servletContext) {

        servletContext.setInitParameter("org.togglz.FEATURE_MANAGER_PROVIDED", "true");
    }


 }
4

2 に答える 2