2016-05-17 4 views
0

私は本当にここで助けが必要です:私はJPA 2.2を使って私の最初のEJBプロジェクト(3.2)とMySQLデータベースを持つWildFlyアプリケーションサーバーを作っています。私は、EJB Beanを使用してデータを永続化しようとしていますが、メソッドが実行されると(マネージドBeanから呼び出される)、実際に巨大な「何も言わない」エラーが発生します。私は実際にそれを引き起こしているかもしれないというアイディアを持っていません(私は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 Beanクラスである(私はそれがEJB 3.2の必要はありませんことをどこかで読んので、私はインターフェイスの実装を削除...右のことです?)

@Stateless 
public class BaseEJBBean { 

    @PersistenceContext 
    protected EntityManager em; 

    public void add(TestORM orm) { 
     this.em.persist(orm); 
    } 
} 

ここは私のDAOクラスです。私は、コードをデバッグすると、EJBクラスを通過しているように見えないことに気付きました(私はブレークポイントをそこに置いて、DAOクラスの別のブレークポイントにまっすぐに行きます。 )。私は、コンストラクタの2行目でNULLポインタを取得しています:ここで

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); 
    } 

} 

は私の例外の根本的な原因である:

によって引き起こさ

: org.hibernateでのjava.lang.NullPointerException org.hibernateで.engine.transaction.internal.jta.JtaStatusHelper.getStatus org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.isActive(JtaStatusHelper.java:118)で(JtaStatusHelper.java:76) .engine.transaction.internal.jta.CMTTransaction.join(CMTTransaction.java:149)01 org.hibernate.jpaで org.hibernate.jpa.spi.AbstractEntityManagerImpl.joinTransaction org.hibernate.jpa.spi.AbstractEntityManagerImpl.postInit(AbstractEntityManagerImpl.java:210)で(AbstractEntityManagerImpl.java:1602) で.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.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)で sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)での(ネイティブ 方法) 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) at org.jboss.weld.injection.ConstructorInjectionPoint。 org.jboss.weld.injection.producer.AbstractInstantiator.newInstance(AbstractInstantiator.java:28) でのnewInstance(ConstructorInjectionPoint.java:74) でorg.jboss.weld.injection.producer.BasicInjectionTarget.produce(BasicInjectionTarget。ジャワ:116) org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:149)で org.jboss.weld.injection.producer.BeanInjectionTarget.produce(BeanInjectionTarget.java:194) においてにおけるORG org.jboss.weld.managerで.jboss.weld.context.unbound.DependentContextImpl.get org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:742)で(DependentContextImpl.java:69) .BeanManage org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:92) at org.jboss.weld.util.Beans.injectBoundFields(BeansManagerImpl.java:840) ) で org.jboss.weld.util.Beans.injectFieldsAndInitializers(Beans.java:381) でorg.jboss.weld.injection.producer.DefaultInjector 組織で$ 1.proceed(DefaultInjector.java:71) 。 org.jboss.weld.injectionでjboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:48) でorg.jboss.weld.injection.producer.DefaultInjector.inject(DefaultInjector.java:73) 。 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) at org.jboss.as.ee.component.ManagedReferenceFieldInjectionInterceptorFactory $ ManagedReferenceFieldInjectionInterceptor.processInvocation(ManagedReferenceFieldInjectionInterceptorFactory.java:109) org.jboss.invocationで でorg.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)で.InterceptorContext.proceed org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)で(InterceptorContext.java:309) at 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で で org.jboss.invocation.InterceptorContext.proceedで.InterceptorContext.proceed org.jboss.as.weld.ejb.Jsr299BindingsCreateInterceptor.processInvocation(Jsr299BindingsCreateInterceptor.java:94)で(InterceptorContext.java:309) (InterceptorContext.java :309) at 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 more

+0

persistence.xmlはありますか?いくつかの簡単な例を見てみましょう。[ここには1つあります](http://www.thejavageek.com/2015/01/09/creating-jsf-ejb-jpa-application-using-eclipse-wildfly/)あなたは始まった。 – stdunbar

+0

EJB 3.2を使用している場合は、ローカル・インタフェースまたはすべてのインタフェースを定義する必要はありません。ただ取り除くだけです。または、インターフェイスの内容を投稿してください。エラーメッセージに「addiciona」メソッドが表示されます – rapasoft

+1

例外の根本原因は何ですか?その部分が答えを表します。 – BalusC

答えて

0

私はJTAを使用して以来、私は新しいエンティティマネージャをインスタンス化することはできません(ええ、私は知っている:ここでは初心者)。

だから私はBaseDAOクラスで全体のコンストラクタを削除し、単に@PersistenceContextでそれを注釈付き:

private final static String PERSISTENCE_UNIT_NAME = "caixaeestoque"; 

@PersistenceContext(unitName= PERSISTENCE_UNIT_NAME) 
private EntityManager em; 

は、それは私がこの質問を投稿する場合、私がしただけのようEJBとフルアプリケーションで始めて、他の誰かに役立ちます願っています!

関連する問題