在JSF中注入EntityManager

时间:2015-04-17 17:50:55

标签: jsf ejb entitymanager

我正在使用注射,但我遇到了一些问题:

HTTP Status 500 - javax.ejb.EJBException: The bean encountered a non-application exception; nested exception is:

type Exception report

message javax.ejb.EJBException: The bean encountered a non-application exception; nested exception is:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: javax.ejb.EJBException: The bean encountered a non-application exception; nested exception is: 
    java.lang.NullPointerException
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

javax.faces.el.EvaluationException: javax.ejb.EJBException: The bean encountered a non-application exception; nested exception is: 
    java.lang.NullPointerException
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98)
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
    javax.faces.component.UICommand.broadcast(UICommand.java:311)
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246)
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

javax.ejb.EJBException: The bean encountered a non-application exception; nested exception is: 
    java.lang.NullPointerException
    org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:408)
    org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:312)
    pl.konrad.daoTest.ServiceUzytkownik$$LocalBeanProxy.dodaj(pl/konrad/daoTest/ServiceUzytkownik.java)
    pl.konrad.beans.UzytkownikBean.dodajUzytkownika(UzytkownikBean.java:84)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.apache.el.parser.AstValue.invoke(AstValue.java:278)
    org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
    com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102)
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84)
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
    javax.faces.component.UICommand.broadcast(UICommand.java:311)
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246)
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.NullPointerException
    pl.konrad.daoTest.ServiceUzytkownik.dodaj(ServiceUzytkownik.java:17)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
    org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
    org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
    org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
    org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
    org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
    org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227)
    org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194)
    org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:308)
    org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:303)
    org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:92)
    org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:308)
    pl.konrad.daoTest.ServiceUzytkownik$$LocalBeanProxy.dodaj(pl/konrad/daoTest/ServiceUzytkownik.java)
    pl.konrad.beans.UzytkownikBean.dodajUzytkownika(UzytkownikBean.java:84)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.apache.el.parser.AstValue.invoke(AstValue.java:278)
    org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
    com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102)
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84)
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
    javax.faces.component.UICommand.broadcast(UICommand.java:311)
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246)
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat (TomEE)/7.0.55 (1.7.1) logs.

这是我的Bean:

@ManagedBean(name = "uzytkownikBean")
@ViewScoped
public class UzytkownikBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private Uzytkownik uzytkownik;
    private DataModel<Uzytkownik> modelUzytkownicy;

    @EJB
    private ServiceUzytkownik serviceUzytkownik;

    public Uzytkownik getUzytkownik() {
        return uzytkownik;
    }

    public void setUzytkownik(Uzytkownik uzytkownik) {
        this.uzytkownik = uzytkownik;
    }

    public DataModel<Uzytkownik> getModelUzytkownicy() {
        return modelUzytkownicy;
    }

    public void setModelUzytkownicy(ArrayDataModel<Uzytkownik> modelUzytkownicy) {
        this.modelUzytkownicy = modelUzytkownicy;
    }

    @PostConstruct
    public void init() {
        uzytkownik = new Uzytkownik();
    }

    public void dodajUzytkownika() {
        serviceUzytkownik.dodaj(uzytkownik);
    }
}

我的EJB类:

@Stateless
public class ServiceUzytkownik {

    @PersistenceContext
    private EntityManager em;

    public void dodaj(Uzytkownik uzytkownik) {
        em.persist(uzytkownik);
    }
}

现在怎么了?如果我应该将它添加到persistence.xml。这是我对Hibernate的配置。在创建动态Web项目时,会添加连接,因此可能没有必要。但就目前而言,我必须摆脱这个错误。连接到数据库时出错可能看起来不一样。

<properties>
    <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
    <property name="javax.persistence.jdbc.user" value="konrad" />
    <property name="javax.persistence.jdbc.password" value="konrad" />
    <property name="javax.persistence.jdbc.url"
              value="jdbc:mysql://localhost:3306/bazahealthhelper" />
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
    <property name="hibernate.hbm2ddl.auto" value="create" />
</properties>

0 个答案:

没有答案