2009-06-05 8 views
2

次の問題があります。初めてJBOSSのserver \ default \ deployフォルダにearファイルを展開すると、うまく動作しているようです。しかし、JBOSSがまだ動作している状態で、earファイルを削除して再コピーすると、以下の例外を除いてユニットテストが失敗します。ホットデプロイ時にエンティティのHibernateマッピングが失われるようなものです。その後、一度変更することなくJBOSSをやり直して再起動すると、再び動作します。つまり、ホットデプロイメントは正しく機能していないのです。jboss hibernateでのホットデプロイメントの問題

この問題が発生しましたか、回避策がありますか?

ありがとうございました。

的環境: のWindows XP SP3 JBossの4.2.3GA にHibernate 3.3.1 にHibernateエンティティマネージャ3.4.0

にjavax.ejb.EJBException:java.lang.IllegalArgumentExceptionが:org.hibernate.hql.ast .QuerySyntaxException:org.jboss.aspects.tx.TxPolicy.invokeInOurTxでorg.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTxでTestEntity [TestEntity FROM]マッピングされていない (Ejb3TxPolicy.java:63) (TxPolicy.java:83 ) at org.jboss.aspects.tx.TxInterceptor $ Required.invoke(TxInterceptor.java:191) at org.jboss.aop.joinpoint.MethodInvoca org.jboss.aop.joinpoint.MethodInvocation.invokeNextでorg.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95) でtion.invokeNext(MethodInvocation.java:101) (MethodInvocation.java:101) org.jboss.aop.joinpoint.MethodInvocation.invokeNextでorg.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62) (MethodInvocation.java:101)org.jboss.aspects.securityで で。 org.jboss.aop.joinpoint.MethodInvocation.invokeNextでorg.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110) でAuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77) (MethodInvocation.java:101) at org.jboss.ejb3.ENCPropagationInterceptor.invoke(EN CPropagationInterceptor.java:46) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) at org。 org.jboss.aop.Dispatcher.invoke(ディスパッチャでjboss.aop.joinpoint.MethodInvocation.invokeNext org.jboss.ejb3.stateless.StatelessContainer.dynamicInvokeで(MethodInvocation.java:101) (StatelessContainer.java:304) 。 java:106) at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82) at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:809) at org.jboss.remoting。 transport.socket.ServerThread.processInvocation(ServerThread.java:608) org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:406) at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:173) 原因:java.lang .IllegalArgumentException:org.hibernate.hql.ast.QuerySyntaxException:TestEntityがマッピングされていない[FROM TestEntity] at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:617) at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery sun.reflectでcom.topcoder.test.TestBean.retrieveAll(TestBean.java:62)でorg.jboss.ejb3.entity.TransactionScopedEntityManager.createQuery(TransactionScopedEntityManager.java:134) で(AbstractEntityManagerImpl.java:96) .NativeMethodAccessorImpl.invoke0(ネイティブメソッド) at sun.r eflect.NativeMethodAccessorImpl。invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース) at java.lang.reflect.Method.invoke(不明なソース) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java :112)org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166で )org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63で ) org.jboss.aopでorg.jboss.aop.joinpoint.MethodInvocation.invokeNextでorg.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54) で.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) (MethodInvocation.java :101) からorg.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx.TxPolicy。 invokeInOurTx(TxPolicy.java:79) at org.jboss.aspects.tx.TxInterceptor $ Required.invoke(TxInterceptor.java:191) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) org.jboss.aop.joinpoint.MethodInvocation.invokeNextでorg.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95) (MethodInvocation.java:101)org.jboss.ejb3.statelessで で。 StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(Metho ORGでorg.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invokeでorg.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77) (Ejb3AuthenticationInterceptor.java:110) でdInvocation.java:101) 。 (MethodInvocation.java:101) at java:101) at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss。 ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java) :304)org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106で )org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82で ) org.jboss.remoting.ServerInvokerで.invoke(ServerInvoker.java:809) at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:608) at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java :406) (org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:173) ) .Client.invoke(Client.java:1634) at org.jboss.remoting.Client.invoke(Client.java:548)(InvokeRemoteInterceptor.java:62) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx。 ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:67) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53) org.jboss.ejb3.remoting.IsLocalInterceptor.invokeでorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) (IsLocalInterceptor.java:74)org.jboss.aop.joinpointで で。 MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3。sun.reflect.NativeMethodAccessorImpl.invoke0でstateless.StatelessRemoteProxy.invoke $ Proxy0.retrieveAll(不明なソース)com.topcoder.test.TestEntityTestCase.testFake(TestEntityTestCase.java:101)で で(StatelessRemoteProxy.java:107) (ネイティブメソッド)java.lang.reflect.Method.invokeでsun.reflect.NativeMethodAccessorImpl.invoke(不明なソース)sun.reflect.DelegatingMethodAccessorImpl.invokeで (不明なソース) (不明なソース)junit.frameworkで で 。 TestCase.runTest(TestCase.java:164) at junit.framework.TestCase.runBare(TestCase.java:130) junit.framework.TestResult $ 1.protect(TestResult.java:106) junit.framework.TestResult .runProtected(TestResult.java:124)junit.framework.TestSuite.runTestでjunit.framework.TestCase.run(TestCase.java:120) でjunit.framework.TestResult.run(TestResult.java:109) (TestSuite.java:230) ででjunit.framework.TestSuite.run(TestSuite.java:225) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130) at org.eclipse.jdt.internal。 junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit。 runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) (RemoteTestRunner.java:196) at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:74) at org.jboss.aop org.jboss.aop.joinpoint.MethodInvocation.invokeNextでorg.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:67) で.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) (MethodInvocation.java :101) at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3 .remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74) at org.jboss.aop.joinpo int.MethodInvocation.invokeNext(MethodInvocation.java:101)$ Proxy0.retrieveAll(不明なソース)com.topcoder.testで でorg.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:107) で 。 sun.reflect.DelegatingMethodAccessorImpl.invokeでsun.reflect.NativeMethodAccessorImpl.invoke(不明なソース) でsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) でTestEntityTestCase.testFake(TestEntityTestCase.java:101) (不明なソース) junit.framework.TestCase.runBareでjunit.framework.TestCase.runTest(TestCase.java:164) でjava.lang.reflect.Method.invoke(不明なソース) (TestCase.java:130)のJUnitで で。フレームワーク。テスト結果$ 1.protect(TestResult.ja VA:106) junit.framework.TestResult.runProtected(TestResult.java:124) でjunit.framework.TestCase.runでjunit.framework.TestResult.run(TestResult.java:109) (TestCase.javaで: 120) at junit.framework.TestSuite.runTest(TestSuite.java:230) at junit.framework.TestSuite.run(TestSuite.java:225) at org.eclipse.jdt.internal.junit.runner.junit3。 JUnit3TestReference.run(JUnit3TestReference.java:130) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner。 runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org。eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) 原因:org。 hibernate.hql.ast.QuerySyntaxException:TestEntityは、[FROM TestEntity] のorg.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:158) のorg.hibernate.hql.ast.treeにマップされていません。 org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.javaでorg.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:70) でFromElementFactory.addFromElement(FromElementFactory.java:87) : 255) at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3056) at org.hibernate.hql.antlr.HqlSq (HqlSqlBaseWalker.java:544)で で、org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688) でlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945) org.hibernate.hql.antlr.HqlSqlBaseWalker.statementでorg.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281) (HqlSqlBaseWalker.java:229)org.hibernate.hql.astで で。 org.hibernate.hql.ast.QueryTranslatorImpl.compileでorg.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160) でQueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228) (QueryTranslatorImpl.java:111) at org.hibernate.engine.query.HQLQueryPlan(HQLQueryPlan.java:77) at org.hibernate.engine.query.HQLQueryPlan(HQLQueryPlan.java:56) at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72) at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl .java:133) (org.hibernate.impl.AbstractSessionImpl.createQuery日でcom.topcoder.test.TestBean.retrieveAll(TestBean.java:62) でorg.jboss.ejb3.entity.TransactionScopedEntityManager.createQuery(TransactionScopedEntityManager.java:134) で.createQuery(AbstractEntityManagerImpl.java:93) .reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)(不明なソース) at sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース) at java.lang.reflect.Method.invoke(不明なソース) at org.jboss.aop.joinpoint org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invokeでorg.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166) で.MethodInvocation.invokeNext(MethodInvocation.java:112) (EJB3InterceptorsInterceptor.java:63 org.jboss.aop.joinpointでorg.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54) でorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) で) .MethodInvocation.invokeNext(Metho dInvocation.java:101) at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss。 org.jboss.aop.joinpoint.MethodInvocation.invokeNextでorg.jboss.aspects.tx.TxInterceptor $ Required.invoke(TxInterceptor.java:191) (でaspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79) MethodInvocation.java:101) at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org。 jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62) at org。jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77) at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)org.jbossで でorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) でEjb3AuthenticationInterceptor.java:110) 。 aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation。 java:101) at org.jboss.ejb3.stateless.Sta org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82) でorg.jboss.aop.Dispatcher.invoke(Dispatcher.java:106) でtelessContainer.dynamicInvoke(StatelessContainer.java:304) でorg.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:809) at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:608) at org.jboss.remoting.transport.socket。 ServerThread.dorun(ServerThread.java:406) at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:173)

答えて

0

クラスには何がありますか?

com.topcoder.test.TestBean.retrieveAll(TestBean.java:62)

+0

リスト結果= em.createQuery( "TestEntity FROM")getResultList()で 。 – dcp

+0

2つのアイデア。条件APIに切り替えるか、 "TestEntity"ではなくHQLで完全修飾名を使用してください。 – FoxyBOA

+0

完全修飾名が問題の解決に役立つようです。それはもはやその行で失敗しません。あなたはこの行動の理由になると思いますか?コールドデプロイメントでは完全修飾名は不要ですが、ホットデプロイメントでは必須*の理由は何ですか? ただし、ホットデプロイにはまだ問題があります。私は私のTestBeanクラスのコードのいずれかを変更する場合に実行しようとしたとき、私はこのような例外を取得します: java.lang.RuntimeException:java.lang.IllegalStateException: で申し訳ありませんが を原因 \tを上書きすることはできません私はすべてのトレースをリストすることはできません、私はコメントに許可された文字を使い果たしました。 – dcp