- 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>
Я хочу переместить его на: < /p> - com.app.customer
customer.java < /li>
customerdao.java - customerdaoimpl.java
- customerservice.java
>>> - customerserviceimpl.java
- customerhandler.java
/> Когда я запускаю тесты на новой схеме, все работает нормально, но когда попытка использовать Customer service через Customerhandler, я получаю эту ошибку: < /p>
Нет EntityManager с фактической транзакцией, доступной для текущей потока < /p>
Не может надежно обработать «Сохранение» Call < /li>
< /ul>
< /blockquote>
Я попытался сгруппировать свои классы в новый пакет один за другим, чтобы увидеть, какая из них является проблемой, и это Customerserviceimpl.java, когда я перемещаю этот класс за пределами Com.App. пакет клиента, мое приложение работает нормально, файл ApplicationContext.xml настроен для сканирования пакета com.app.customer, CustomerDaoImpl и CustomerserviceImpl @Transactional Annotation Я попытался удалить эту аннотацию из любого класса, но я все еще получаю такую же ошибку.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 S o u r c e ) < b r /> 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>
Что я делаю не так? Можно ли создать приложение, используя пакет по стилю функции с Eclipselink JPA? Изменить: < /p>
Это файл ApplicationContext.xml с исходным стилем упаковки: < /p>
< /code>
Для нового стиля упаковки я изменил это: < /p>
< /code>
до этого: < /p>
< /code>
Тогда я получаю ошибку, упомянутую выше, но если я перемещаю Customerserviceimpl.class за пределами пакета com.app.customer в его исходное местоположение: com.app.service и изменить ApplicationContext. xml to: < /p>
< /code>
Мое приложение работает.
org.eclipse.persistence.jpa.PersistenceProvider
jdbc/appDB
false
Подробнее здесь: https://stackoverflow.com/questions/385 ... by-feature