注入CDI null

时间:2016-09-20 06:26:14

标签: java cdi inject

我为Inject bean设置了一个项目 但是,当您尝试开始获取空指针错误 你能告诉我没有吗?

的public_html \ WEB-INF \面对-config.xml中

<?xml version='1.0' encoding='UTF-8'?>
<faces-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              version="2.2"
              xmlns="http://xmlns.jcp.org/xml/ns/javaee"
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
    <application>
        <locale-config>
            <default-locale>ru</default-locale>
        </locale-config>

        <resource-bundle>
            <base-name>by.softclub.abank.admin.ui.resources.Labels</base-name>
            <var>lbl</var>
        </resource-bundle>

        <resource-bundle>
            <base-name>by.softclub.abank.admin.ui.resources.Regexp</base-name>
            <var>regexp</var>
        </resource-bundle>

        <action-listener>org.primefaces.application.DialogActionListener</action-listener>
        <navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler>

        <!--   <view-handler>org.primefaces.application.DialogViewHandler</view-handler>  -->
        <el-resolver>
            org.primefaces.application.exceptionhandler.PrimeExceptionHandlerELResolver
        </el-resolver>
    </application>

    <factory>
        <exception-handler-factory>
            org.primefaces.application.exceptionhandler.PrimeExceptionHandlerFactory
        </exception-handler-factory>
    </factory>

    <lifecycle>
        <phase-listener>by.softclub.abank.admin.ui.faces.UniqueSessionPhaseListener</phase-listener>
    </lifecycle>

</faces-config>

的public_html \ WEB-INF \ beans.xml中

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       version="1.2" bean-discovery-mode="annotated">

    <!-- some content -->
</beans>

UniqueSessionPhaseListener

public class UniqueSessionPhaseListener implements PhaseListener {

    @Inject
    ApplicationBean applicationBean;

    public PhaseId getPhaseId() {
        return PhaseId.RENDER_RESPONSE;
    }

    public void afterPhase(PhaseEvent phaseEvent) {
    }

    public void beforePhase(PhaseEvent phaseEvent) {
        if (applicationBean.sessionIntercepted(FacesUtils.getSession())) {
            SessionBean sessionBean = (SessionBean) FacesUtils.getSession().getAttribute("sessionBean");
            if (sessionBean.isAuthenticated()) {
                sessionBean.logoutAction();
            }
        }
    }

}

ApplicationBean

@ApplicationScoped
@Named("applicationBean")
public class ApplicationBean implements Serializable {
    public ApplicationBean() {
    }

}

错误日志

09:35:58,189 ERROR [stderr] (default task-35) java.lang.NullPointerException
09:35:58,189 ERROR [stderr] (default task-35)   at by.softclub.abank.admin.ui.faces.UniqueSessionPhaseListener.beforePhase(UniqueSessionPhaseListener.java:26)
09:35:58,189 ERROR [stderr] (default task-35)   at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:228)
09:35:58,190 ERROR [stderr] (default task-35)   at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:99)
09:35:58,190 ERROR [stderr] (default task-35)   at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
09:35:58,190 ERROR [stderr] (default task-35)   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130)
09:35:58,190 ERROR [stderr] (default task-35)   at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
09:35:58,190 ERROR [stderr] (default task-35)   at com.github.zhanhb.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:55)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
09:35:58,190 ERROR [stderr] (default task-35)   at by.softclub.abank.admin.ui.faces.UrlFilter.doFilter(UrlFilter.java:118)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
09:35:58,190 ERROR [stderr] (default task-35)   at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
09:35:58,190 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
09:35:58,193 ERROR [stderr] (default task-35)   at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
09:35:58,193 ERROR [stderr] (default task-35)   at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
09:35:58,193 ERROR [stderr] (default task-35)   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
09:35:58,193 ERROR [stderr] (default task-35)   at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
09:35:58,193 ERROR [stderr] (default task-35)   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
09:35:58,193 ERROR [stderr] (default task-35)   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
09:35:58,193 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
09:35:58,193 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
09:35:58,193 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
09:35:58,193 ERROR [stderr] (default task-35)   at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
09:35:58,193 ERROR [stderr] (default task-35)   at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
09:35:58,193 ERROR [stderr] (default task-35)   at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
09:35:58,193 ERROR [stderr] (default task-35)   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
09:35:58,193 ERROR [stderr] (default task-35)   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
09:35:58,193 ERROR [stderr] (default task-35)   at java.lang.Thread.run(Thread.java:745)
09:35:58,193 SEVERE [org.primefaces.application.exceptionhandler.PrimeExceptionHandler] (default task-35) null: java.lang.NullPointerException
    at by.softclub.abank.admin.ui.faces.UniqueSessionPhaseListener.beforePhase(UniqueSessionPhaseListener.java:26) [classes:]
    at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:228) [jsf-impl-2.2.12-jbossorg-2.jar:2.2.12-jbossorg-2]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:99) [jsf-impl-2.2.12-jbossorg-2.jar:2.2.12-jbossorg-2]
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) [jsf-impl-2.2.12-jbossorg-2.jar:2.2.12-jbossorg-2]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659) [jboss-jsf-api_2.2_spec-2.2.12.jar:2.2.12]
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98) [primefaces-5.0.jar:5.0]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at com.github.zhanhb.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:55) [character-encoding-filter-2.1.6.4.jar:]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at by.softclub.abank.admin.ui.faces.UrlFilter.doFilter(UrlFilter.java:118) [classes:]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) [undertow-core-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50) [undertow-core-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.2.9.Final.jar:1.2.9.Final]
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172) [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199) [undertow-core-1.2.9.Final.jar:1.2.9.Final]
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774) [undertow-core-1.2.9.Final.jar:1.2.9.Final]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_102]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_102]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_102]

我试试

How to @Inject in a PhaseListener

但也是空指针

public static ApplicationBean getApplicationBean() {
    FacesContext context = FacesContext.getCurrentInstance();
    return context.getApplication()
            .evaluateExpressionGet(context, "#{applicationBean}", ApplicationBean.class);
}

Whee ApplicationBean注释@ManagedBean一切正常

更改PhaseListener

import javax.el.ELContext;
import javax.enterprise.context.ApplicationScoped;
import javax.faces.application.Application;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.naming.InitialContext;
import javax.naming.NamingException;

@ApplicationScoped
public class UniqueSessionPhaseListener implements PhaseListener {

    public PhaseId getPhaseId() {
        return PhaseId.RENDER_RESPONSE;
    }

    public void afterPhase(PhaseEvent phaseEvent) {
    }

    public void beforePhase(PhaseEvent phaseEvent) {
        FacesContext context = FacesContext.getCurrentInstance();
        ELContext elContext = context.getELContext();

        Object object = context.getApplication().evaluateExpressionGet(context, "#{applicationBean}", Object.class);

        Application application = context.getApplication();
        ApplicationBean applicationBean0 = application.evaluateExpressionGet(context, "#{applicationBean}", ApplicationBean.class);
        ApplicationBean applicationBean00 = (ApplicationBean) application.getExpressionFactory().createValueExpression(elContext, "#{applicationBean}", ApplicationBean.class).getValue(elContext);
        ApplicationBean applicationBean000 = (ApplicationBean) elContext.getELResolver().getValue(elContext, null, "applicationBean");

        ApplicationBean applicationBean = (ApplicationBean) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "#{applicationBean}");
        ApplicationBean applicationBean1 = context.getApplication().evaluateExpressionGet(context, "#{applicationBean}", ApplicationBean.class);

        InitialContext initialContext = null;
        try {
            initialContext = new InitialContext();
            ApplicationBean beanManager = (ApplicationBean) initialContext.lookup("java:comp/applicationBean");
        } catch (NamingException e) {
            e.printStackTrace();
        }


        ApplicationBean bean = FacesUtils.getApplicationBean();
        if (bean.sessionIntercepted(FacesUtils.getSession())) {
            SessionBean sessionBean = (SessionBean) FacesUtils.getSession().getAttribute("sessionBean");
            if (sessionBean.isAuthenticated()) {
                sessionBean.logoutAction();
            }
        }
    }

}

已于2016年9月21日更新

添加问题:

1)我怎样才能找到正确的路径上的bean.xml(faces-config在WEB-INF中),所以我觉得不太可能,但仍然有想法,用beans.xml出了点问题。 2)服务器设置,他的库(I WildFly 9)不能影响CDI应用程序吗?

0 个答案:

没有答案