У меня есть управляемый компонент приложения, который я пытаюсь внедрить в фильтр сеанса, чтобы отфильтровать правила на основе карты, предоставленной из компонента приложения.
Цель компонента приложения - загрузить конфигурацию приложения из база данных на карте, к которой можно получить доступ во время работы приложения.
@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. Пожалуйста, помогите