metro-jax-ws icon indicating copy to clipboard operation
metro-jax-ws copied to clipboard

WS-AT recovery is enabled but WS-AT is not ready for runtime

Open anavarro-fdi-ucm-es opened this issue 8 months ago • 38 comments

Hello

I am using Metro 4.0.4 and GlassFish 7.0.15.

I am trying to perform a WS-Atomic transaction between service SAX and service SAY. Both services store an employee on a table. SAX uses MySQL 5.7 and SAY uses MySQL 8.0.

Both services work well independently. SAX can invoke SAY with no problems without @Transactional annotation (com.sun.xml.ws.api.tx.at.Transactional class).

But when service SAX tries to send the transactional context to SAY using @Transactional, the application crashes. The server goes into a loop, always sending the same message.

Although I have included this property at the server's configuration (and even as Maven jvm.config): wsat.recovery.enabled=false the problem seems to be that WS-AT recovery is still enabled.

I have used Payara 2025.02 and I have the same problem. I asked StackOverflow but there is no solution.

I would appreciate some help.

Thanks in advance.

This is the error reported by SAX (in a loop):

javax.transaction.xa.XAException: WSATGatewayRM recover call failed due to StoreException:java.lang.NullPointerException at com.sun.xml.ws.tx.at.internal.WSATGatewayRM.recover(WSATGatewayRM.java:383) at com.sun.xml.ws.tx.at.internal.WSATGatewayRM.recover(WSATGatewayRM.java:357) at com.sun.xml.ws.tx.at.internal.WSATGatewayRM.recover(WSATGatewayRM.java:344) at com.sun.xml.ws.tx.at.tube.WSATClientHelper.processTransactionalRequest(WSATClientHelper.java:146) at com.sun.xml.ws.tx.at.tube.WSATClientHelper.doHandleRequest(WSATClientHelper.java:60) at com.sun.xml.ws.tx.at.tube.WSATClientTube.doProcessRequest(WSATClientTube.java:73) at com.sun.xml.ws.tx.at.tube.WSATClientTube.processRequest(WSATClientTube.java:62) at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1106) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1020) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:989) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:847) at com.sun.xml.ws.client.Stub.process(Stub.java:431) at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:160) at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78) at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:62) at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:132) at jdk.proxy74/jdk.proxy74.$Proxy423.create(Unknown Source) at negocio.x.SAX.create(SAX.java:84) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.exousia.AuthorizationService.lambda$invokeBeanMethod$1(AuthorizationService.java:506) at org.glassfish.exousia.AuthorizationService.runInScope(AuthorizationService.java:586) at org.glassfish.exousia.AuthorizationService.invokeBeanMethod(AuthorizationService.java:506) at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:297) at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4193) at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:604) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:706) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:553) at org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:87) at org.jboss.weld.module.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:766) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:706) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:553) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:122) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:99) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:766) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:706) at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:307) at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4168) at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4158) at com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:155) at jdk.proxy72/jdk.proxy72.$Proxy419.create(Unknown Source) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.webservices.InvokerImpl.invoke(InvokerImpl.java:58) at org.glassfish.webservices.EjbInvokerImpl.invoke(EjbInvokerImpl.java:58) at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:124) at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:59) at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1106) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1020) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:989) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:847) at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:107) at org.glassfish.webservices.MonitoringPipe.process(MonitoringPipe.java:105) at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:92) at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1106) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1020) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:989) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:847) at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:107) at com.sun.enterprise.security.webservices.server.ServerSecurityPipe.processRequest(ServerSecurityPipe.java:178) at com.sun.enterprise.security.webservices.server.ServerSecurityPipe.process(ServerSecurityPipe.java:118) at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:92) at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1106) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1020) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:989) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:847) at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:399) at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:832) at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:386) at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:139) at org.glassfish.webservices.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:84) at org.glassfish.webservices.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:59) at org.glassfish.webservices.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:186) at org.glassfish.webservices.EjbWebServiceServlet.service(EjbWebServiceServlet.java:134) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) at org.glassfish.grizzly.servlet.ServletHandler.doServletService(ServletHandler.java:198) at org.glassfish.grizzly.servlet.ServletHandler.service(ServletHandler.java:149) at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:425) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:144) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:174) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:153) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:196) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:88) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:246) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:178) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:118) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:96) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:51) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:510) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:82) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:83) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:101) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: java.lang.NullPointerException at java.base/java.io.File.(File.java:278) at com.sun.xml.ws.tx.at.internal.WSATGatewayRM.createFile(WSATGatewayRM.java:138) at com.sun.xml.ws.tx.at.internal.WSATGatewayRM.initStore(WSATGatewayRM.java:130) at com.sun.xml.ws.tx.at.internal.WSATGatewayRM.recover(WSATGatewayRM.java:381) ... 99 more javax.transaction.xa.XAException: WSATGatewayRM recover call failed due to StoreException:java.lang.NullPointerException at com.sun.xml.ws.tx.at.internal.WSATGatewayRM.recover(WSATGatewayRM.java:383) at com.sun.xml.ws.tx.at.internal.WSATGatewayRM.recover(WSATGatewayRM.java:357) at com.sun.xml.ws.tx.at.internal.WSATGatewayRM.recover(WSATGatewayRM.java:344) at com.sun.xml.ws.tx.at.tube.WSATClientHelper.processTransactionalRequest(WSATClientHelper.java:146) at com.sun.xml.ws.tx.at.tube.WSATClientHelper.doHandleRequest(WSATClientHelper.java:60) at com.sun.xml.ws.tx.at.tube.WSATClientTube.doProcessRequest(WSATClientTube.java:73) at com.sun.xml.ws.tx.at.tube.WSATClientTube.processRequest(WSATClientTube.java:62) at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1106) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1020) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:989) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:847) at com.sun.xml.ws.client.Stub.process(Stub.java:431) at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:160) at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78) at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:62) at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:132) at jdk.proxy74/jdk.proxy74.$Proxy423.create(Unknown Source) at negocio.x.SAX.create(SAX.java:84) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.exousia.AuthorizationService.lambda$invokeBeanMethod$1(AuthorizationService.java:506) at org.glassfish.exousia.AuthorizationService.runInScope(AuthorizationService.java:586) at org.glassfish.exousia.AuthorizationService.invokeBeanMethod(AuthorizationService.java:506) at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:297) at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4193) at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:604) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:706) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:553) at org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:87) at org.jboss.weld.module.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:766) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:706) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:553) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:122) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:99) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:766) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:706) at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:307) at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4168) at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4158) at com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:155) at jdk.proxy72/jdk.proxy72.$Proxy419.create(Unknown Source) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.webservices.InvokerImpl.invoke(InvokerImpl.java:58) at org.glassfish.webservices.EjbInvokerImpl.invoke(EjbInvokerImpl.java:58) at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:124) at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:59) at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1106) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1020) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:989) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:847) at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:107) at org.glassfish.webservices.MonitoringPipe.process(MonitoringPipe.java:105) at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:92) at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1106) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1020) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:989) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:847) at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:107) at com.sun.enterprise.security.webservices.server.ServerSecurityPipe.processRequest(ServerSecurityPipe.java:178) at com.sun.enterprise.security.webservices.server.ServerSecurityPipe.process(ServerSecurityPipe.java:118) at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:92) at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1106) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1020) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:989) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:847) at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:399) at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:832) at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:386) at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:139) at org.glassfish.webservices.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:84) at org.glassfish.webservices.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:59) at org.glassfish.webservices.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:186) at org.glassfish.webservices.EjbWebServiceServlet.service(EjbWebServiceServlet.java:134) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) at org.glassfish.grizzly.servlet.ServletHandler.doServletService(ServletHandler.java:198) at org.glassfish.grizzly.servlet.ServletHandler.service(ServletHandler.java:149) at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:425) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:144) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:174) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:153) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:196) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:88) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:246) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:178) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:118) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:96) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:51) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:510) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:82) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:83) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:101) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: java.lang.NullPointerException at java.base/java.io.File.(File.java:278) at com.sun.xml.ws.tx.at.internal.WSATGatewayRM.createFile(WSATGatewayRM.java:138) at com.sun.xml.ws.tx.at.internal.WSATGatewayRM.initStore(WSATGatewayRM.java:130) at com.sun.xml.ws.tx.at.internal.WSATGatewayRM.recover(WSATGatewayRM.java:381)

This is the error reported by the server (in a loop):

WS-AT recovery is enabled but WS-AT is not ready for runtime. Processing WS-AT recovery log files...|#] recover() flag=25165824|#] WSATGatewayRM.initStore path:null|#]

anavarro-fdi-ucm-es avatar Feb 24 '25 16:02 anavarro-fdi-ucm-es