Мне действительно нужна помощь здесь: Я делаю свой первый проект EJB (3.2) с JPA 2.2 и сервером приложений WildFly с базой данных MySQL. Я пытаюсь сохранить данные, используя мой EJB bean, но получаю действительно огромную ошибку «say-nothing-to-me» при выполнении метода (вызванный из управляемого компонента). У меня действительно нет ИДЕИ того, что может быть причиной этого (я думал, что это может иметь какое-то отношение к JTA, но я не уверен - действительно новичок во всех этих вещах).Проблемы, возникающие в проекте EJB
Я также не уверен, что этот проект является хорошей идеей: я не использую объект DAO в этом примере, и я не уверен, как его использовать.
Ребята, вы знаете, где я должен искать проблему?
Это мой управляемый боб. Ничего особенного здесь:
@ManagedBean
@ViewScoped
public class TesteMB {
@Inject private TesteORM testeORM;
@EJB private BaseEJBLocal baseService;
public void gravar() {
this.baseService.adiciona(this.testeORM);
}
public TesteORM getTesteORM() {
return testeORM;
}
public void setTesteORM(TesteORM testeORM) {
this.testeORM = testeORM;
}
}
Это мой EJB класс компонента (я удалил реализацию интерфейса потому, что я где-то читал, что это не обязательно в EJB 3.2 ... это верно?)
@Stateless
public class BaseEJBBean {
@PersistenceContext
protected EntityManager em;
public void add(TestORM orm) {
this.em.persist(orm);
}
}
Вот мой класс DAO. Я заметил, что когда я отлаживаю код, кажется, что он не проходит через класс EJB (я поставил там точку останова, и он сразу переходит к другой точке останова в классе DAO, даже не называя ее где-нибудь ... почему?). Я получаю нулевой указатель во второй строке конструктора:
public class BaseDAO<T extends Entidade> {
private final EntityManagerFactory factory;
private final EntityManager em;
private Class<T> clazz;
public BaseDAO() {
this.factory = Persistence.createEntityManagerFactory("caixaeestoque");
this.em = factory.createEntityManager();
}
public void insert(T orm) {
em.persist(orm);
}
}
Вот основная причина моего исключения:
Вызванный: java.lang.NullPointerException на org.hibernate .engine.transaction.internal.jta.JtaStatusHelper.getStatus (JtaStatusHelper.java:76) на org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.isActive (JtaStatusHelper.java:118) на org.hibernate .engine.transaction.internal.jta.CMTTransaction.join (CMTTransaction.java:149)на org.hibernate.jpa.spi.AbstractEntityManagerImpl.joinTransaction (AbstractEntityManagerImpl.java:1602) на org.hibernate.jpa.spi.AbstractEntityManagerImpl.postInit (AbstractEntityManagerImpl.java:210) на org.hibernate.jpa .internal.EntityManagerImpl. (EntityManagerImpl.java:91) на org.hibernate.jpa.internal.EntityManagerFactoryImpl.internalCreateEntityManager (EntityManagerFactoryImpl.java:345) на org.hibernate.jpa.internal.EntityManagerFactoryImpl.createEntityManager (EntityManagerFactoryImpl. java: 313) на br.com.meisa.caixaeestoque.comum.BaseDAO. (BaseDAO.java:15) at sun.reflect.NativeConstructorAccessorImpl. newInstance0 (Родной метод) при sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) на sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:408) на org.jboss.weld.injection.ConstructorInjectionPoint.newInstance (ConstructorInjectionPoint.java:113) на org.jboss.weld.injection.ConstructorInjectionPoint.invokeAroundConstructCallbacks (ConstructorInjectionPoint.java:87) на org.jboss.weld.injection.ConstructorInjectionPoint.newInstance (ConstructorInjectionPoint.java:74) на org.jboss.weld.injection.producer.AbstractInstantiator.newInstance (AbstractInstantiator.java:28) на org.jboss.weld.injection.producer.BasicInjectionTarget.produce (BasicInjectionTarget. Java: 116) на org.jboss.weld.injection.producer.BeanInjectionTarget.produce (BeanInjectionTarget.java:194) в org.jboss.weld.bean.ManagedBean.create (ManagedBean.java:149) при орг .jboss.weld.context.unbound.DependentContextImpl.get (DependentContextImpl.java:69) на org.jboss.weld.manager.BeanManagerImpl.getReference (BeanManagerImpl.java:742) на org.jboss.weld.manager .BeanManage rImpl.getInjectableReference (BeanManagerImpl.java:840) на org.jboss.weld.injection.FieldInjectionPoint.inject (FieldInjectionPoint.java:92) на org.jboss.weld.util.Beans.injectBoundFields (Beans.java:370) в org.jboss.weld.util.Beans.injectFieldsAndInitializers (Beans.java:381) в org.jboss.weld.injection.producer.DefaultInjector $ 1.proceed (DefaultInjector.java:71) в орг. jboss.weld.injection.InjectionContextImpl.run (InjectionContextImpl.java:48) на org.jboss.weld.injection.producer.DefaultInjector.inject (DefaultInjector.java:73) на org.jboss.weld.injection. producer.StatelessSessionBeanInjector.inject (STATEL essSessionBeanInjector.java:58) на org.jboss.weld.injection.producer.ejb.SessionBeanInjectionTarget.inject (SessionBeanInjectionTarget.java:140) на org.jboss.as.weld.injection.WeldInjectionContext.inject (WeldInjectionContext. Java: 39) на org.jboss.as.weld.injection.WeldInjectionInterceptor.processInvocation (WeldInjectionInterceptor.java:51) на org.jboss.invocation.InterceptorContext.proceed (InterceptorContext.java:309) в орг .jboss.as.ee.component.ManagedReferenceFieldInjectionInterceptorFactory $ ManagedReferenceFieldInjectionInterceptor.processInvocation (ManagedReferenceFieldInjectionInterceptorFactory.java:109) по адресу org.jboss.invocation.InterceptorContext.proceed (InterceptorContext.java:309) на org.jboss.as.ee.component.ManagedReferenceFieldInjectionInterceptorFactory $ ManagedReferenceFieldInjectionInterceptor.processInvocation (ManagedReferenceFieldInjectionInterceptorFactory.java:109) в org.jboss.invocation .InterceptorContext.proceed (InterceptorContext.java:309) на org.jboss.invocation.WeavedInterceptor.processInvocation (WeavedInterceptor.java:53) на org.jboss.invocation.InterceptorContext.proceed (InterceptorContext.java:309) на org.jboss.as.ee.component.AroundConstructInterceptorFactory $ 1.processInvocation (AroundConstructInterceptorFactory.java:28) в org.jboss.invocation.InterceptorContext.proceed (InterceptorContext.java:309) на org.jboss.as.weld.injection.WeldInterceptorInjectionInterceptor.processInvocation (WeldInterceptorInjectionInterceptor.java:56) на org.jboss.invocation .InterceptorContext.proceed (InterceptorContext.java:309) на org.jboss.as.weld.ejb.Jsr299BindingsCreateInterceptor.processInvocation (Jsr299BindingsCreateInterceptor.java:94) на org.jboss.invocation.InterceptorContext.proceed (InterceptorContext.java : 309) по адресу org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation (NamespaceContextInterceptor.Java: 50) на org.jboss.invocation.InterceptorContext.proceed (InterceptorContext.java:309) в org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx (CMTTxInterceptor.java:273) ... 101 еще
У вас есть persistence.xml? Взгляните на некоторые простые примеры, [здесь один] (http://www.thejavageek.com/2015/01/09/creating-jsf-ejb-jpa-application-using-eclipse-wildfly/), которые могут получить ты начал. – stdunbar
Если вы используете EJB 3.2, вам не нужно определять локальные интерфейсы или какие-либо интерфейсы вообще. Просто избавитесь от него. Или, пожалуйста, разместите содержимое интерфейса, в сообщении об ошибке упоминается метод «addiciona» – rapasoft
Какова основная причина исключения? Эта часть представляет собой ответ. – BalusC