javax.xml.ws.spi.http
Class HttpExchange

java.lang.Object
  extended by javax.xml.ws.spi.http.HttpExchange

public abstract class HttpExchange
extends java.lang.Object

This class encapsulates a HTTP request received and a response to be generated in one exchange. It provides methods for examining the request from the client, and for building and sending the response.

A HttpExchange must be closed to free or reuse underlying resources. The effect of failing to close an exchange is undefined.

Since:
JAX-WS 2.2
Author:
Jitendra Kotamraju

Field Summary
static java.lang.String REQUEST_CIPHER_SUITE
          Standard property: cipher suite value when the request is received over HTTPS
static java.lang.String REQUEST_KEY_SIZE
          Standard property: bit size of the algorithm when the request is received over HTTPS
static java.lang.String REQUEST_X509CERTIFICATE
          Standard property: A SSL certificate, if any, associated with the request
 
Constructor Summary
HttpExchange()
           
 
Method Summary
abstract  void addResponseHeader(java.lang.String name, java.lang.String value)
          Adds a response header with the given name and value.
abstract  void close()
          This must be called to end an exchange.
abstract  java.lang.Object getAttribute(java.lang.String name)
          Returns an attribute that is associated with this HttpExchange.
abstract  java.util.Set<java.lang.String> getAttributeNames()
          Gives all the attribute names that are associated with this HttpExchange.
abstract  java.lang.String getContextPath()
          Returns the context path of all the endpoints in an application.
abstract  HttpContext getHttpContext()
          Returns a HttpContext for this exchange.
abstract  java.net.InetSocketAddress getLocalAddress()
          Returns the unresolved local address on which the request was received.
abstract  java.lang.String getPathInfo()
          Returns the extra path information that follows the web service path but precedes the query string in the request URI and will start with a "/" character.
abstract  java.lang.String getProtocol()
          Returns the protocol string from the request in the form protocol/majorVersion.minorVersion.
abstract  java.lang.String getQueryString()
          Returns the query string that is contained in the request URI after the path.
abstract  java.net.InetSocketAddress getRemoteAddress()
          Returns the unresolved address of the remote entity invoking this request.
abstract  java.io.InputStream getRequestBody()
          Returns a stream from which the request body can be read.
abstract  java.lang.String getRequestHeader(java.lang.String name)
          Returns the value of the specified request header.
abstract  java.util.Map<java.lang.String,java.util.List<java.lang.String>> getRequestHeaders()
          Returns an immutable Map containing the HTTP headers that were included with this request.
abstract  java.lang.String getRequestMethod()
          Get the HTTP request method
abstract  java.lang.String getRequestURI()
          Returns the part of the request's URI from the protocol name up to the query string in the first line of the HTTP request.
abstract  java.io.OutputStream getResponseBody()
          Returns a stream to which the response body must be written.
abstract  java.util.Map<java.lang.String,java.util.List<java.lang.String>> getResponseHeaders()
          Returns a mutable Map into which the HTTP response headers can be stored and which will be transmitted as part of this response.
abstract  java.lang.String getScheme()
          Returns the name of the scheme used to make this request, for example: http, or https.
abstract  java.security.Principal getUserPrincipal()
          Returns the Principal that represents the authenticated user for this HttpExchange.
abstract  boolean isUserInRole(java.lang.String role)
          Indicates whether an authenticated user is included in the specified logical "role".
abstract  void setStatus(int status)
          Sets the HTTP status code for the response.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

REQUEST_CIPHER_SUITE

public static final java.lang.String REQUEST_CIPHER_SUITE
Standard property: cipher suite value when the request is received over HTTPS

Type: String

See Also:
Constant Field Values

REQUEST_KEY_SIZE

public static final java.lang.String REQUEST_KEY_SIZE
Standard property: bit size of the algorithm when the request is received over HTTPS

Type: Integer

See Also:
Constant Field Values

REQUEST_X509CERTIFICATE

public static final java.lang.String REQUEST_X509CERTIFICATE
Standard property: A SSL certificate, if any, associated with the request

Type: java.security.cert.X509Certificate[] The order of this array is defined as being in ascending order of trust. The first certificate in the chain is the one set by the client, the next is the one used to authenticate the first, and so on.

See Also:
Constant Field Values
Constructor Detail

HttpExchange

public HttpExchange()
Method Detail

getRequestHeaders

public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> getRequestHeaders()
Returns an immutable Map containing the HTTP headers that were included with this request. The keys in this Map will be the header names, while the values will be a List of Strings containing each value that was included (either for a header that was listed several times, or one that accepts a comma-delimited list of values on a single line). In either of these cases, the values for the header name will be presented in the order that they were included in the request.

The keys in Map are case-insensitive.

Returns:
an immutable Map which can be used to access request headers

getRequestHeader

public abstract java.lang.String getRequestHeader(java.lang.String name)
Returns the value of the specified request header. If the request did not include a header of the specified name, this method returns null. If there are multiple headers with the same name, this method returns the first header in the request. The header name is case-insensitive. This is a convienence method to get a header (instead of using the getRequestHeaders()).

Parameters:
name - the name of the request header
Returns:
returns the value of the requested header, or null if the request does not have a header of that name

getResponseHeaders

public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> getResponseHeaders()
Returns a mutable Map into which the HTTP response headers can be stored and which will be transmitted as part of this response. The keys in the Map will be the header names, while the values must be a List of Strings containing each value that should be included multiple times (in the order that they should be included).

The keys in Map are case-insensitive.

Returns:
a mutable Map which can be used to set response headers.

addResponseHeader

public abstract void addResponseHeader(java.lang.String name,
                                       java.lang.String value)
Adds a response header with the given name and value. This method allows a response header to have multiple values. This is a convenience method to add a response header(instead of using the {link #getResponseHeaders()}).

Parameters:
name - the name of the header
value - the additional header value. If it contains octet string, it should be encoded according to RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt)
See Also:
getResponseHeaders()

getRequestURI

public abstract java.lang.String getRequestURI()
Returns the part of the request's URI from the protocol name up to the query string in the first line of the HTTP request. Container doesn't decode this string.

Returns:
the request URI

getContextPath

public abstract java.lang.String getContextPath()
Returns the context path of all the endpoints in an application. This path is the portion of the request URI that indicates the context of the request. The context path always comes first in a request URI. The path starts with a "/" character but does not end with a "/" character. If this method returns "", the request is for default context. The container does not decode this string.

Context path is used in computing the endpoint address. See HttpContext#getPath

Returns:
context path of all the endpoints in an application
See Also:
HttpContext#getPath

getRequestMethod

public abstract java.lang.String getRequestMethod()
Get the HTTP request method

Returns:
the request method

getHttpContext

public abstract HttpContext getHttpContext()
Returns a HttpContext for this exchange. Container matches the request with the associated Endpoint's HttpContext

Returns:
the HttpContext for this exchange

close

public abstract void close()
                    throws java.io.IOException
This must be called to end an exchange. Container takes care of closing request and response streams. This must be called so that the container can free or reuse underlying resources.

Throws:
java.io.IOException - if any i/o error

getRequestBody

public abstract java.io.InputStream getRequestBody()
                                            throws java.io.IOException
Returns a stream from which the request body can be read. Multiple calls to this method will return the same stream.

Returns:
the stream from which the request body can be read.
Throws:
java.io.IOException - if any i/o error during request processing

getResponseBody

public abstract java.io.OutputStream getResponseBody()
                                              throws java.io.IOException
Returns a stream to which the response body must be written. setStatus(int)) must be called prior to calling this method. Multiple calls to this method (for the same exchange) will return the same stream.

Returns:
the stream to which the response body is written
Throws:
java.io.IOException - if any i/o error during response processing

setStatus

public abstract void setStatus(int status)
Sets the HTTP status code for the response.

This method must be called prior to calling getResponseBody().

Parameters:
status - the response code to send
See Also:
getResponseBody()

getRemoteAddress

public abstract java.net.InetSocketAddress getRemoteAddress()
Returns the unresolved address of the remote entity invoking this request.

Returns:
the InetSocketAddress of the caller

getLocalAddress

public abstract java.net.InetSocketAddress getLocalAddress()
Returns the unresolved local address on which the request was received.

Returns:
the InetSocketAddress of the local interface

getProtocol

public abstract java.lang.String getProtocol()
Returns the protocol string from the request in the form protocol/majorVersion.minorVersion. For example, "HTTP/1.1"

Returns:
the protocol string from the request

getScheme

public abstract java.lang.String getScheme()
Returns the name of the scheme used to make this request, for example: http, or https.

Returns:
name of the scheme used to make this request

getPathInfo

public abstract java.lang.String getPathInfo()
Returns the extra path information that follows the web service path but precedes the query string in the request URI and will start with a "/" character.

This can be used for MessageContext#PATH_INFO

Returns:
decoded extra path information of web service. It is the path that comes after the web service path but before the query string in the request URI null if there is no extra path in the request URI

getQueryString

public abstract java.lang.String getQueryString()
Returns the query string that is contained in the request URI after the path.

This can be used for MessageContext#QUERY_STRING

Returns:
undecoded query string of request URI, or null if the request URI doesn't have one

getAttribute

public abstract java.lang.Object getAttribute(java.lang.String name)
Returns an attribute that is associated with this HttpExchange. JAX-WS handlers and endpoints may then access the attribute via MessageContext.

Servlet containers must expose MessageContext#SERVLET_CONTEXT, MessageContext#SERVLET_REQUEST, and MessageContext#SERVLET_RESPONSE as attributes.

If the request has been received by the container using HTTPS, the following information must be exposed as attributes. These attributes are REQUEST_CIPHER_SUITE, and REQUEST_KEY_SIZE. If there is a SSL certificate associated with the request, it must be exposed using REQUEST_X509CERTIFICATE

Parameters:
name - attribute name
Returns:
the attribute value, or null if the attribute doesn't exist

getAttributeNames

public abstract java.util.Set<java.lang.String> getAttributeNames()
Gives all the attribute names that are associated with this HttpExchange.

Returns:
set of all attribute names
See Also:
getAttribute(String)

getUserPrincipal

public abstract java.security.Principal getUserPrincipal()
Returns the Principal that represents the authenticated user for this HttpExchange.

Returns:
Principal for an authenticated user, or null if not authenticated

isUserInRole

public abstract boolean isUserInRole(java.lang.String role)
Indicates whether an authenticated user is included in the specified logical "role".

Parameters:
role - specifies the name of the role
Returns:
true if the user making this request belongs to a given role


Submit a bug or feature

Copyright © 2009, 2010, Oracle Corporation and/or its affiliates. All Rights Reserved. Use is subject to license terms.

Generated on 4-June-2010 04:34