|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor org.springframework.remoting.httpinvoker.SimpleHttpInvokerRequestExecutor
public class SimpleHttpInvokerRequestExecutor
HttpInvokerRequestExecutor implementation that uses standard J2SE facilities to execute POST requests, without support for HTTP authentication or advanced configuration options.
Designed for easy subclassing, customizing specific template methods. However, consider CommonsHttpInvokerRequestExecutor for more sophisticated needs: The J2SE HttpURLConnection is rather limited in its capabilities.
CommonsHttpInvokerRequestExecutor
,
HttpURLConnection
Field Summary |
---|
Fields inherited from class org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor |
---|
CONTENT_TYPE_SERIALIZED_OBJECT, ENCODING_GZIP, HTTP_HEADER_ACCEPT_ENCODING, HTTP_HEADER_CONTENT_ENCODING, HTTP_HEADER_CONTENT_LENGTH, HTTP_HEADER_CONTENT_TYPE, HTTP_METHOD_POST, logger |
Constructor Summary | |
---|---|
SimpleHttpInvokerRequestExecutor()
|
Method Summary | |
---|---|
protected RemoteInvocationResult |
doExecuteRequest(HttpInvokerClientConfiguration config,
ByteArrayOutputStream baos)
Execute the given request through a standard J2SE HttpURLConnection. |
protected boolean |
isGzipResponse(HttpURLConnection con)
Determine whether the given response is a GZIP response. |
protected HttpURLConnection |
openConnection(HttpInvokerClientConfiguration config)
Open an HttpURLConnection for the given remote invocation request. |
protected void |
prepareConnection(HttpURLConnection con,
int contentLength)
Prepare the given HTTP connection. |
protected InputStream |
readResponseBody(HttpInvokerClientConfiguration config,
HttpURLConnection con)
Extract the response body from the given executed remote invocation request. |
protected void |
validateResponse(HttpInvokerClientConfiguration config,
HttpURLConnection con)
Validate the given response as contained in the HttpURLConnection object, throwing an exception if it does not correspond to a successful HTTP response. |
protected void |
writeRequestBody(HttpInvokerClientConfiguration config,
HttpURLConnection con,
ByteArrayOutputStream baos)
Set the given serialized remote invocation as request body. |
Methods inherited from class org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor |
---|
createObjectInputStream, decorateInputStream, decorateOutputStream, doReadRemoteInvocationResult, doWriteRemoteInvocation, executeRequest, getBeanClassLoader, getByteArrayOutputStream, getContentType, isAcceptGzipEncoding, readRemoteInvocationResult, setAcceptGzipEncoding, setBeanClassLoader, setContentType, writeRemoteInvocation |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public SimpleHttpInvokerRequestExecutor()
Method Detail |
---|
protected RemoteInvocationResult doExecuteRequest(HttpInvokerClientConfiguration config, ByteArrayOutputStream baos) throws IOException, ClassNotFoundException
This method implements the basic processing workflow: The actual work happens in this class's template methods.
doExecuteRequest
in class AbstractHttpInvokerRequestExecutor
config
- the HTTP invoker configuration that specifies the
target servicebaos
- the ByteArrayOutputStream that contains the serialized
RemoteInvocation object
IOException
- if thrown by I/O operations
ClassNotFoundException
- if thrown during deserializationopenConnection(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration)
,
prepareConnection(java.net.HttpURLConnection, int)
,
writeRequestBody(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration, java.net.HttpURLConnection, java.io.ByteArrayOutputStream)
,
validateResponse(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration, java.net.HttpURLConnection)
,
readResponseBody(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration, java.net.HttpURLConnection)
protected HttpURLConnection openConnection(HttpInvokerClientConfiguration config) throws IOException
config
- the HTTP invoker configuration that specifies the
target service
IOException
- if thrown by I/O methodsURL.openConnection()
protected void prepareConnection(HttpURLConnection con, int contentLength) throws IOException
The default implementation specifies POST as method, "application/x-java-serialized-object" as "Content-Type" header, and the given content length as "Content-Length" header.
con
- the HTTP connection to preparecontentLength
- the length of the content to send
IOException
- if thrown by HttpURLConnection methodsHttpURLConnection.setRequestMethod(java.lang.String)
,
URLConnection.setRequestProperty(java.lang.String, java.lang.String)
protected void writeRequestBody(HttpInvokerClientConfiguration config, HttpURLConnection con, ByteArrayOutputStream baos) throws IOException
The default implementation simply write the serialized invocation to the HttpURLConnection's OutputStream. This can be overridden, for example, to write a specific encoding and potentially set appropriate HTTP request headers.
config
- the HTTP invoker configuration that specifies the target servicecon
- the HttpURLConnection to write the request body tobaos
- the ByteArrayOutputStream that contains the serialized
RemoteInvocation object
IOException
- if thrown by I/O methodsURLConnection.getOutputStream()
,
URLConnection.setRequestProperty(java.lang.String, java.lang.String)
protected void validateResponse(HttpInvokerClientConfiguration config, HttpURLConnection con) throws IOException
Default implementation rejects any HTTP status code beyond 2xx, to avoid parsing the response body and trying to deserialize from a corrupted stream.
config
- the HTTP invoker configuration that specifies the target servicecon
- the HttpURLConnection to validate
IOException
- if validation failedHttpURLConnection.getResponseCode()
protected InputStream readResponseBody(HttpInvokerClientConfiguration config, HttpURLConnection con) throws IOException
The default implementation simply reads the serialized invocation from the HttpURLConnection's InputStream. If the response is recognized as GZIP response, the InputStream will get wrapped in a GZIPInputStream.
config
- the HTTP invoker configuration that specifies the target servicecon
- the HttpURLConnection to read the response body from
IOException
- if thrown by I/O methodsisGzipResponse(java.net.HttpURLConnection)
,
GZIPInputStream
,
URLConnection.getInputStream()
,
HttpURLConnection.getHeaderField(int)
,
HttpURLConnection.getHeaderFieldKey(int)
protected boolean isGzipResponse(HttpURLConnection con)
Default implementation checks whether the HTTP "Content-Encoding" header contains "gzip" (in any casing).
con
- the HttpURLConnection to check
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |