public final class ClientProperties
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
AUTH_CONFIG
Authentication configuration.
|
static java.lang.String |
CREDENTIALS
Authentication credentials.
|
static java.lang.String |
HANDSHAKE_TIMEOUT
Property usable in
ClientManager.getProperties() . |
static java.lang.String |
INCOMING_BUFFER_SIZE
Property name for maximal incoming buffer size.
|
static java.lang.String |
LOG_HTTP_UPGRADE
User property to configure logging of HTTP upgrade messages.
|
static java.lang.String |
MASKING_KEY_GENERATOR
Property name for registering a custom masking key generator.
|
static java.lang.String |
PROXY_HEADERS
User property to set additional proxy headers.
|
static java.lang.String |
PROXY_URI
User property to set proxy URI.
|
static java.lang.String |
RECONNECT_HANDLER
Property usable in
ClientManager.getProperties() . |
static java.lang.String |
REDIRECT_ENABLED
HTTP Redirect support.
|
static java.lang.String |
REDIRECT_THRESHOLD
The maximal number of redirects during single handshake.
|
static java.lang.String |
RETRY_AFTER_SERVICE_UNAVAILABLE
HTTP Service Unavailable - reconnect support.
|
static java.lang.String |
SHARED_CONTAINER
When set to
true (boolean value), client runtime preserves used container and reuses it for outgoing
connections. |
static java.lang.String |
SHARED_CONTAINER_IDLE_TIMEOUT
Container idle timeout in seconds (
Integer value). |
static java.lang.String |
SOCKET_BINDING
Property name for defining local binding address for all socket created by the client.
|
static java.lang.String |
SSL_ENGINE_CONFIGURATOR
Property usable in
ClientManager.getProperties() as a key for SSL configuration. |
static java.lang.String |
WORKER_THREAD_POOL_CONFIG
User property to set worker thread pool configuration.
|
Constructor and Description |
---|
ClientProperties() |
public static final java.lang.String HANDSHAKE_TIMEOUT
ClientManager.getProperties()
.
Value must be int
and represents handshake timeout in milliseconds. Default value is 30000 (30 seconds).
public static final java.lang.String RECONNECT_HANDLER
ClientManager.getProperties()
.
Value must be ClientManager.ReconnectHandler
instance.
public static final java.lang.String PROXY_URI
Value is expected to be String
and represent proxy URI. Protocol part is currently ignored
but must be present (URI.URI(String)
is used for parsing).
client.getProperties().put(ClientProperties.PROXY_URI, "http://my.proxy.com:80"); client.connectToServer(...);
public static final java.lang.String PROXY_HEADERS
Value is expected to be Map
<String
, String
> and represent raw http headers
to be added to initial request which is sent to proxy. Key corresponds to header name, value is header
value.
Sample below demonstrates use of this feature to set preemptive basic proxy authentication:
final HashMap<String, String> proxyHeaders = new HashMap<String, String>(); proxyHeaders.put("Proxy-Authorization", "Basic " + Base64.getEncoder().encodeToString("username:password".getBytes(Charset.forName("UTF-8")))); client.getProperties().put(ClientProperties.PROXY_HEADERS, proxyHeaders); client.connectToServer(...);Please note that these headers will be used only when establishing proxy connection, for modifying WebSocket handshake headers, see
ClientEndpointConfig.Configurator.beforeRequest(java.util.Map)
.public static final java.lang.String SSL_ENGINE_CONFIGURATOR
ClientManager.getProperties()
as a key for SSL configuration.
Value is expected to be either org.glassfish.grizzly.ssl.SSLEngineConfigurator
or
SslEngineConfigurator
when configuring Grizzly client or only
SslEngineConfigurator
when configuring JDK client.
The advantage of using SslEngineConfigurator
with Grizzly client is that
SslEngineConfigurator
allows configuration of host name verification
(which is turned on by default)
Example configuration for JDK client:
SslContextConfigurator sslContextConfigurator = new SslContextConfigurator(); sslContextConfigurator.setTrustStoreFile("..."); sslContextConfigurator.setTrustStorePassword("..."); sslContextConfigurator.setTrustStoreType("..."); sslContextConfigurator.setKeyStoreFile("..."); sslContextConfigurator.setKeyStorePassword("..."); sslContextConfigurator.setKeyStoreType("..."); SslEngineConfigurator sslEngineConfigurator = new SslEngineConfigurator(sslContextConfigurator, true, false, false); client.getProperties().put(ClientProperties.SSL_ENGINE_CONFIGURATOR, sslEngineConfigurator);
public static final java.lang.String INCOMING_BUFFER_SIZE
Can be set in properties map (see ClientContainer.openClientSocket(jakarta.websocket.ClientEndpointConfig, java.util.Map,
org.glassfish.tyrus.spi.ClientEngine)
.
public static final java.lang.String SHARED_CONTAINER
true
(boolean value), client runtime preserves used container and reuses it for outgoing
connections.
A single thread pool is reused by all clients with this property set to true
.
JDK client supports only shared container option, so setting this property has no effect.
public static final java.lang.String SHARED_CONTAINER_IDLE_TIMEOUT
Integer
value).
When the timeout elapses, the shared thread pool will be destroyed.
SHARED_CONTAINER
,
Constant Field Valuespublic static final java.lang.String WORKER_THREAD_POOL_CONFIG
An instance of ThreadPoolConfig
is expected for both JDK
and Grizzly client. Instance of org.glassfish.grizzly.threadpool.ThreadPoolConfig
, can be used
for Grizzly client.
Sample below demonstrates how to use this property:
client.getProperties().put(ClientProperties.WORKER_THREAD_POOL_CONFIG, ThreadPoolConfig.defaultConfig());
public static final java.lang.String AUTH_CONFIG
Value must be AuthConfig
instance.
Sample below demonstrates how to use this property:
client.getProperties().put(ClientProperties.AUTH_CONFIG, AuthConfig.builder().enableProvidedBasicAuth() .build());
AuthConfig
,
AuthConfig.Builder
,
Authenticator
,
Constant Field Valuespublic static final java.lang.String CREDENTIALS
Value must be Credentials
instance.
Provided authenticators (both Basic and Digest) require this property set,
otherwise AuthenticationException
will be thrown during a handshake.
User defined authenticators may look up credentials in another sources.
Sample below demonstrates how to use this property:
client.getProperties().put(ClientProperties.CREDENTIALS, new Credentials("websocket_user", "password");
Credentials
,
AuthConfig
,
Authenticator
,
Constant Field Valuespublic static final java.lang.String REDIRECT_ENABLED
Value is expected to be boolean
. Default value is false
.
When set to true
and one of the following redirection HTTP response status code (3xx) is received during
a handshake, client will attempt to connect to the URI
contained in
header from handshake response. Number of redirection is limited by property REDIRECT_THRESHOLD
(integer value), while default value is .
List of supported HTTP status codes:
300 - Multiple Choices
301 - Moved permanently
302 - Found
303 - See Other (since HTTP/1.1)
307 - Temporary Redirect (since HTTP/1.1)
308 - Permanent Redirect (Experimental RFC; RFC 7238)
REDIRECT_THRESHOLD
,
Constant Field Valuespublic static final java.lang.String REDIRECT_THRESHOLD
Value is expected to be positive Integer
. Default value is .
HTTP redirection must be enabled by property REDIRECT_ENABLED
, otherwise REDIRECT_THRESHOLD
is
not applied.
REDIRECT_ENABLED
,
RedirectException
,
Constant Field Valuespublic static final java.lang.String RETRY_AFTER_SERVICE_UNAVAILABLE
Value is expected to be boolean
. Default value is false
.
When set to true
and HTTP response code 503 - Service Unavailable
is received, client will
attempt to reconnect after delay specified in header from handshake
response. According to RFC 2616 the value must be decimal integer (representing delay in seconds) or http-date
.
Tyrus client will try to reconnect after this delay if:
public static final java.lang.String LOG_HTTP_UPGRADE
Value is expected to be boolean
. Default value is false
.
When set to true
upgrade request and response messages will be logged regardless of the logging
level configuration. When the logging is configured to Level.FINE
or lower,
this setting will have no effect as at this level HTTP upgrade messages will be logged anyway.
public static final java.lang.String MASKING_KEY_GENERATOR
MaskingKeyGenerator
.
As a security measure, all frames originating on websocket client have to be masked with random 4B value, which
should be freshly generated for each frame. Moreover to fully comply with the security requirements of RFC 6455,
a masking key of a frame must not be predictable from masking keys of previous frames and therefore Tyrus uses
SecureRandom
as a default masking key generator. While this is perfectly OK for most Tyrus
client use cases, usage of SecureRandom
might prove to be a performance issue,
when the client is used for instance for highly parallel stress testing as SecureRandom
uses a synchronized singleton as a random entropy provider in its internals.
This property allows replacing the default SecureRandom
with a more scalable provider
of masking keys.
public static final java.lang.String SOCKET_BINDING
InetAddress
.
Sample below demonstrates how to use this property:
client.getProperties().put(ClientProperties.SOCKET_BINDING, InetAddress.getByName("127.0.0.1"));
Copyright © 2012–2020 Oracle Corporation. All rights reserved.