Top Description Inners Fields Constructors Methods
org.glassfish.tyrus.container.jdk.client

public Class JdkClientContainer

extends Object
implements ClientContainer
Class Inheritance
All Implemented Interfaces
org.glassfish.tyrus.spi.ClientContainer
Imports
java.io.IOException, java.net.InetAddress, .InetSocketAddress, .Proxy, .ProxySelector, .SocketAddress, .URI, .URISyntaxException, java.util.ArrayList, .List, .Map, java.util.concurrent.Callable, .CountDownLatch, java.util.concurrent.atomic.AtomicReference, java.util.logging.Level, .Logger, jakarta.websocket.ClientEndpointConfig, .DeploymentException, javax.net.ssl.HostnameVerifier, org.glassfish.tyrus.client.ClientManager, .ClientProperties, .SslContextConfigurator, .SslEngineConfigurator, .ThreadPoolConfig, org.glassfish.tyrus.client.exception.Exceptions, org.glassfish.tyrus.core.ReflectionHelper, .Utils, org.glassfish.tyrus.spi.ClientContainer, .ClientEngine, .CompletionHandler, .UpgradeRequest

org.glassfish.tyrus.spi.ClientContainer implementation based on Java 7 NIO API.
Author
Petr Janouch

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class

Field Summary

Modifier and TypeField and Description
private static final int
INPUT_BUFFER_SIZE

Input buffer that is used by org.glassfish.tyrus.container.jdk.client.TransportFilter when SSL is not turned on.

private static final Logger
private static final int
SSL_INPUT_BUFFER_SIZE

Input buffer that is used by org.glassfish.tyrus.container.jdk.client.TransportFilter when SSL is turned on.

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private void
addProxies(ProxySelector proxySelector, URI uri, String scheme, List<Proxy> proxies)

private void
connectSynchronously(ClientFilter clientFilter, final SocketAddress address, boolean proxy)

org.glassfish.tyrus.container.jdk.client.ClientFilter#connect(java.net.SocketAddress, boolean, CompletionHandler) is asynchronous, this method will block until it either succeeds or fails.

private ClientFilter
createClientFilter(Map<String, Object> properties, Filter downstreamFilter, ClientEngine clientEngine, Callable<Void> jdkConnector, UpgradeRequest upgradeRequest)

private SslFilter
createSslFilter(ClientEndpointConfig cec, Map<String, Object> properties, TransportFilter transportFilter, URI uri)

private TaskQueueFilter
createTaskQueueFilter(Filter downstreamFilter)

private TransportFilter
createTransportFilter(int sslInputBufferSize, ThreadPoolConfig threadPoolConfig, Integer containerIdleTimeout, InetAddress bindingAddress)

private URI
getProxyUri(URI wsUri, String scheme)

private SocketAddress
public void
openClientSocket(final ClientEndpointConfig
endpoint configuration. SPI consumer can access user properties, jakarta.websocket.ClientEndpointConfig.Configurator, extensions and subprotocol configuration, etc..
cec
,
final Map<String, Object>
properties passed from client container. Don't mix up this with jakarta.websocket.ClientEndpointConfig#getUserProperties(), these are Tyrus proprietary.
properties
,
final ClientEngine
one instance equals to one connection, cannot be reused. Implementation is expected to call ClientEngine#createUpgradeRequest(ClientEngine.TimeoutHandler) and ClientEngine#processResponse(UpgradeResponse, Writer, org.glassfish.tyrus.spi.Connection.CloseListener) (in that order).
clientEngine
)

Implements org.glassfish.tyrus.spi.ClientContainer.openClientSocket.

Open client socket - connect to endpoint specified with url parameter.

private List<Proxy>
processProxy(Map<String, Object> properties, URI uri)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

INPUT_BUFFER_SIZEback to summary
private static final int INPUT_BUFFER_SIZE

Input buffer that is used by org.glassfish.tyrus.container.jdk.client.TransportFilter when SSL is not turned on.

LOGGERback to summary
private static final Logger LOGGER
SSL_INPUT_BUFFER_SIZEback to summary
private static final int SSL_INPUT_BUFFER_SIZE

Input buffer that is used by org.glassfish.tyrus.container.jdk.client.TransportFilter when SSL is turned on. The size cannot be smaller than a maximal size of a SSL packet, which is 16kB for payload + header, because org.glassfish.tyrus.container.jdk.client.SslFilter does not have its own buffer for buffering incoming org.glassfish.tyrus.container.jdk.client.SslFilter does not have its own buffer for buffering incoming data and therefore the entire SSL packet must fit into org.glassfish.tyrus.container.jdk.client.TransportFilter input buffer.

Constructor Detail

JdkClientContainerback to summary
public JdkClientContainer()

Method Detail

addProxiesback to summary
private void addProxies(ProxySelector proxySelector, URI uri, String scheme, List<Proxy> proxies)
connectSynchronouslyback to summary
private void connectSynchronously(ClientFilter clientFilter, final SocketAddress address, boolean proxy) throws Throwable

org.glassfish.tyrus.container.jdk.client.ClientFilter#connect(java.net.SocketAddress, boolean, CompletionHandler) is asynchronous, this method will block until it either succeeds or fails.

createClientFilterback to summary
private ClientFilter createClientFilter(Map<String, Object> properties, Filter downstreamFilter, ClientEngine clientEngine, Callable<Void> jdkConnector, UpgradeRequest upgradeRequest) throws DeploymentException
createSslFilterback to summary
private SslFilter createSslFilter(ClientEndpointConfig cec, Map<String, Object> properties, TransportFilter transportFilter, URI uri)
createTaskQueueFilterback to summary
private TaskQueueFilter createTaskQueueFilter(Filter downstreamFilter)
createTransportFilterback to summary
private TransportFilter createTransportFilter(int sslInputBufferSize, ThreadPoolConfig threadPoolConfig, Integer containerIdleTimeout, InetAddress bindingAddress)
getProxyUriback to summary
private URI getProxyUri(URI wsUri, String scheme)
getServerAddressback to summary
private SocketAddress getServerAddress(URI uri) throws DeploymentException
openClientSocketback to summary
public void openClientSocket(final ClientEndpointConfig cec, final Map<String, Object> properties, final ClientEngine clientEngine) throws DeploymentException, IOException

Implements org.glassfish.tyrus.spi.ClientContainer.openClientSocket.

Doc from org.glassfish.tyrus.spi.ClientContainer.openClientSocket.

Open client socket - connect to endpoint specified with url parameter.

Called from ClientManager when jakarta.websocket.WebSocketContainer#connectToServer(Class, jakarta.websocket.ClientEndpointConfig, java.net.URI) is invoked.

Parameters
cec:ClientEndpointConfig

endpoint configuration. SPI consumer can access user properties, jakarta.websocket.ClientEndpointConfig.Configurator, extensions and subprotocol configuration, etc..

properties:Map<String, Object>

properties passed from client container. Don't mix up this with jakarta.websocket.ClientEndpointConfig#getUserProperties(), these are Tyrus proprietary.

clientEngine:ClientEngine

one instance equals to one connection, cannot be reused. Implementation is expected to call ClientEngine#createUpgradeRequest(ClientEngine.TimeoutHandler) and ClientEngine#processResponse(UpgradeResponse, Writer, org.glassfish.tyrus.spi.Connection.CloseListener) (in that order).

Annotations
@Override
Exceptions
DeploymentException:
when the client endpoint is invalid or when there is any other (not specified) connection problem.
IOException:
when there is any I/O issue related to opening client socket or connecting to remote endpoint.
processProxyback to summary
private List<Proxy> processProxy(Map<String, Object> properties, URI uri) throws DeploymentException
org.glassfish.tyrus.container.jdk.client back to summary

private Class JdkClientContainer.TimeoutHandlerProxy

extends Object
implements TimeoutHandler
Class Inheritance
  • java.lang.Object
  • org.glassfish.tyrus.container.jdk.client.JdkClientContainer.TimeoutHandlerProxy
All Implemented Interfaces
org.glassfish.tyrus.spi.ClientEngine.TimeoutHandler

Field Summary

Modifier and TypeField and Description
private volatile ClientEngine.TimeoutHandler

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public void
public void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

handlerback to summary
private volatile ClientEngine.TimeoutHandler handler

Constructor Detail

TimeoutHandlerProxyback to summary
private TimeoutHandlerProxy()

Method Detail

handleTimeoutback to summary
public void handleTimeout()

Implements org.glassfish.tyrus.spi.ClientEngine.TimeoutHandler.handleTimeout.

Doc from org.glassfish.tyrus.spi.ClientEngine.TimeoutHandler.handleTimeout.

Invoked when timeout is reached. Container is supposed to clean all resources related to ClientEngine instance.

Annotations
@Override
setHandlerback to summary
public void setHandler(ClientEngine.TimeoutHandler handler)