Управляемый компонент JSF не может инициализироваться - PullRequest
1 голос
/ 04 мая 2020

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

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

 @Named
    @ApplicationScoped
    public class ApplicationConfig implements Serializable {

        /**
         * 
         */

        private  Map<String,String> accessRule;

        private static final long serialVersionUID = -7984677603595580195L;

        @PostConstruct
        public void init() throws SQLException, Exception {
            System.out.println("ApplicationContainer INIT");

            accessRule.put("A", "A");

        }

        public Map<String,String> getAccessRule() {
            return accessRule;
        }

        public void setAccessRule(Map<String,String> accessRule) {
            this.accessRule = accessRule;
        }
    }

I have  tried @postconstruct and also tried using the constructor too but the bean is not being called.This how the Named bean is being injected 

    @WebFilter(urlPatterns = { "/*" })
    public class ApplicationFilter implements Filter {

        private static final String FACES_RESOURCES = "javax.faces.resource";
        private static final Logger log = Logger.getLogger(ApplicationFilter.class.getName());

        private boolean disableFilter;
        private String errorPage;
        private String indexPage;

        @Inject
    public ApplicationConfig applicationConfig;

        private List<String> ignoredResources = new ArrayList<>();

        @Override
        public void destroy() {
            // TODO Auto-generated method stub

        }

        @Override
        public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
                throws IOException, ServletException {
            // TODO Auto-generated method stub
            System.out.println(applicationConfig.getAccessRule());
            arg2.doFilter(arg0, arg1);
        }

        @Override
        public void init(FilterConfig arg0) throws ServletException {
            // TODO Auto-generated method stub

        }

    }

Я использовал @Named / @Inject и до сих пор не работает. Я хочу использовать bean-объект приложения, который берет детали из БД и использует их в WebFilter. Пожалуйста, помогите

...