修复Java.lang.IollegalStateException:未找到活动会话.网址为com.rapideclip



我有一个正在运行的RapidClipse X项目,在其中我使用MySQL数据库。我创建了一个类,将数据从一个表复制到另一个表中。为此,我使用流

HibKontoDAO().findAll().stream().forEach( tc -> {
... copy data
}

在我的应用程序中,除了由rest服务调用外,调用和处理此代码的过程在任何地方都能很好地工作。

总是当我通过REST调用它时,我会得到以下错误:

java.lang.IllegalStateException: No active conversation found.
at com.rapidclipse.framework.server.jpa.Jpa.getEntityManager(Jpa.java:200)
at com.rapidclipse.framework.server.jpa.Jpa.getEntityManager(Jpa.java:180)

我做了什么:我曾使用以下简单的Hello World示例进行测试:https://www.javaguides.net/2020/01/resteasy-hello-world-example-tutorial.html

我把代码放在我的应用程序中,它也运行得很好!然后我把它改了。在HelloWorldResource类中,我调用我的代码(返回文本(

String myUmsMes = this.StartTransfer();
final HlpHelloWorldRest helloWorld = new HlpHelloWorldRest(myUmsMes);

当我运行这个时,我会在流中得到错误。

HibKontoDAO().findAll().stream().forEach( tc -> {
... copy data
}

完整堆栈是:

Apr. 10, 2022 10:55:09 AM com.rieder.finmgmt.helper.HlpHelloWorldRestResource StartTransfer
INFO: com.rieder.finmgmt.helper.HlpHelloWorldRestResource Exception happend 
java.lang.IllegalStateException: No active conversation found.
at com.rapidclipse.framework.server.jpa.Jpa.getEntityManager(Jpa.java:200)
at com.rapidclipse.framework.server.jpa.Jpa.getEntityManager(Jpa.java:180)
at com.rapidclipse.framework.server.jpa.dal.JpaDataAccessObject$Default.em(JpaDataAccessObject.java:173)
at com.rapidclipse.framework.server.jpa.dal.JpaDataAccessObject$Default.findAll(JpaDataAccessObject.java:243)
at com.rieder.finmgmt.helper.HlpHelloWorldRestResource.StartTransfer(HlpHelloWorldRestResource.java:89)
at com.rieder.finmgmt.helper.HlpHelloWorldRestResource.helloWorld(HlpHelloWorldRestResource.java:49)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:138)
at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:546)
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:435)
at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$0(ResourceMethodInvoker.java:396)
at org.jboss.resteasy.core.interception.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:358)
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:398)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:365)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:338)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:440)
at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:229)
at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:135)
at org.jboss.resteasy.core.interception.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:358)
at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:138)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:215)
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:245)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:61)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:196)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:624)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1673)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:832)

如果两个代码单独运行,则运行良好。我在网上找不到。。。。找不到活动对话。。。。。

你知道我做错了什么吗,原因是什么,或者如何解决这个问题?提前谢谢!

我玩了很长时间才找到办法。看起来,MyEntityDAO.findAll的内置版本不起作用,如果你用rest调用它的话。我不得不创建一个自己的会话。因此,我在MyEntityDAO中创建了一个小的代码:

public List < MyEntity > getAll() {
try (Session session =  this in my updateHibernateUtil.getSessionFactory().openSession()) {
return session.createQuery("from MyEntity", MyEntity.class).list();
}
}

我必须创建一个Hibernate Util.class,如中所述:https://www.javaguides.net/2021/08/hibernate-example-with-mysql-database.html

然后我在我的复制逻辑中引用了它,一切都很好!

最新更新