проблема с кешем запросов openjpa в glassfish + форма исключения приведения класса QueryKey - PullRequest
0 голосов
/ 02 мая 2011

Используя openjpa 1.2.0 со встроенным DataCache на Glassfish, позволяя кешировать запросы и закреплять некоторые именованные очереди, мы видим следующее исключение: org.apache.openjpa.persistence.PersistenceException: java.lang.String нельзя преобразовать в org.apache.openjpa.datacache.QueryKey

У кого-нибудь есть идеи?

Полный дамп исключения: [# | 2011-05-01T11: 43: 05.728-0500 | ПРЕДУПРЕЖДЕНИЕ | ВС-appserver9.1 | javax.enterprise.system.core.transaction | _ThreadID = 30; _ThreadName = httpSSLWorkerThread-20393-0; _RequestID = 3ce3425f-cd4b -42b9-a305-570c5745add7; | JTS5054: после завершения произошла непредвиденная ошибка org.apache.openjpa.persistence.PersistenceException: java.lang.Object нельзя преобразовать в org.apache.openjpa.datacache.QueryKey в org.apache.openjpa.kernel.BrokerImpl.afterCompletion (BrokerImpl.java:1870) в com.sun.jts.jta.SynchronizationImpl.after_completion (SynchronizationImpl.java:154) в com.sun.jts.CosTransactions.RegisteredSyncs.distributeAfter (RegisteredSyncs.java:210) в com.sun.jts.CosTransactions.TopCoordinator.afterCompletion (TopCoordinator.java:2585) на com.sun.jts.CosTransactions.CoordinatorTerm.commit (CoordinatorTerm.java:433) на com.sun.jts.CosTransactions.TerminatorImpl.commit (TerminatorImpl.java:249) на com.sun.jts.CosTransactions.CurrentImpl.commit (CurrentImpl.java:623) на com.sun.jts.jta.TransactionManagerImpl.commit (TransactionManagerImpl.java:309) в com.sun.enterprise.distributedtx.J2EETransactionManagerImpl.commit (J2EETransactionManagerImpl.java:1030) в com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.commit (J2EETransactionManagerOpt.java:397) на com.sun.ejb.containers.BaseContainer.completeNewTx (BaseContainer.java:3792) на com.sun.ejb.containers.BaseContainer.postInvokeTx (BaseContainer.java:3571) на com.sun.ejb.containers.WebServiceInvocationHandler.invoke (WebServiceInvocationHandler.java:200) на $ Proxy973.transfer (Неизвестный источник) at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) на com.sun.enterprise.webservice.InvokerImpl.invoke (InvokerImpl.java:81) на com.sun.enterprise.webservice.EjbInvokerImpl.invoke (EjbInvokerImpl.java:82) на com.sun.xml.ws.server.InvokerTube $ 2.invoke (InvokerTube.java:146) в com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke (EndpointMethodHandler.java:257) на com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest (SEIInvokerTube.java:93) на com.sun.xml.ws.api.pipe.Fiber .__ doRun (Fiber.java:595) на com.sun.xml.ws.api.pipe.Fiber. doRun (Fiber.java:554) на com.sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:539) на com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.java:436) на com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process (AbstractTubeImpl.java:106) в com.sun.enterprise.webservice.MonitoringPipe.process (MonitoringPipe.java:147) в com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest (PipeAdapter.java:115) на com.sun.xml.ws.api.pipe.Fiber. _doRun (Fiber.java:595) на com.sun.xml.ws.api.pipe.Fiber. doRun (Fiber.java:554) на com.sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:539) на com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.java:436) на com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process (AbstractTubeImpl.java:106) в com.sun.xml.ws.tx.service.TxServerPipe.process (TxServerPipe.java:317) в com.sun.enterprise.webservice.CommonServerSecurityPipe.processRequest (CommonServerSecurityPipe.java:218) в com.sun.enterprise.webservice.CommonServerSecurityPipe.process (CommonServerSecurityPipe.java:129)в com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest (PipeAdapter.java:115) на com.sun.xml.ws.api.pipe.Fiber. _doRun (Fiber.java:595) на com.sun.xml.ws.api.pipe.Fiber._doRun (Fiber.java:554) на com.sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:539) на com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.java:436) в com.sun.xml.ws.server.WSEndpointImpl $ 2.process (WSEndpointImpl.java:243) в com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle (HttpAdapter.java:444) на com.sun.xml.ws.transport.http.HttpAdapter.handle (HttpAdapter.java:244) в com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle (ServletAdapter.java:135) в com.sun.enterprise.webservice.Ejb3MessageDispatcher.handlePost (Ejb3MessageDispatcher.java:113) в com.sun.enterprise.webservice.Ejb3MessageDispatcher.invoke (Ejb3MessageDispatcher.java:87) в com.sun.enterprise.webservice.EjbWebServiceServlet.dispatchToEjbEndpoint (EjbWebServiceServlet.java:226) на com.sun.enterprise.webservice.EjbWebServiceServlet.service (EjbWebServiceServlet.java:155) на javax.servlet.http.HttpServlet.service (HttpServlet.java:831) на com.sun.enterprise.web.AdHocContextValve.invoke (AdHocContextValve.java:114) в org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:632) в org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:577) в org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:571) на com.sun.enterprise.web.WebPipeline.invoke (WebPipeline.java:87) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:206) в org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:632) в org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:577) в org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:571) в org.apache.catalina.core.ContainerBase.invoke (ContainerBase.java:1080) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:150) в org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:632) в org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:577) в org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:571) в org.apache.catalina.core.ContainerBase.invoke (ContainerBase.java:1080) на org.apache.coyote.tomcat5.CoyoteAdapter.service (CoyoteAdapter.java:272) в com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter (DefaultProcessorTask.java:637) в com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess (DefaultProcessorTask.java:568) в com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process (DefaultProcessorTask.java:813) в com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask (DefaultReadTask.java:341) на com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask (DefaultReadTask.java:263) на com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask (DefaultReadTask.java:214) на com.sun.enterprise.web.connector.grizzly.TaskBase.run (TaskBase.java:265) на com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run (SSLWorkerThread.java:106) Причина: java.lang.ClassCastException: java.lang.Object не может быть приведен к org.apache.openjpa.datacache.QueryKey в org.apache.openjpa.datacache.AbstractQueryCache.onTypesChanged (AbstractQueryCache.java:85) в org.apache.openjpa.datacache.DataCacheStoreManager.updateCaches (DataCacheStoreManager.java:252) в org.apache.openjpa.datacache.DataCacheStoreManager.commit (DataCacheStoreManager.java:90) в org.apache.openjpa.kernel.DelegatingStoreManager.commit (DelegatingStoreManager.java:94)в org.apache.openjpa.kernel.BrokerImpl.endStoreManagerTransaction (BrokerImpl.java:1308) в org.apache.openjpa.kernel.BrokerImpl.endTransaction (BrokerImpl.java:2177) в org.apache.openjpa.kernel.BrokerImpl.afterCompletion (BrokerImpl.java:1846) ... еще 75 | #]

1 Ответ

0 голосов
/ 04 октября 2011

После некоторой отладки я понял, что сгенерированный ключ запроса является нулевым, потому что сущности, используемые в именованном запросе, не включают кеш данных.

...