@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() |
|
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() |
|
protected org.eclipse.jetty.io.SelectorManager |
newSelectorManager() |
|
void |
setByteBufferPool(org.eclipse.jetty.io.ByteBufferPool bufferPool) |
|
void |
setClientConnectionFactory(org.eclipse.jetty.io.ClientConnectionFactory connectionFactory) |
|
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, stop
addBean, addBean, addBean, addEventListener, addManaged, contains, destroy, doStop, dump, dump, dump, dump, dump, dumpBeans, dumpObject, dumpStdErr, dumpThis, getBean, getBeans, getBeans, isManaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeans
protected void doStart() throws java.lang.Exception
doStart
in class org.eclipse.jetty.util.component.ContainerLifeCycle
java.lang.Exception
protected org.eclipse.jetty.io.SelectorManager newSelectorManager()
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("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.IOException
Copyright © 1995–2018 Webtide. All rights reserved.