org.eclipse.jetty.client
Class HttpClient

java.lang.Object
  extended by org.eclipse.jetty.util.component.AbstractLifeCycle
      extended by org.eclipse.jetty.http.HttpBuffers
          extended by org.eclipse.jetty.client.HttpClient
All Implemented Interfaces:
Attributes, LifeCycle

public class HttpClient
extends HttpBuffers
implements Attributes

Http Client.

HttpClient is the main active component of the client API implementation. It is the opposite of the Connectors in standard Jetty, in that it listens for responses rather than requests. Just like the connectors, there is a blocking socket version and a non-blocking NIO version (implemented as nested classes selected by setConnectorType(int)).

The an instance of HttpExchange is passed to the send(HttpExchange) method to send a request. The exchange contains both the headers and content (source) of the request plus the callbacks to handle responses. A HttpClient can have many exchanges outstanding and they may be queued on the HttpDestination waiting for a HttpConnection, queued in the HttpConnection waiting to be transmitted or pipelined on the actual TCP/IP connection waiting for a response.

The HttpDestination class is an aggregation of HttpConnections for the same host, port and protocol. A destination may limit the number of connections open and they provide a pool of open connections that may be reused. Connections may also be allocated from a destination, so that multiple request sources are not multiplexed over the same connection.

See Also:
HttpExchange}, HttpDestination}

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
 
Field Summary
static int CONNECTOR_SELECT_CHANNEL
           
static int CONNECTOR_SOCKET
           
 
Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
_listeners, FAILED, RUNNING, STARTED, STARTING, STOPPED, STOPPING
 
Constructor Summary
HttpClient()
           
 
Method Summary
 void cancel(Timeout.Task task)
           
 void clearAttributes()
           
protected  void doStart()
           
protected  void doStop()
           
 void dump()
           
 Object getAttribute(String name)
           
 Enumeration getAttributeNames()
           
 int getConnectorType()
          Get the type of connector (socket, blocking or select) in use.
 HttpDestination getDestination(Address remote, boolean ssl)
           
 long getIdleTimeout()
           
 String getKeyStoreLocation()
           
protected  SSLContext getLooseSSLContext()
           
 int getMaxConnectionsPerAddress()
           
 Set<String> getNoProxy()
           
 Address getProxy()
           
 Authorization getProxyAuthentication()
           
 RealmResolver getRealmResolver()
          returns the SecurityRealmResolver registered with the HttpClient or null
 LinkedList<String> getRegisteredListeners()
           
 int getSoTimeout()
           
protected  SSLContext getSSLContext()
          if a keystore location has been provided then client will attempt to use it as the keystore, otherwise we simply ignore certificates and run with a loose ssl context.
protected  SSLContext getStrictSSLContext()
           
 ThreadPool getThreadPool()
           
 long getTimeout()
           
 String getTrustStoreLocation()
           
 boolean getUseDirectBuffers()
          Get whether the connector can use direct NIO buffers.
 boolean hasRealms()
           
 boolean isProxied()
           
protected  boolean isRequestHeader(Buffer buffer)
           
protected  boolean isResponseHeader(Buffer buffer)
           
 int maxRetries()
           
protected  Buffer newRequestBuffer(int size)
           
protected  Buffer newRequestHeader(int size)
           
protected  Buffer newResponseBuffer(int size)
           
protected  Buffer newResponseHeader(int size)
           
 void registerListener(String listenerClass)
          Registers a listener that can listen to the stream of execution between the client and the server and influence events.
 void removeAttribute(String name)
           
 void schedule(Timeout.Task task)
           
 void send(HttpExchange exchange)
           
 void setAttribute(String name, Object attribute)
          Set an attribute on the HttpClient.
 void setConnectorType(int connectorType)
           
 void setIdleTimeout(long ms)
           
 void setKeyManagerPassword(String _keyManagerPassword)
           
 void setKeyStoreLocation(String keyStoreLocation)
           
 void setKeyStorePassword(String _keyStorePassword)
           
 void setMaxConnectionsPerAddress(int maxConnectionsPerAddress)
           
 void setMaxRetries(int retries)
           
 void setNoProxy(Set<String> noProxyAddresses)
           
 void setProxy(Address proxy)
           
 void setProxyAuthentication(Authorization authentication)
           
 void setRealmResolver(RealmResolver resolver)
           
 void setSoTimeout(int so)
           
 void setThreadPool(ThreadPool threadPool)
           
 void setTimeout(long ms)
           
 void setTrustStoreLocation(String trustStoreLocation)
           
 void setTrustStorePassword(String _trustStorePassword)
           
 void setUseDirectBuffers(boolean direct)
          Set to use NIO direct buffers.
 
Methods inherited from class org.eclipse.jetty.http.HttpBuffers
getHeaderBufferSize, getRequestBuffers, getRequestBufferSize, getRequestHeaderSize, getResponseBuffers, getResponseBufferSize, getResponseHeaderSize, setHeaderBufferSize, setRequestBufferSize, setRequestHeaderSize, setResponseBufferSize, setResponseHeaderSize
 
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
addLifeCycleListener, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CONNECTOR_SOCKET

public static final int CONNECTOR_SOCKET
See Also:
Constant Field Values

CONNECTOR_SELECT_CHANNEL

public static final int CONNECTOR_SELECT_CHANNEL
See Also:
Constant Field Values
Constructor Detail

HttpClient

public HttpClient()
Method Detail

dump

public void dump()

send

public void send(HttpExchange exchange)
          throws IOException
Throws:
IOException

getThreadPool

public ThreadPool getThreadPool()
Returns:
the threadPool

setThreadPool

public void setThreadPool(ThreadPool threadPool)
Parameters:
threadPool - the threadPool to set

getAttribute

public Object getAttribute(String name)
Specified by:
getAttribute in interface Attributes
Parameters:
name -
Returns:
Attribute associated with client

getAttributeNames

public Enumeration getAttributeNames()
Specified by:
getAttributeNames in interface Attributes
Returns:
names of attributes associated with client

removeAttribute

public void removeAttribute(String name)
Specified by:
removeAttribute in interface Attributes
Parameters:
name -

setAttribute

public void setAttribute(String name,
                         Object attribute)
Set an attribute on the HttpClient. Attributes are not used by the client, but are provided for so that users of a shared HttpClient may share other structures.

Specified by:
setAttribute in interface Attributes
Parameters:
name -
attribute -

clearAttributes

public void clearAttributes()
Specified by:
clearAttributes in interface Attributes
Parameters:
name -

getDestination

public HttpDestination getDestination(Address remote,
                                      boolean ssl)
                               throws UnknownHostException,
                                      IOException
Throws:
UnknownHostException
IOException

schedule

public void schedule(Timeout.Task task)

cancel

public void cancel(Timeout.Task task)

getUseDirectBuffers

public boolean getUseDirectBuffers()
Get whether the connector can use direct NIO buffers.


setRealmResolver

public void setRealmResolver(RealmResolver resolver)

getRealmResolver

public RealmResolver getRealmResolver()
returns the SecurityRealmResolver registered with the HttpClient or null

Returns:

hasRealms

public boolean hasRealms()

registerListener

public void registerListener(String listenerClass)
Registers a listener that can listen to the stream of execution between the client and the server and influence events. Sequential calls to the method wrapper sequentially wrap the preceeding listener in a delegation model.

NOTE: the SecurityListener is a special listener which doesn't need to be added via this mechanic, if you register security realms then it will automatically be added as the top listener of the delegation stack.

Parameters:
listenerClass -

getRegisteredListeners

public LinkedList<String> getRegisteredListeners()

setUseDirectBuffers

public void setUseDirectBuffers(boolean direct)
Set to use NIO direct buffers.

Parameters:
direct - If True (the default), the connector can use NIO direct buffers. Some JVMs have memory management issues (bugs) with direct buffers.

getConnectorType

public int getConnectorType()
Get the type of connector (socket, blocking or select) in use.


setConnectorType

public void setConnectorType(int connectorType)

newRequestBuffer

protected Buffer newRequestBuffer(int size)
Specified by:
newRequestBuffer in class HttpBuffers
See Also:
HttpBuffers.newRequestBuffer(int)

newRequestHeader

protected Buffer newRequestHeader(int size)
Specified by:
newRequestHeader in class HttpBuffers
See Also:
HttpBuffers.newRequestHeader(int)

newResponseBuffer

protected Buffer newResponseBuffer(int size)
Specified by:
newResponseBuffer in class HttpBuffers
See Also:
HttpBuffers.newResponseBuffer(int)

newResponseHeader

protected Buffer newResponseHeader(int size)
Specified by:
newResponseHeader in class HttpBuffers
See Also:
HttpBuffers.newResponseHeader(int)

isRequestHeader

protected boolean isRequestHeader(Buffer buffer)
Specified by:
isRequestHeader in class HttpBuffers
Returns:
True if the buffer is the correct type for a request header buffer

isResponseHeader

protected boolean isResponseHeader(Buffer buffer)
Specified by:
isResponseHeader in class HttpBuffers
Returns:
True if the buffer is the correct type for a response header buffer

getMaxConnectionsPerAddress

public int getMaxConnectionsPerAddress()

setMaxConnectionsPerAddress

public void setMaxConnectionsPerAddress(int maxConnectionsPerAddress)

doStart

protected void doStart()
                throws Exception
Overrides:
doStart in class HttpBuffers
Throws:
Exception

doStop

protected void doStop()
               throws Exception
Overrides:
doStop in class AbstractLifeCycle
Throws:
Exception

getSSLContext

protected SSLContext getSSLContext()
                            throws IOException
if a keystore location has been provided then client will attempt to use it as the keystore, otherwise we simply ignore certificates and run with a loose ssl context.

Returns:
Throws:
IOException

getStrictSSLContext

protected SSLContext getStrictSSLContext()
                                  throws IOException
Throws:
IOException

getLooseSSLContext

protected SSLContext getLooseSSLContext()
                                 throws IOException
Throws:
IOException

getIdleTimeout

public long getIdleTimeout()
Returns:
the period in milliseconds a HttpConnection can be idle for before it is closed.

setIdleTimeout

public void setIdleTimeout(long ms)
Parameters:
ms - the period in milliseconds a HttpConnection can be idle for before it is closed.

getSoTimeout

public int getSoTimeout()

setSoTimeout

public void setSoTimeout(int so)

getTimeout

public long getTimeout()
Returns:
the period in ms that an exchange will wait for a response from the server.

setTimeout

public void setTimeout(long ms)
Parameters:
ms - the period in ms that an exchange will wait for a response from the server.

getProxy

public Address getProxy()

setProxy

public void setProxy(Address proxy)

getProxyAuthentication

public Authorization getProxyAuthentication()

setProxyAuthentication

public void setProxyAuthentication(Authorization authentication)

isProxied

public boolean isProxied()

getNoProxy

public Set<String> getNoProxy()

setNoProxy

public void setNoProxy(Set<String> noProxyAddresses)

maxRetries

public int maxRetries()

setMaxRetries

public void setMaxRetries(int retries)

getTrustStoreLocation

public String getTrustStoreLocation()

setTrustStoreLocation

public void setTrustStoreLocation(String trustStoreLocation)

getKeyStoreLocation

public String getKeyStoreLocation()

setKeyStoreLocation

public void setKeyStoreLocation(String keyStoreLocation)

setKeyStorePassword

public void setKeyStorePassword(String _keyStorePassword)

setKeyManagerPassword

public void setKeyManagerPassword(String _keyManagerPassword)

setTrustStorePassword

public void setTrustStorePassword(String _trustStorePassword)


Copyright © 1995-2009 Mort Bay Consulting. All Rights Reserved.