We are using 'plugins.UserManager.getClientByUID(clientId).shutdown()' to force clients to close down.
A list of active clients are shown and each may be selected for termination.
The client is shown as inactive, finally falling off of the active client list after 3 minutes. The client never goes away.
After the timeout and any UI interaction, the client pops up a dialog "Reconnect Failed: Old transaction or locks found, need to restart the solution.", followed by a solution selection for re-opening a client session, instead of closing the current solution.
This worked in the past, but a Java update snuck in, and seems to have hosed it.
We are running Servoy 7.1, with Java 8, Update 91.
The problem is seen directly executing it from the server or from another computer, so it is not the firewall or network settings, although those have been checked as well.
There was a problem that 7.1 worked around using Java 7: (logged error message below)
Java 7u21 broke server ability to shutdown smart clients
viewtopic.php?f=6&t=20091&p=108148&hilit=error+flushing+message+buffer+to+client#p108148They are shut down by the server, but do not close and no other client communications seems to work either through this plugin.
So the client doesn't receive the shutdown message. The registration is complete and the server returns the requested information on the clients.
Is this the same problem as Java 1.7 and Pre-Servoy 7.x, or is this a different issue?
Thanks!
Joe
The Servoy Server error message is
com.servoy.j2db.dataprocessing.Zb Error flushing message buffer to client
This is the trace stack shown in the log:
java.lang.NullPointerException
at sun.awt.SunToolkit.getSystemEventQueueImplPP(Unknown Source)
at sun.awt.SunToolkit.getSystemEventQueueImplPP(Unknown Source)
at sun.awt.SunToolkit.getSystemEventQueueImpl(Unknown Source)
at java.awt.Toolkit.getEventQueue(Unknown Source)
at java.awt.EventQueue.invokeLater(Unknown Source)
at javax.swing.SwingUtilities.invokeLater(Unknown Source)
at com.servoy.j2db.smart.J2DBClient.invokeLater(J2DBClient.java:4063)
at com.servoy.j2db.ClientState.invokeLater(ClientState.java:1705)
at com.servoy.j2db.ClientStub.shutDown(ClientStub.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source)
at com.sun.proxy.$Proxy18.shutDown(Unknown Source)
at com.servoy.j2db.dataprocessing.ClientProxy.Zc(ClientProxy.java:168)
at com.servoy.j2db.dataprocessing.Zo.run(Zo.java:20)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)