Community Tip - You can subscribe to a forum, label or individual post and receive email notifications when someone posts a new topic or reply. Learn more! X
Hello everyone!!
I'm trying to connect my java application to the thingworx istance. The goal was reading the value of a property to see if the connection to the thingworx istance was working but the reason I'm here is exactly that it's not even working!
I already saw a bunch of posts about this and some of them are really close to the situation I have but I decided to open a new post because in the log I get some errors that in the other posts I haven't seen yet.
Here is the log. The first underlined lines are the ones that I haven't found in the other posts. Apperantly I have a problem with javassist but I don't know how to solve it and I'm not even sure if that's actually the cause that doesn't allow me to connect to the istance.
The application has started...
11:43:30.681 [main] INFO c.t.c.c.p.ClientMessageProcessor - Created new ClientMessageProcessor [minPoolSize: 4, maxPoolSize: 10, maxThreadLife: 10000, maxQueueSize: 1000]
11:43:30.716 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
11:43:30.723 [main] DEBUG i.n.c.MultithreadEventLoopGroup - -Dio.netty.eventLoopThreads: 16
11:43:30.734 [main] DEBUG i.n.util.internal.PlatformDependent0 - sun.nio.ch.DirectBuffer.cleaner(): available
11:43:30.735 [main] DEBUG i.n.util.internal.PlatformDependent0 - java.nio.Buffer.address: available
11:43:30.735 [main] DEBUG i.n.util.internal.PlatformDependent0 - sun.misc.Unsafe.theUnsafe: available
11:43:30.736 [main] DEBUG i.n.util.internal.PlatformDependent0 - sun.misc.Unsafe.copyMemory: available
11:43:30.737 [main] DEBUG i.n.util.internal.PlatformDependent0 - java.nio.Bits.unaligned: true
11:43:30.737 [main] DEBUG i.n.util.internal.PlatformDependent - Platform: Windows
11:43:30.737 [main] DEBUG i.n.util.internal.PlatformDependent - Java version: 8
11:43:30.737 [main] DEBUG i.n.util.internal.PlatformDependent - -Dio.netty.noUnsafe: false
11:43:30.738 [main] DEBUG i.n.util.internal.PlatformDependent - sun.misc.Unsafe: available
11:43:30.738 [main] DEBUG i.n.util.internal.PlatformDependent - -Dio.netty.noJavassist: false
11:43:30.739 [main] DEBUG i.n.util.internal.PlatformDependent - Javassist: unavailable
11:43:30.739 [main] DEBUG i.n.util.internal.PlatformDependent - You don't have Javassist in your class path or you don't have enough permission to load dynamically generated classes. Please check the configuration for better performance.
11:43:30.739 [main] DEBUG i.n.util.internal.PlatformDependent - -Dio.netty.tmpdir: C:\Users\WHATSA~1\AppData\Local\Temp (java.io.tmpdir)
11:43:30.739 [main] DEBUG i.n.util.internal.PlatformDependent - -Dio.netty.bitMode: 64 (sun.arch.data.model)
11:43:30.740 [main] DEBUG i.n.util.internal.PlatformDependent - -Dio.netty.noPreferDirect: false
11:43:30.754 [main] DEBUG io.netty.channel.nio.NioEventLoop - -Dio.netty.noKeySetOptimization: false
11:43:30.754 [main] DEBUG io.netty.channel.nio.NioEventLoop - -Dio.netty.selectorAutoRebuildThreshold: 512
11:43:30.843 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.numHeapArenas: 8
11:43:30.844 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.numDirectArenas: 8
11:43:30.844 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.pageSize: 8192
11:43:30.844 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxOrder: 11
11:43:30.844 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.chunkSize: 16777216
11:43:30.844 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.tinyCacheSize: 512
11:43:30.844 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.smallCacheSize: 256
11:43:30.844 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.normalCacheSize: 64
11:43:30.844 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxCachedBufferCapacity: 32768
11:43:30.844 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.cacheTrimInterval: 8192
11:43:30.844 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.cacheCleanupInterval: 5000 ms
11:43:30.851 [main] DEBUG c.t.c.c.e.m.CommunicationEndpointMonitorTask - Initializing CommunicationEndpoint Connection Monitor...
11:43:30.852 [Client-EndpointMonitor-1] DEBUG c.t.c.c.e.m.CommunicationEndpointMonitorTask - CommunicationEndpoint Monitor - checking for disconnected endpoints
11:43:30.852 [Client-EndpointMonitor-1] INFO c.t.c.c.e.m.CommunicationEndpointMonitorTask - Endpoint not connected [name: EventClient, id: 0]. Attempting [re]connect...
11:43:30.852 [Client-EndpointMonitor-1] DEBUG c.t.c.c.e.ClientCommunicationEndpoint - Clearing endpoint authentication data [id: 0]
11:43:30.852 [Client-EndpointMonitor-1] INFO c.t.c.c.e.ClientCommunicationEndpoint - Needed to refill connections on client endpoint [id: 0] : [active: 0, max: 1]
11:43:30.998 [Client-EndpointMonitor-1] DEBUG i.n.util.internal.ThreadLocalRandom - -Dio.netty.initialSeedUniquifier: 0x5f50c9f995c33738
11:43:31.004 [Client-EndpointMonitor-1] DEBUG i.n.channel.ChannelOutboundBuffer - -Dio.netty.threadLocalDirectBufferSize: 65536
11:43:31.004 [Client-EndpointMonitor-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.maxCapacity.default: 262144
11:43:31.015 [Client-EndpointMonitor-1] DEBUG io.netty.buffer.ByteBufUtil - -Dio.netty.allocator.type: unpooled
11:43:31.033 [NettyClient-NIO-1] DEBUG c.t.c.c.c.n.NettyClientConnectionFactory - initializing a secure websocket connection [ignore ssl errors: true]
11:43:31.282 [NettyClient-NIO-1] DEBUG io.netty.util.ResourceLeakDetector - -Dio.netty.leakDetectionLevel: simple
11:43:41.027 [Client-EndpointMonitor-1] INFO c.t.c.c.c.n.NettyClientConnectionFactory - forcing underlying tcp channel closed [is open: true, is active: false]
11:43:41.028 [Client-EndpointMonitor-1] ERROR c.t.c.c.e.ClientCommunicationEndpoint - Refilling connections on [endpoint 0, uri: wss://ubol.cloud.thingworx.com:443/Thingworx/WS] failed : timeout waiting for websocket handshake to complete
11:43:41.028 [Client-EndpointMonitor-1] INFO c.t.c.c.e.m.CommunicationEndpointMonitorTask - Endpoint reconnection was unsuccessful [name: EventClient, id: 0]
Here is my code. I've posted this because I use a while so that the app waits until the connection is enstablished. If I don't use the while the application keeps running and just ends printing "Terminating the application..." even if the client hasn't even started the websocket protocol yet. So the next question is, do you think is okay to have that while or am I using the wrong primitives here and there is a better way to wait for the connection to be enstablished?
System.out.println("The application has started...");
ClientConfigurator config = new ClientConfigurator();
config.setUri(URI);
//Contesto sicurezza
SecurityClaims claims = SecurityClaims.fromAppKey(appkey);
config.setSecurityClaims(claims);
config.setName("EventClient");
config.setAsSDKType();
config.ignoreSSLErrors(true);
/* CREAZIONE DEL CLIENT - PROVA */
try
{
EventClient client = new EventClient(config);
client.start();
/* the while stops the program until the client is connected, if I don't do this the app just terminates before even trying to initialize the secure websocket connection, I don't know why */
while(!client.isConnected());
if(client.isConnected())
{
System.out.println("Currently connected to "+URI);
InfoTable result = client.readProperty(ThingworxEntityTypes.Things, "AndroidDevice_356768063537221", "cpuUsage", 15000);
String temp = result.getFirstRow().getStringValue("cpuUsage");
System.out.println("Value of the property cpuUsage: "+temp);
}
}
catch (Exception e)
{
System.out.println("The application is not connected to ThingWorx, terminating...");
e.printStackTrace();
}
System.out.println("Terminating the application...");
I really hope you guys can help me because for now I can't really see a way out!!
Michael
Solved! Go to Solution.
Hi Michael,
Have you tried to successfully connect to ThingWorx until now using ThingWorx Java Edge SDK ? The problem seems to be caused by your network not accepting websocket connections. Please run the echo websocket test without TLS in your browser to make sure websocket connections are indeed allowed on your network. Simply press connect in the url I linked to above. If you see Connected as in the picture below then websocket connections are allowed on your network.
On the other hand if your network fails the echo websocket test, please contact your network administrator to have them enabled or try using a different network. We are currently working on updating all academic hosted instances to https ThingWorx 6.6 instances, this will solve the websocket handshake problem in the future. Unfortunately we don't have an estimated time when this process will be completed.
Plese let me know if you are in need of further assistance.
Thank you,
Veronica
Hi Michael,
Have you tried to successfully connect to ThingWorx until now using ThingWorx Java Edge SDK ? The problem seems to be caused by your network not accepting websocket connections. Please run the echo websocket test without TLS in your browser to make sure websocket connections are indeed allowed on your network. Simply press connect in the url I linked to above. If you see Connected as in the picture below then websocket connections are allowed on your network.
On the other hand if your network fails the echo websocket test, please contact your network administrator to have them enabled or try using a different network. We are currently working on updating all academic hosted instances to https ThingWorx 6.6 instances, this will solve the websocket handshake problem in the future. Unfortunately we don't have an estimated time when this process will be completed.
Plese let me know if you are in need of further assistance.
Thank you,
Veronica
Hi Veronica,
I tried to run the test as you said and this was the result:
What is incredible though is that I run again the application after the test without changing anything and now it works!!! I don't have really know how but it does! The only explanation is that something in my network wasn't working well before!
Thank you for answering in such a short amount of time! The test was useful to understand if it was a problem that I had or not! I really appreciate it!
Michael