- com.app.domain
Customer.java
< /ul>
< /li> - com.app.dao
Customerdao.java - CustomerDaOImpl.java < /li>
< /ul>
< /li>
com.app.service
< li> customerservice.java < /li>
customerServiceImpl.java
< /ul>
< /li> - com.app. Web
CustomerHandler.java
< /ul>
< /li>
< /ul>
Ich möchte es an: < /p> - Com.app.Customer
Customer.java verschieben < /li>
customerdao.java - customerdaoimpl.java
- customerservice.java
- customerserviceImpl.java
- customerHandler.java
Wenn ich Tests auf dem neuen Schema ausführe, funktioniert alles gut, aber wenn ich versuche, den Customerservice über den CustomerHandler zu verwenden Kein EntityManager mit der tatsächlichen Transaktion für den aktuellen Thread < /p>
Kann 'persist' aufrufen < /li>
< /ul>
nicht zuverlässig verarbeiten < /blockquote>
Ich habe versucht, meine Klassen nacheinander in das neue Paket zu gruppieren, um zu sehen, welches das Problem ist, und es ist der CustomerserviceImpl.java, wenn ich diese Klasse außerhalb des Com.apps bewege. Kundenpaket My App funktioniert einwandfrei, die Datei applicationContext.xml ist so konfiguriert, dass das Paket com.app.customer, das CustomerDaoImpl und das CustomerserviceImpl, @Transactional Annotations, ich habe gelesen, dass entweder der DAO oder der Service Transaktionsübertragung sein sollten, aber nicht beides, also also, also, also, also so. Ich habe versucht, diese Annotation aus beiden Klasse zu entfernen, aber ich erhalte immer noch den gleichen Fehler. < /P>
Dies ist die vollständige Stapelspur:
Code: Select all
Warning: StandardWrapperValve[dispatcher]: Servlet.service() for servlet dispatcher threw exception
javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - c a n n o t r e l i a b l y p r o c e s s ' p e r s i s t ' c a l l < b r / > a t o r g . s p r i n g f r a m e w o r k . o r m . j p a . S h a r e d E n t i t y M a n a g e r C r e a t o r $ S h a r e d E n t i t y M a n a g e r I n v o c a t i o n H a n d l e r . i n v o k e ( S h a r e d E n t i t y M a n a g e r C r e a t o r . j a v a : 2 7 8 ) < b r / > a t c o m . s u n . p r o x y . $ P r o x y 2 3 4 . m e r g e ( U n k n o w n Source)
at com.app.customer.customerDaoImpl.merge(customerDaoImpl.java:49)
at com.app.customer.customerServiceImpl.store(customerServiceImpl.java:69)
at com.app.customer.customerHandler.store(customerHandler.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:817)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:731)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:870)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
at java.lang.Thread.run(Thread.java:745)
< /code>
Was mache ich falsch? Ist es möglich, eine App mit dem Paket nach Funktionsstil mit EclipSelink JPA zu erstellen? bearbeiten: < /p>
Dies ist die Datei applicationContext.xml mit dem Originalverpackungsstil: < /p>
< /code>
Für den neuen Verpackungsstil habe ich dies geändert: < /p>
< /code>
dazu: < /p>
< /code>
Dann erhalte ich den oben genannten Fehler, aber wenn ich den CustomerserviceImpl.class außerhalb des Pakets com.app.customer an seinen ursprünglichen Ort verschiebe: com.app.service und ändern den ApplicationContext. xml zu: < /p>
< /code>
Meine App funktioniert.
org.eclipse.persistence.jpa.PersistenceProvider
jdbc/appDB
false