no multiplexer found for server

3 out of 6 users of my client’s Smart Client solution got this message today: “no multiplexer found for server with id=null”. This hanged their clients and they had to restart their solutions.

Error in servoy_log.txt on server is shown below.

Any help understanding/avoiding this error is much appreciated.

2009-05-21 11:04:16,382 ERROR [TaskExecuter[5]] com.servoy.j2db.dataprocessing.ClientManager - Error flushing message buffer to client 914a9835-0f40-4f26-a049-431bd4199d9a
java.rmi.ConnectException: Connection refused to host: 10.0.0.15; nested exception is: 
	java.net.ConnectException: no multiplexer found for server with id=66533b8d-9eca-401f-92c1-7d820ea1c20a
	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:574)
	at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185)
	at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:94)
	at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:179)
	at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)
	at $Proxy9.flushCachedDatabaseData(Unknown Source)
	at com.servoy.j2db.dataprocessing.Zab.Zd(Zab.java:22)
	at com.servoy.j2db.dataprocessing.Zy.run(Zy.java:26)
	at com.servoy.j2db.util.TaskExecuter.run(TaskExecuter.java:28)
	at java.lang.Thread.run(Thread.java:613)
Caused by: java.net.ConnectException: no multiplexer found for server with id=66533b8d-9eca-401f-92c1-7d820ea1c20a
	at com.sebster.tunnel.impl.vb.createSocket(vb.java:5)
	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:569)
	... 10 more

Hi,

this message means that the server can no longer send messages to the respective client because the connection from the client to the server has disappeared.

The connection could have disappeared for any number of reasons (network outage, client computers that suspend, etc). Not all of these errors are an issue (e.g., if the client closes their laptop to suspend it, you’ll get these errors).

I don’t know what caused the connection to fail, but the client should just reconnect and not hang. What operating system are the smart clients running on?

Regards,
Sebastiaan

For 1 particular customer I have the same error:

2010-08-02 15:56 	TaskExecuter[3] 	ERROR 	com.servoy.j2db.dataprocessing.Zm 	Error flushing message buffer to client C34B4553-2D31-4FB5-9F77-7666B4F0E9AE
I/O exception, see log for full details: Connection refused to host: 172.16.xxx.xxx; nested exception is: java.net.ConnectException: no multiplexer found for server with id=0c901a97-fbe3-436c-abd6-4fdcf839d65a

The strange thing in this case, is that it happens in a scheduled method, so the application is still running, only that scheduled methhod has stopped working and I see errors on the screen from the scheduled method.

Each 8-10 minutes there is a message in the log like this. I’m sure there is an internet connection.
So what else can cause this error?

Server runs on Win2003. This particular solution is running as a client on the server.
Servoy 5.1.4 is running.

what is the full stacktrace then?

Here is the full stack trace:

Installing tunnel in http mode to http://www.globisonline.eu:80/
3-aug-2010 10:32:49 com.sebster.tunnel.impl.rb b
INFO: jcifs library found; NTLM support enabled
3-aug-2010 10:32:49 com.sebster.tunnel.impl.rb b
INFO: bouncy castle library found; SPNEGO support enabled
3-aug-2010 10:32:49 com.sebster.tunnel.impl.rb b
INFO: using direct connection
INFO  - QuartzScheduler            - Quartz Scheduler v.1.5.2 created.
INFO  - ShutdownHookPlugin         - Registering Quartz shutdown hook.
INFO  - RAMJobStore                - RAMJobStore initialized.
INFO  - StdSchedulerFactory        - Quartz scheduler 'scheduler' initialized from default resource file in Quartz package: 'quartz.properties'
INFO  - StdSchedulerFactory        - Quartz scheduler version: 1.5.2
INFO  - QuartzScheduler            - Scheduler scheduler_$_one started.
3-aug-2010 10:43:50 sun.rmi.transport.tcp.TCPTransport$AcceptLoop executeAcceptLoop
WARNING: RMI TCP Accept-3145: accept loop for ServerSocket[addr=null,port=0,localport=0] throws
java.io.IOException: interrupted
	at com.sebster.tunnel.impl.cc.a(cc.java:55)
	at com.sebster.tunnel.TunnelServerSocket.accept(TunnelServerSocket.java:39)
	at com.sebster.tunnel.TunnelServerSocket.accept(TunnelServerSocket.java:21)
	at com.servoy.j2db.util.rmi.compressing.CompressingServerSocket.accept(CompressingServerSocket.java:6)
	at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source)
	at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.InterruptedException
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(Unknown Source)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
	at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
	at com.sebster.tunnel.impl.ud.accept(ud.java:51)
	at com.sebster.tunnel.impl.wd.accept(wd.java:90)
	at com.sebster.tunnel.TunnelServerSocket.accept(TunnelServerSocket.java:23)
	... 5 more
3-aug-2010 10:43:50 sun.rmi.transport.tcp.TCPTransport$AcceptLoop executeAcceptLoop
WARNING: RMI TCP Accept-3145: accept loop for ServerSocket[addr=null,port=0,localport=0] throws
java.io.IOException: Tunnel server failed
	at com.sebster.tunnel.impl.cc.a(cc.java:55)
	at com.sebster.tunnel.impl.ud.c(ud.java:4)
	at com.sebster.tunnel.impl.ud.accept(ud.java:61)
	at com.sebster.tunnel.impl.wd.accept(wd.java:90)
	at com.sebster.tunnel.TunnelServerSocket.accept(TunnelServerSocket.java:23)
	at com.sebster.tunnel.TunnelServerSocket.accept(TunnelServerSocket.java:21)
	at com.servoy.j2db.util.rmi.compressing.CompressingServerSocket.accept(CompressingServerSocket.java:6)
	at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source)
	at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Error in read
	at com.sebster.tunnel.impl.cc.a(cc.java:55)
	at com.sebster.tunnel.impl.bd.b(bd.java:170)
	at com.sebster.tunnel.impl.bd.j(bd.java:20)
	at com.sebster.tunnel.impl.bd.read(bd.java:55)
	at com.sun.net.ssl.internal.ssl.InputRecord.readFully(Unknown Source)
	at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
	at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source)
	at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source)
	at com.sebster.tunnel.impl.cc.d(cc.java:61)
	at com.sebster.tunnel.impl.n.run(n.java:50)
	... 1 more
Caused by: java.net.SocketException: Connection reset
	at java.net.SocketInputStream.read(Unknown Source)
	at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:117)
	at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:110)
	at org.apache.http.impl.io.AbstractSessionInputBuffer.read(AbstractSessionInputBuffer.java:148)
	at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:155)
	at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:138)
	at java.io.BufferedInputStream.fill(Unknown Source)
	at java.io.BufferedInputStream.read(Unknown Source)
	at com.sebster.tunnel.impl.cc.d(cc.java:61)
	at com.sebster.tunnel.impl.qb.a(qb.java:96)
	at com.sebster.tunnel.impl.rb.access$600(rb.java:32)
	at com.sebster.tunnel.impl.zb.run(zb.java:26)
	... 1 more

The above shown errors repeats every 10 seconds

i guess thats because of a reconnect. (trying to)

somehow you get a read error, because of a reset. So somewhere the connection is constantly terminated (between the client and the server)

I’m also getting this error message but in the context of being unable to login the java client at all.

2010-08-17 22:54 RMI TCP Connection(63)-58.173.48.215 ERROR com.servoy.j2db.dataprocessing.Zb Error getting client info: Proxy[IUserClient,RemoteObjectInvocationHandler[UnicastRef2 [liveRef: [endpoint:192.168.1.10:3003,com.sebster.tunnel.impl.wc@57834901,objID:[443fb8f4:12a801a6e90:-7ff4, 6208563582592636897]]]]]
I/O exception, see log for full details: Connection refused to host: 192.168.1.10; nested exception is: java.net.ConnectException: no multiplexer found for server with id=b357cbfa-a1d7-46cb-a36a-1c2fe6b655c4

My java webhost seems unable to diagnose the problem which is more likely related to their virtual server setup. Ports 1099, 8061-3 are committed elsewhere so I have been given 8073-6 instead and there is no SSL at the moment.

#servoy
ApplicationServer.pingDelay=100
ServerManager.numberOfServers=3
SocketFactory.compress=false
SocketFactory.rmiServerFactory=com.servoy.j2db.server.rmi.tunnel.ServerTunnelRMISocketFactoryFactory
SocketFactory.tunnelConnectionMode=http
SocketFactory.useSSL=false
SocketFactory.useTwoWaySocket=true

java.rmi.server.hostname=127.0.0.1

rmi.connection.timeout=120

servoy.allowExistingClientActivate=true

servoy.clientJarLoadOption=eager
servoy.didFirstTimeInit=true
servoy.disableDataChangeNotify=false
servoy.disableServersidePack=false
servoy.fastClientStartup=false

servoy.maxClientHeap=64
servoy.objectPoolSize=50000
servoy.record.lock.lockInDB=false
servoy.rmiStartPort=8075

usedRMIRegistryPort=8075
waitForNativeStartup=true

server.xml is

..

I don’t know much more about the setup other than that there is a proxy host in there somewhere too.

Operating parameters

Server Information
Servoy version 5.2.0 -build 997
Port used by RMI Registry: 8075
Repository version 38

Current time: Tue Aug 17 22:57:31 EST 2010

Uptime: 21 minutes 3 seconds

JDK Information
java.vm.name=Java HotSpot™ 64-Bit Server VM
java.version=1.5.0_22
java.vm.info=mixed mode
java.vm.vendor=Sun Microsystems Inc.

Operating System Information
os.name=Linux
os.version=2.6.18-164.11.1.el5
os.arch=amd64

System Information
Heap memory: allocated=388608K, used=21165K, max=466048K
None Heap memory: allocated=54016K, used=50287K, max=311296

this “192.168.1.10” seems to be a local/private ip adress
what happens if you fill in your host name (from the url how you startup servoy, so something like http://hostname:8073/) as the rmi hostname?

what do you see in your java console log at the client?

Is this a public address? can i try to connect to it?

Hi,

Can you try adding this property in servoy.properties:

system.property.com.sebster.tunnel.http.client.closeRequestOnFlush=false

sebster:
Hi,
Can you try adding this property in servoy.properties:

system.property.com.sebster.tunnel.http.client.closeRequestOnFlush=false

The behaviour up until adding this line was that I could successfully download the client and then most times login. Whether I was actively editing or just sitting and watching the screen after a few seconds I would get a series of dialogs starting with “Could not connect to server” . Eventually the client would just quit.
After installing your code I’m unable to logon at all:

Installing tunnel in socket mode to mydomain.org.au:8075
java.net.ConnectException: Operation timed out
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:430)
	at java.net.Socket.connect(Socket.java:520)
	at java.net.Socket.connect(Socket.java:470)
	at java.net.Socket.<init>(Socket.java:367)
	at java.net.Socket.<init>(Socket.java:180)
	at com.servoy.j2db.server.rmi.tunnel.ClientTunnelRMISocketFactoryFactory$2.createSocket(ClientTunnelRMISocketFactoryFactory.java:202)
	at com.sebster.tunnel.impl.l.connect(l.java:6)
	at com.sebster.tunnel.DelegatingTunnelClient.connect(DelegatingTunnelClient.java:8)
	at com.sebster.tunnel.impl.w.<init>(w.java:17)
	at com.sebster.tunnel.multiplexer.rmi.ClientMultiplexedRmiSocketFactoryProvider$1.<init>(ClientMultiplexedRmiSocketFactoryProvider.java:3)
	at com.sebster.tunnel.multiplexer.rmi.ClientMultiplexedRmiSocketFactoryProvider.<init>(ClientMultiplexedRmiSocketFactoryProvider.java:9)
	at com.sebster.tunnel.multiplexer.rmi.ClientMultiplexedRmiSocketFactoryProvider.<init>(ClientMultiplexedRmiSocketFactoryProvider.java:2)
	at com.servoy.j2db.server.rmi.tunnel.ClientTunnelRMISocketFactoryFactory$RmiSocketFactoryProvider.<init>(ClientTunnelRMISocketFactoryFactory.java:299)
	at com.servoy.j2db.server.rmi.tunnel.ClientTunnelRMISocketFactoryFactory$RmiSocketFactoryProvider.<init>(ClientTunnelRMISocketFactoryFactory.java:297)
	at com.servoy.j2db.server.rmi.tunnel.ClientTunnelRMISocketFactoryFactory.createFactoryProvider(ClientTunnelRMISocketFactoryFactory.java:251)
	at com.servoy.j2db.server.rmi.tunnel.ClientTunnelRMISocketFactoryFactory.<init>(ClientTunnelRMISocketFactoryFactory.java:240)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
	at com.servoy.j2db.smart.J2DBClient.initRMISocketFactory(J2DBClient.java:790)
	at com.servoy.j2db.smart.J2DBClient.startupApplication(J2DBClient.java:727)
	at com.servoy.j2db.smart.J2DBClient$5.run(J2DBClient.java:653)
	at com.servoy.j2db.smart.J2DBClient.mainImpl(J2DBClient.java:677)
	at com.servoy.j2db.smart.J2DBClient.main(J2DBClient.java:641)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at com.sun.javaws.Launcher.executeApplication(Launcher.java:1208)
	at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1155)
	at com.sun.javaws.Launcher.continueLaunch(Launcher.java:998)
	at com.sun.javaws.Launcher.handleApplicationDesc(Launcher.java:527)
	at com.sun.javaws.Launcher.handleLaunchFile(Launcher.java:219)
	at com.sun.javaws.Launcher.run(Launcher.java:166)
	at java.lang.Thread.run(Thread.java:613)
java.net.ConnectException: Operation timed out
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:430)
	at java.net.Socket.connect(Socket.java:520)
	at java.net.Socket.connect(Socket.java:470)
	at java.net.Socket.<init>(Socket.java:367)
	at java.net.Socket.<init>(Socket.java:180)
	at com.servoy.j2db.server.rmi.tunnel.ClientTunnelRMISocketFactoryFactory$2.createSocket(ClientTunnelRMISocketFactoryFactory.java:202)
	at com.sebster.tunnel.impl.l.connect(l.java:6)
	at com.sebster.tunnel.DelegatingTunnelClient.connect(DelegatingTunnelClient.java:8)
	at com.sebster.tunnel.impl.w.<init>(w.java:17)
	at com.sebster.tunnel.multiplexer.rmi.ClientMultiplexedRmiSocketFactoryProvider$1.<init>(ClientMultiplexedRmiSocketFactoryProvider.java:3)
	at com.sebster.tunnel.multiplexer.rmi.ClientMultiplexedRmiSocketFactoryProvider.<init>(ClientMultiplexedRmiSocketFactoryProvider.java:9)
	at com.sebster.tunnel.multiplexer.rmi.ClientMultiplexedRmiSocketFactoryProvider.<init>(ClientMultiplexedRmiSocketFactoryProvider.java:2)
	at com.servoy.j2db.server.rmi.tunnel.ClientTunnelRMISocketFactoryFactory$RmiSocketFactoryProvider.<init>(ClientTunnelRMISocketFactoryFactory.java:299)
	at com.servoy.j2db.server.rmi.tunnel.ClientTunnelRMISocketFactoryFactory$RmiSocketFactoryProvider.<init>(ClientTunnelRMISocketFactoryFactory.java:297)
	at com.servoy.j2db.server.rmi.tunnel.ClientTunnelRMISocketFactoryFactory.createFactoryProvider(ClientTunnelRMISocketFactoryFactory.java:251)
	at com.servoy.j2db.server.rmi.tunnel.ClientTunnelRMISocketFactoryFactory.getRemoteClientSocketFactory(ClientTunnelRMISocketFactoryFactory.java:263)
	at com.servoy.j2db.smart.J2DBClient.connectApplicationServer(J2DBClient.java:1705)
	at com.servoy.j2db.smart.J2DBClient.startApplicationServer(J2DBClient.java:1686)
	at com.servoy.j2db.ClientState.applicationServerInit(ClientState.java:287)
	at com.servoy.j2db.smart.J2DBClient.applicationServerInit(J2DBClient.java:1058)
	at com.servoy.j2db.smart.J2DBClient.startupApplication(J2DBClient.java:733)
	at com.servoy.j2db.smart.J2DBClient$5.run(J2DBClient.java:653)
	at com.servoy.j2db.smart.J2DBClient.mainImpl(J2DBClient.java:677)
	at com.servoy.j2db.smart.J2DBClient.main(J2DBClient.java:641)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at com.sun.javaws.Launcher.executeApplication(Launcher.java:1208)
	at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1155)
	at com.sun.javaws.Launcher.continueLaunch(Launcher.java:998)
	at com.sun.javaws.Launcher.handleApplicationDesc(Launcher.java:527)
	at com.sun.javaws.Launcher.handleLaunchFile(Launcher.java:219)
	at com.sun.javaws.Launcher.run(Launcher.java:166)
	at java.lang.Thread.run(Thread.java:613)
27/08/2010 00:23:43 com.servoy.j2db.util.Debug error
SEVERE: Error getting the service servoy.IApplicationServer from host mydomain.org.au:8075
java.lang.NullPointerException
	at com.servoy.j2db.server.rmi.tunnel.ClientTunnelRMISocketFactoryFactory.getRemoteClientSocketFactory(ClientTunnelRMISocketFactoryFactory.java:264)
	at com.servoy.j2db.smart.J2DBClient.connectApplicationServer(J2DBClient.java:1705)
	at com.servoy.j2db.smart.J2DBClient.startApplicationServer(J2DBClient.java:1686)
	at com.servoy.j2db.ClientState.applicationServerInit(ClientState.java:287)
	at com.servoy.j2db.smart.J2DBClient.applicationServerInit(J2DBClient.java:1058)
	at com.servoy.j2db.smart.J2DBClient.startupApplication(J2DBClient.java:733)
	at com.servoy.j2db.smart.J2DBClient$5.run(J2DBClient.java:653)
	at com.servoy.j2db.smart.J2DBClient.mainImpl(J2DBClient.java:677)
	at com.servoy.j2db.smart.J2DBClient.main(J2DBClient.java:641)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at com.sun.javaws.Launcher.executeApplication(Launcher.java:1208)
	at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1155)
	at com.sun.javaws.Launcher.continueLaunch(Launcher.java:998)
	at com.sun.javaws.Launcher.handleApplicationDesc(Launcher.java:527)
	at com.sun.javaws.Launcher.handleLaunchFile(Launcher.java:219)
	at com.sun.javaws.Launcher.run(Launcher.java:166)
	at java.lang.Thread.run(Thread.java:613)
27/08/2010 00:23:43 com.servoy.j2db.util.Debug error
SEVERE: Cannot find dataservice, it may not be running on server
java.lang.NullPointerException
	at com.servoy.j2db.server.rmi.tunnel.ClientTunnelRMISocketFactoryFactory.getRemoteClientSocketFactory(ClientTunnelRMISocketFactoryFactory.java:264)
	at com.servoy.j2db.smart.J2DBClient.connectApplicationServer(J2DBClient.java:1705)
	at com.servoy.j2db.smart.J2DBClient.startApplicationServer(J2DBClient.java:1686)
	at com.servoy.j2db.ClientState.applicationServerInit(ClientState.java:287)
	at com.servoy.j2db.smart.J2DBClient.applicationServerInit(J2DBClient.java:1058)
	at com.servoy.j2db.smart.J2DBClient.startupApplication(J2DBClient.java:733)
	at com.servoy.j2db.smart.J2DBClient$5.run(J2DBClient.java:653)
	at com.servoy.j2db.smart.J2DBClient.mainImpl(J2DBClient.java:677)
	at com.servoy.j2db.smart.J2DBClient.main(J2DBClient.java:641)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at com.sun.javaws.Launcher.executeApplication(Launcher.java:1208)
	at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1155)
	at com.sun.javaws.Launcher.continueLaunch(Launcher.java:998)
	at com.sun.javaws.Launcher.handleApplicationDesc(Launcher.java:527)
	at com.sun.javaws.Launcher.handleLaunchFile(Launcher.java:219)
	at com.sun.javaws.Launcher.run(Launcher.java:166)
	at java.lang.Thread.run(Thread.java:613)

Well I’m pleased to report some progress. The webhost examined the relationship between Tomcat and Apache and then reset it to use AJP. That allowed me to logon and stay on but every 20 seconds or so a dialog would flash up saying my client was disconnected. I re-enabled sebster’s system.property tweak and am pleased to say it has settled done now, perhaps even long enough for me to test the solution I’m developing. Hooray!

However I still can’t use a socket to connect and wonder how, or whether to get my webhost to try a little harder. Also my webhost actually has me on a shared hosting server and I’m wondering also if things would improve to justify going to a virtual server. BTW costs of such a setup in Australia (anchor.net.au) are $120/mth with 15Gb storage, 1Gb RAM, 15Gb/mth bandwith.