@ManagedObject
public class HTTP2Client
extends org.eclipse.jetty.util.component.ContainerLifeCycle
HTTP2Client provides an asynchronous, non-blocking implementation
to send HTTP/2 frames to a server.
Typical usage:
// Create and start HTTP2Client.
HTTP2Client client = new HTTP2Client();
SslContextFactory sslContextFactory = new SslContextFactory();
client.addBean(sslContextFactory);
client.start();
// Connect to host.
String host = "webtide.com";
int port = 443;
FuturePromise<Session> sessionPromise = new FuturePromise<>();
client.connect(sslContextFactory, new InetSocketAddress(host, port), new ServerSessionListener.Adapter(), sessionPromise);
// Obtain the client Session object.
Session session = sessionPromise.get(5, TimeUnit.SECONDS);
// Prepare the HTTP request headers.
HttpFields requestFields = new HttpFields();
requestFields.put("User-Agent", client.getClass().getName() + "/" + Jetty.VERSION);
// Prepare the HTTP request object.
MetaData.Request request = new MetaData.Request("PUT", new HttpURI("https://" + host + ":" + port + "/"), HttpVersion.HTTP_2, requestFields);
// Create the HTTP/2 HEADERS frame representing the HTTP request.
HeadersFrame headersFrame = new HeadersFrame(request, null, false);
// Prepare the listener to receive the HTTP response frames.
Stream.Listener responseListener = new new Stream.Listener.Adapter()
{
@Override
public void onHeaders(Stream stream, HeadersFrame frame)
{
System.err.println(frame);
}
@Override
public void onData(Stream stream, DataFrame frame, Callback callback)
{
System.err.println(frame);
callback.succeeded();
}
};
// Send the HEADERS frame to create a stream.
FuturePromise<Stream> streamPromise = new FuturePromise<>();
session.newStream(headersFrame, streamPromise, responseListener);
Stream stream = streamPromise.get(5, TimeUnit.SECONDS);
// Use the Stream object to send request content, if any, using a DATA frame.
ByteBuffer content = ...;
DataFrame requestContent = new DataFrame(stream.getId(), content, true);
stream.data(requestContent, Callback.Adapter.INSTANCE);
// When done, stop the client.
client.stop();
org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener| Constructor | Description |
|---|---|
HTTP2Client() |
| Modifier and Type | Method | Description |
|---|---|---|
void |
accept(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory,
java.nio.channels.SocketChannel channel,
org.eclipse.jetty.http2.api.Session.Listener listener,
org.eclipse.jetty.util.Promise<org.eclipse.jetty.http2.api.Session> promise) |
|
protected void |
configure(java.nio.channels.SocketChannel channel) |
|
void |
connect(java.net.InetSocketAddress address,
org.eclipse.jetty.http2.api.Session.Listener listener,
org.eclipse.jetty.util.Promise<org.eclipse.jetty.http2.api.Session> promise) |
|
void |
connect(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory,
java.net.InetSocketAddress address,
org.eclipse.jetty.http2.api.Session.Listener listener,
org.eclipse.jetty.util.Promise<org.eclipse.jetty.http2.api.Session> promise) |
|
void |
connect(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory,
java.net.InetSocketAddress address,
org.eclipse.jetty.http2.api.Session.Listener listener,
org.eclipse.jetty.util.Promise<org.eclipse.jetty.http2.api.Session> promise,
java.util.Map<java.lang.String,java.lang.Object> context) |
|
protected void |
doStart() |
|
java.net.SocketAddress |
getBindAddress() |
|
org.eclipse.jetty.io.ByteBufferPool |
getByteBufferPool() |
|
org.eclipse.jetty.io.ClientConnectionFactory |
getClientConnectionFactory() |
|
long |
getConnectTimeout() |
|
java.util.concurrent.Executor |
getExecutor() |
|
org.eclipse.jetty.http2.FlowControlStrategy.Factory |
getFlowControlStrategyFactory() |
|
long |
getIdleTimeout() |
|
int |
getInitialSessionRecvWindow() |
|
int |
getInitialStreamRecvWindow() |
|
int |
getInputBufferSize() |
|
java.util.List<java.lang.String> |
getProtocols() |
|
org.eclipse.jetty.util.thread.Scheduler |
getScheduler() |
|
int |
getSelectors() |
|
boolean |
isConnectBlocking() |
|
protected org.eclipse.jetty.io.SelectorManager |
newSelectorManager() |
|
protected org.eclipse.jetty.io.ClientConnectionFactory |
newSslClientConnectionFactory(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory,
org.eclipse.jetty.io.ClientConnectionFactory connectionFactory) |
|
void |
setBindAddress(java.net.SocketAddress bindAddress) |
|
void |
setByteBufferPool(org.eclipse.jetty.io.ByteBufferPool bufferPool) |
|
void |
setClientConnectionFactory(org.eclipse.jetty.io.ClientConnectionFactory connectionFactory) |
|
void |
setConnectBlocking(boolean connectBlocking) |
|
void |
setConnectTimeout(long connectTimeout) |
|
void |
setExecutor(java.util.concurrent.Executor executor) |
|
void |
setFlowControlStrategyFactory(org.eclipse.jetty.http2.FlowControlStrategy.Factory flowControlStrategyFactory) |
|
void |
setIdleTimeout(long idleTimeout) |
|
void |
setInitialSessionRecvWindow(int initialSessionRecvWindow) |
|
void |
setInitialStreamRecvWindow(int initialStreamRecvWindow) |
|
void |
setInputBufferSize(int inputBufferSize) |
|
void |
setProtocols(java.util.List<java.lang.String> protocols) |
|
void |
setScheduler(org.eclipse.jetty.util.thread.Scheduler scheduler) |
|
void |
setSelectors(int selectors) |
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stopaddBean, addBean, addBean, addEventListener, addManaged, contains, destroy, doStop, dump, dump, dump, dump, dump, dumpBeans, dumpObject, dumpStdErr, dumpThis, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isManaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeansprotected void doStart()
throws java.lang.Exception
doStart in class org.eclipse.jetty.util.component.ContainerLifeCyclejava.lang.Exceptionprotected org.eclipse.jetty.io.SelectorManager newSelectorManager()
protected org.eclipse.jetty.io.ClientConnectionFactory newSslClientConnectionFactory(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory,
org.eclipse.jetty.io.ClientConnectionFactory connectionFactory)
public java.util.concurrent.Executor getExecutor()
public void setExecutor(java.util.concurrent.Executor executor)
public org.eclipse.jetty.util.thread.Scheduler getScheduler()
public void setScheduler(org.eclipse.jetty.util.thread.Scheduler scheduler)
public org.eclipse.jetty.io.ByteBufferPool getByteBufferPool()
public void setByteBufferPool(org.eclipse.jetty.io.ByteBufferPool bufferPool)
public org.eclipse.jetty.io.ClientConnectionFactory getClientConnectionFactory()
public void setClientConnectionFactory(org.eclipse.jetty.io.ClientConnectionFactory connectionFactory)
public org.eclipse.jetty.http2.FlowControlStrategy.Factory getFlowControlStrategyFactory()
public void setFlowControlStrategyFactory(org.eclipse.jetty.http2.FlowControlStrategy.Factory flowControlStrategyFactory)
@ManagedAttribute("The number of selectors")
public int getSelectors()
public void setSelectors(int selectors)
@ManagedAttribute("The idle timeout in milliseconds")
public long getIdleTimeout()
public void setIdleTimeout(long idleTimeout)
@ManagedAttribute("The connect timeout in milliseconds")
public long getConnectTimeout()
public void setConnectTimeout(long connectTimeout)
@ManagedAttribute("Whether the connect() operation is blocking")
public boolean isConnectBlocking()
public void setConnectBlocking(boolean connectBlocking)
public java.net.SocketAddress getBindAddress()
public void setBindAddress(java.net.SocketAddress bindAddress)
@ManagedAttribute("The size of the buffer used to read from the network")
public int getInputBufferSize()
public void setInputBufferSize(int inputBufferSize)
@ManagedAttribute("The ALPN protocol list")
public java.util.List<java.lang.String> getProtocols()
public void setProtocols(java.util.List<java.lang.String> protocols)
@ManagedAttribute("The initial size of session\'s flow control receive window")
public int getInitialSessionRecvWindow()
public void setInitialSessionRecvWindow(int initialSessionRecvWindow)
@ManagedAttribute("The initial size of stream\'s flow control receive window")
public int getInitialStreamRecvWindow()
public void setInitialStreamRecvWindow(int initialStreamRecvWindow)
public void connect(java.net.InetSocketAddress address,
org.eclipse.jetty.http2.api.Session.Listener listener,
org.eclipse.jetty.util.Promise<org.eclipse.jetty.http2.api.Session> promise)
public void connect(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory,
java.net.InetSocketAddress address,
org.eclipse.jetty.http2.api.Session.Listener listener,
org.eclipse.jetty.util.Promise<org.eclipse.jetty.http2.api.Session> promise)
public void connect(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory,
java.net.InetSocketAddress address,
org.eclipse.jetty.http2.api.Session.Listener listener,
org.eclipse.jetty.util.Promise<org.eclipse.jetty.http2.api.Session> promise,
java.util.Map<java.lang.String,java.lang.Object> context)
public void accept(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory,
java.nio.channels.SocketChannel channel,
org.eclipse.jetty.http2.api.Session.Listener listener,
org.eclipse.jetty.util.Promise<org.eclipse.jetty.http2.api.Session> promise)
protected void configure(java.nio.channels.SocketChannel channel)
throws java.io.IOException
java.io.IOExceptionCopyright © 1995–2018 Webtide. All rights reserved.