@Test public void clientEndpointConfigWithUserProperties() throws Exception { Map<String,Object> userProperties = Collections.singletonMap("foo", "bar"); URI uri = new URI("ws://localhost/abc"); this.wsClient.setUserProperties(userProperties); this.wsClient.doHandshake(this.wsHandler, this.headers, uri).get(); ArgumentCaptor<ClientEndpointConfig> captor = ArgumentCaptor.forClass(ClientEndpointConfig.class); verify(this.wsContainer).connectToServer(any(Endpoint.class), captor.capture(), any(URI.class)); ClientEndpointConfig endpointConfig = captor.getValue(); assertEquals(userProperties, endpointConfig.getUserProperties()); }
@Override protected ListenableFuture<WebSocketSession> doHandshakeInternal(WebSocketHandler webSocketHandler, HttpHeaders headers, final URI uri, List<String> protocols, List<WebSocketExtension> extensions, Map<String, Object> attributes) { int port = getPort(uri); InetSocketAddress localAddress = new InetSocketAddress(getLocalHost(), port); InetSocketAddress remoteAddress = new InetSocketAddress(uri.getHost(), port); final StandardWebSocketSession session = new StandardWebSocketSession(headers, attributes, localAddress, remoteAddress); final ClientEndpointConfig endpointConfig = ClientEndpointConfig.Builder.create() .configurator(new StandardWebSocketClientConfigurator(headers)) .preferredSubprotocols(protocols) .extensions(adaptExtensions(extensions)).build(); endpointConfig.getUserProperties().putAll(getUserProperties()); final Endpoint endpoint = new StandardWebSocketHandlerAdapter(webSocketHandler, session); Callable<WebSocketSession> connectTask = () -> { this.webSocketContainer.connectToServer(endpoint, endpointConfig, uri); return session; }; if (this.taskExecutor != null) { return this.taskExecutor.submitListenable(connectTask); } else { ListenableFutureTask<WebSocketSession> task = new ListenableFutureTask<>(connectTask); task.run(); return task; } }
private ServerApplicationConfig getServerApplicationConfig(ClientEndpointConfig clientEndpointConfig) throws DeploymentException { final Object o = clientEndpointConfig.getUserProperties().get(SERVER_CONFIG); if (o != null && o instanceof ServerApplicationConfig) { return (ServerApplicationConfig) o; } throw new DeploymentException("ServerApplicationConfig not present."); }
List<Extension> extensions = clientEndpointConfiguration.getExtensions(); List<String> subProtocols = clientEndpointConfiguration.getPreferredSubprotocols(); Map<String, Object> userProperties = clientEndpointConfiguration.getUserProperties();
List<Extension> extensions = clientEndpointConfiguration.getExtensions(); List<String> subProtocols = clientEndpointConfiguration.getPreferredSubprotocols(); Map<String, Object> userProperties = clientEndpointConfiguration.getUserProperties();
List<Extension> extensions = clientEndpointConfiguration.getExtensions(); List<String> subProtocols = clientEndpointConfiguration.getPreferredSubprotocols(); Map<String, Object> userProperties = clientEndpointConfiguration.getUserProperties();
@Override public void onOpen(Session session, EndpointConfig endpointConfig) { // set timeout long oldMaxIdleTimeout = session.getMaxIdleTimeout(); long newMaxIdleTimeout = 0; session.setMaxIdleTimeout(newMaxIdleTimeout); if (log.isDebugEnabled()) log.debug("Changed max idle timeout of session " + session.getId() + " from " + oldMaxIdleTimeout + " to " + newMaxIdleTimeout); // read properties ClientEndpointConfig clientEndpointConfig = (ClientEndpointConfig) endpointConfig; URI xdiWebSocketEndpointUri = (URI) clientEndpointConfig.getUserProperties().get("xdiWebSocketEndpointUri"); // init message handler WebSocketClientMessageHandler webSocketMessageHandler = new WebSocketClientMessageHandler(session); // init session log.info("WebSocket session " + session.getId() + " opened (" + xdiWebSocketEndpointUri + ")."); session.addMessageHandler(webSocketMessageHandler); session.getUserProperties().putAll(clientEndpointConfig.getUserProperties()); }
private ClientEndpointConfig buildClientConfig(ClientEndpointConfig.Configurator configurator) { ClientEndpointConfig config = ClientEndpointConfig.Builder.create() .configurator(configurator) .build(); if (trustSelfSignedCerts) { SSLContext sslContext = buildSslContext(); Map<String, Object> userProperties = config.getUserProperties(); userProperties.put(WsWebSocketContainer.SSL_CONTEXT_PROPERTY, sslContext); } return config; }
private ClientEndpointConfig buildClientConfig(ClientEndpointConfig.Configurator configurator) { ClientEndpointConfig config = ClientEndpointConfig.Builder.create().configurator(configurator).build(); if (trustSelfSignedCerts) { SSLContext sslContext = buildSslContext(); Map<String, Object> userProperties = config.getUserProperties(); userProperties.put(WsWebSocketContainer.SSL_CONTEXT_PROPERTY, sslContext); } return config; }
wsConfig.getUserProperties().put( "org.apache.tomcat.websocket.SSL_CONTEXT", sslContext); Object prop = userProperties.get(key); if (prop != null) wsConfig.getUserProperties().put(key, prop);
private static WebSocketClientEndpoint connect(WebSocketContainer webSocketContainer, XDIWebSocketClient xdiWebSocketClient, URI xdiWebSocketEndpointUri) throws Exception { // init websocket endpoint List<String> preferredSubprotocols = Arrays.asList(new String[] { "xdi" }); List<Extension> extensions = null; List<Class<? extends Encoder>> encoders = null; List<Class<? extends Decoder>> decoders = null; ClientEndpointConfig.Configurator clientEndpointConfigConfigurator = new ClientEndpointConfig.Configurator() { }; ClientEndpointConfig.Builder clientEndpointConfigBuilder = ClientEndpointConfig.Builder.create(); clientEndpointConfigBuilder.preferredSubprotocols(preferredSubprotocols); clientEndpointConfigBuilder.extensions(extensions); clientEndpointConfigBuilder.encoders(encoders); clientEndpointConfigBuilder.decoders(decoders); clientEndpointConfigBuilder.configurator(clientEndpointConfigConfigurator); ClientEndpointConfig clientEndpointConfig = clientEndpointConfigBuilder.build(); clientEndpointConfig.getUserProperties().put("xdiWebSocketClient", xdiWebSocketClient); clientEndpointConfig.getUserProperties().put("xdiWebSocketEndpointUri", xdiWebSocketEndpointUri); // connect websocket endpoint WebSocketClientEndpoint webSocketEndpoint = new WebSocketClientEndpoint(); Session session = webSocketContainer.connectToServer(webSocketEndpoint, clientEndpointConfig, URI.create(xdiWebSocketEndpointUri.toString())); webSocketEndpoint.setSession(session); // done log.info("Connected WebSocket endpoint for " + xdiWebSocketEndpointUri + " with preferred subprotocols " + preferredSubprotocols); return webSocketEndpoint; }
@Override public void connect() throws IOException { if (client == null) { client = ClientManager.createClient(); client.setDefaultMaxSessionIdleTimeout(-1); } try { final ClientEndpointConfig cec = ClientEndpointConfig.Builder .create().build(); cec.getUserProperties().put("address", getAddress()); if (session != null) { disconnect(); } session = client.connectToServer(WebsocketEndpoint.class, cec, new URI(serverUrl + "?id=" + myId)); } catch (final DeploymentException e) { LOG.log(Level.WARNING, "Can't connect to server", e); } catch (final URISyntaxException e) { LOG.log(Level.WARNING, "Can't parse server address", e); } }
defaultConfig.retrieve(System.getProperties()); String wlsSslTrustStore = (String) cec.getUserProperties().get(ClientManager.WLS_SSL_TRUSTSTORE_PROPERTY); String wlsSslTrustStorePassword = (String) cec.getUserProperties().get(ClientManager.WLS_SSL_TRUSTSTORE_PWD_PROPERTY); String wlsSslProtocols = (String) cec.getUserProperties().get(ClientManager.WLS_SSL_PROTOCOLS_PROPERTY); if (wlsSslProtocols != null) { sslEngineConfigurator.setEnabledProtocols(wlsSslProtocols.split(","));
@Override public void start(ILifecycleProgressMonitor monitor) throws SiteWhereException { WebSocketContainer container = ContainerProvider.getWebSocketContainer(); ClientEndpointConfig config = ClientEndpointConfig.Builder.create().configurator(new WebSocketConfigurator()) .build(); config.getUserProperties().put(PROP_EVENT_RECEIVER, this); try { session = container.connectToServer(getWebSocketClientClass(), config, URI.create(getWebSocketUrl())); } catch (DeploymentException e) { throw new SiteWhereException("Unable to connect to web socket.", e); } catch (IOException e) { throw new SiteWhereException("Unable to connect to web socket.", e); } }
@Override public void start(ILifecycleProgressMonitor monitor) throws SiteWhereException { WebSocketContainer container = ContainerProvider.getWebSocketContainer(); ClientEndpointConfig config = ClientEndpointConfig.Builder.create().configurator(new WebSocketConfigurator()) .build(); config.getUserProperties().put(PROP_EVENT_RECEIVER, this); try { session = container.connectToServer(getWebSocketClientClass(), config, URI.create(getWebSocketUrl())); } catch (DeploymentException e) { throw new SiteWhereException("Unable to connect to web socket.", e); } catch (IOException e) { throw new SiteWhereException("Unable to connect to web socket.", e); } }
if (secure) { SSLEngine sslEngine = createSSLEngine( clientEndpointConfiguration.getUserProperties()); channel = new AsyncChannelWrapperSecure(socketChannel, sslEngine); } else { String timeoutValue = (String) clientEndpointConfiguration.getUserProperties().get( IO_TIMEOUT_MS_PROPERTY); if (timeoutValue != null) {
@Override protected ListenableFuture<WebSocketSession> doHandshakeInternal(WebSocketHandler webSocketHandler, HttpHeaders headers, final URI uri, List<String> protocols, List<WebSocketExtension> extensions, Map<String, Object> attributes) { int port = getPort(uri); InetSocketAddress localAddress = new InetSocketAddress(getLocalHost(), port); InetSocketAddress remoteAddress = new InetSocketAddress(uri.getHost(), port); final StandardWebSocketSession session = new StandardWebSocketSession(headers, attributes, localAddress, remoteAddress); final ClientEndpointConfig endpointConfig = ClientEndpointConfig.Builder.create() .configurator(new StandardWebSocketClientConfigurator(headers)) .preferredSubprotocols(protocols) .extensions(adaptExtensions(extensions)).build(); endpointConfig.getUserProperties().putAll(getUserProperties()); final Endpoint endpoint = new StandardWebSocketHandlerAdapter(webSocketHandler, session); Callable<WebSocketSession> connectTask = () -> { webSocketContainer.connectToServer(endpoint, endpointConfig, uri); return session; }; if (this.taskExecutor != null) { return this.taskExecutor.submitListenable(connectTask); } else { ListenableFutureTask<WebSocketSession> task = new ListenableFutureTask<>(connectTask); task.run(); return task; } }
@Override protected ListenableFuture<WebSocketSession> doHandshakeInternal(WebSocketHandler webSocketHandler, HttpHeaders headers, final URI uri, List<String> protocols, List<WebSocketExtension> extensions, Map<String, Object> attributes) { int port = getPort(uri); InetSocketAddress localAddress = new InetSocketAddress(getLocalHost(), port); InetSocketAddress remoteAddress = new InetSocketAddress(uri.getHost(), port); final StandardWebSocketSession session = new StandardWebSocketSession(headers, attributes, localAddress, remoteAddress); final ClientEndpointConfig endpointConfig = ClientEndpointConfig.Builder.create() .configurator(new StandardWebSocketClientConfigurator(headers)) .preferredSubprotocols(protocols) .extensions(adaptExtensions(extensions)).build(); endpointConfig.getUserProperties().putAll(getUserProperties()); final Endpoint endpoint = new StandardWebSocketHandlerAdapter(webSocketHandler, session); Callable<WebSocketSession> connectTask = () -> { this.webSocketContainer.connectToServer(endpoint, endpointConfig, uri); return session; }; if (this.taskExecutor != null) { return this.taskExecutor.submitListenable(connectTask); } else { ListenableFutureTask<WebSocketSession> task = new ListenableFutureTask<>(connectTask); task.run(); return task; } }
if (secure) { SSLEngine sslEngine = createSSLEngine( clientEndpointConfiguration.getUserProperties()); channel = new AsyncChannelWrapperSecure(socketChannel, sslEngine); } else { String timeoutValue = (String) clientEndpointConfiguration.getUserProperties().get( IO_TIMEOUT_MS_PROPERTY); if (timeoutValue != null) {
Integer wlsIncomingBufferSize = configuration == null ? null : Utils.getProperty(configuration.getUserProperties(), ClientContainer.WLS_INCOMING_BUFFER_SIZE, Integer.class); final int incomingBufferSize;