## org.mortbay.jetty.client
Class HttpClient

    java.lang.Object
      org.mortbay.component.AbstractLifeCycle
          org.mortbay.jetty.AbstractBuffers
              org.mortbay.jetty.client.HttpClient

All Implemented Interfaces:
  LifeCycle, Buffers, Attributes

    public class HttpClient

extends AbstractBuffers
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 `HttpConnection`s 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.

Author:
  Greg Wilkins, Matthew Purland, Guillaume Nodet
See Also:
  `HttpExchange}`, `HttpDestination}`

Nested Class Summary

Nested classes/interfaces inherited from class org.mortbay.jetty.AbstractBuffers
`AbstractBuffers.ThreadBuffers`

Nested classes/interfaces inherited from interface org.mortbay.component.LifeCycle
`LifeCycle.Listener`

Field Summary
`static int` `CONNECTOR_SELECT_CHANNEL`
`static int` `CONNECTOR_SOCKET`

Fields inherited from class org.mortbay.component.AbstractLifeCycle
`_listeners`

Constructor Summary
`HttpClient()`

Method Summary
`void` `cancel(Timeout.Task task)`
`void` `clearAttributes()`
`protected void` `doStart()`
`protected void` `doStop()`
`void` `dump()`
`java.lang.Object` `getAttribute(java.lang.String name)`
`java.util.Enumeration` `getAttributeNames()`
`int` `getConnectorType()` Get the type of connector (socket, blocking or select) in use.
`HttpDestination` `getDestination(Address remote, boolean ssl)`
`long` `getIdleTimeout()`
`java.lang.String` `getKeyStoreLocation()`
`protected javax.net.ssl.SSLContext` `getLooseSSLContext()`
`int` `getMaxConnectionsPerAddress()`
`java.util.Set<java.lang.String>` `getNoProxy()`
`Address` `getProxy()`
`Authorization` `getProxyAuthentication()`
`RealmResolver` `getRealmResolver()` returns the SecurityRealmResolver registered with the HttpClient or null
`java.util.LinkedList<java.lang.String>` `getRegisteredListeners()`
`int` `getSoTimeout()`
`protected javax.net.ssl.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 javax.net.ssl.SSLContext` `getStrictSSLContext()`
`ThreadPool` `getThreadPool()`
`long` `getTimeout()`
`java.lang.String` `getTrustStoreLocation()`
`boolean` `getUseDirectBuffers()` Get whether the connector can use direct NIO buffers.
`boolean` `hasRealms()`
`boolean` `isProxied()`
`int` `maxRetries()`
`protected Buffer` `newBuffer(int size)` Create a new NIO buffer.
`void` `registerListener(java.lang.String listenerClass)` Registers a listener that can listen to the stream of execution between the client and the server and influence events.
`void` `removeAttribute(java.lang.String name)`
`void` `schedule(Timeout.Task task)`
`void` `schedule(Timeout.Task task, long timeout)`
`void` `scheduleIdle(Timeout.Task task)`
`void` `send(HttpExchange exchange)`
`void` `setAttribute(java.lang.String name, java.lang.Object attribute)` Set an attribute on the HttpClient.
`void` `setConnectorType(int connectorType)`
`void` `setIdleTimeout(long ms)`
`void` `setKeyManagerPassword(java.lang.String _keyManagerPassword)`
`void` `setKeyStoreLocation(java.lang.String keyStoreLocation)`
`void` `setKeyStorePassword(java.lang.String _keyStorePassword)`
`void` `setMaxConnectionsPerAddress(int maxConnectionsPerAddress)`
`void` `setMaxRetries(int retries)`
`void` `setNoProxy(java.util.Set<java.lang.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(java.lang.String trustStoreLocation)`
`void` `setTrustStorePassword(java.lang.String _trustStorePassword)`
`void` `setUseDirectBuffers(boolean direct)` Set to use NIO direct buffers.

Methods inherited from class org.mortbay.jetty.AbstractBuffers
`getBuffer, getHeaderBufferSize, getRequestBufferSize, getResponseBufferSize, returnBuffer, setHeaderBufferSize, setRequestBufferSize, setResponseBufferSize, toString`

Methods inherited from class org.mortbay.component.AbstractLifeCycle
`addLifeCycleListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, 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()
              throws java.io.IOException

  Throws:
    `java.io.IOException`

### send

    public void send(HttpExchange exchange)
              throws java.io.IOException

  Throws:
    `java.io.IOException`

### getThreadPool

    public ThreadPool getThreadPool()

  Returns:
    the threadPool

### setThreadPool

    public void setThreadPool(ThreadPool threadPool)

  Parameters:
    `threadPool` - the threadPool to set

### getAttribute

    public java.lang.Object getAttribute(java.lang.String name)

  Specified by:
    `getAttribute` in interface `Attributes`
  Parameters:
    `name` -
  Returns:
    Attribute associated with client

### getAttributeNames

    public java.util.Enumeration getAttributeNames()

  Specified by:
    `getAttributeNames` in interface `Attributes`
  Returns:
    names of attributes associated with client

### removeAttribute

    public void removeAttribute(java.lang.String name)

  Specified by:
    `removeAttribute` in interface `Attributes`
  Parameters:
    `name` -

### setAttribute

    public void setAttribute(java.lang.String name,
                             java.lang.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 java.net.UnknownHostException,
                                          java.io.IOException

  Throws:
    `java.net.UnknownHostException`
    `java.io.IOException`

### schedule

    public void schedule(Timeout.Task task)

### schedule

    public void schedule(Timeout.Task task,
                         long timeout)

### scheduleIdle

    public void scheduleIdle(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(java.lang.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 java.util.LinkedList<java.lang.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)

### newBuffer

    protected Buffer newBuffer(int size)

  Create a new NIO buffer. If using direct buffers, it will create a direct NIO buffer, other than an indirect buffer.

  Specified by:
    `newBuffer` in class `AbstractBuffers`

### getMaxConnectionsPerAddress

    public int getMaxConnectionsPerAddress()

### setMaxConnectionsPerAddress

    public void setMaxConnectionsPerAddress(int maxConnectionsPerAddress)

### doStart

    protected void doStart()
                    throws java.lang.Exception

  Overrides:
    `doStart` in class `AbstractBuffers`
  Throws:
    `java.lang.Exception`

### doStop

    protected void doStop()
                   throws java.lang.Exception

  Overrides:
    `doStop` in class `AbstractLifeCycle`
  Throws:
    `java.lang.Exception`

### getSSLContext

    protected javax.net.ssl.SSLContext getSSLContext()
                                              throws java.io.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:
    `java.io.IOException`

### getStrictSSLContext

    protected javax.net.ssl.SSLContext getStrictSSLContext()
                                                    throws java.io.IOException

  Throws:
    `java.io.IOException`

### getLooseSSLContext

    protected javax.net.ssl.SSLContext getLooseSSLContext()
                                                   throws java.io.IOException

  Throws:
    `java.io.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 java.util.Set<java.lang.String> getNoProxy()

### setNoProxy

    public void setNoProxy(java.util.Set<java.lang.String> noProxyAddresses)

### maxRetries

    public int maxRetries()

### setMaxRetries

    public void setMaxRetries(int retries)

### getTrustStoreLocation

    public java.lang.String getTrustStoreLocation()

### setTrustStoreLocation

    public void setTrustStoreLocation(java.lang.String trustStoreLocation)

### getKeyStoreLocation

    public java.lang.String getKeyStoreLocation()

### setKeyStoreLocation

    public void setKeyStoreLocation(java.lang.String keyStoreLocation)

### setKeyStorePassword

    public void setKeyStorePassword(java.lang.String _keyStorePassword)

### setKeyManagerPassword

    public void setKeyManagerPassword(java.lang.String _keyManagerPassword)

### setTrustStorePassword

    public void setTrustStorePassword(java.lang.String _trustStorePassword)

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