Class ApacheHttpClient4Executor
java.lang.Object
org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor
- All Implemented Interfaces:
ClientExecutor
- Version:
- $Revision: 1 $
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
We useFileEntity
as theHttpEntity
implementation when the request OutputStream has been saved to a File on disk (because it was too large to fit into memory seeinvalid reference
RestCFHttpClientExecutor#writeRequestBodyToOutputStream(ClientRequest)
FileEntity
, otherwise the disk will soon run out of space - remember that there can be very huge files, in GB range, processed on a regular basis - and FileEntity exposes its content File as a protected field.private static enum
Enumeration to represent memory units.(package private) static class
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
protected boolean
protected boolean
private int
For uploading File's over JAX-RS framework, this property, together withfileUploadMemoryUnit
, defines the maximum File size allowed in memory.The unit forfileUploadInMemoryThresholdLimit
.private File
Temp directory to write output request stream to.static final String
protected org.apache.http.client.HttpClient
protected org.apache.http.protocol.HttpContext
static final String
static final String
private static String
Used to build temp file prefix.protected int
-
Constructor Summary
ConstructorsConstructorDescriptionApacheHttpClient4Executor
(org.apache.http.client.HttpClient httpClient) ApacheHttpClient4Executor
(org.apache.http.client.HttpClient httpClient, org.apache.http.protocol.HttpContext httpContext) -
Method Summary
Modifier and TypeMethodDescriptionprotected org.apache.http.HttpEntity
buildEntity
(ClientRequest request) Build the HttpEntity to be sent to the Service as part of (POST) request.private static void
protected void
cleanUpAfterExecute
(org.apache.http.client.methods.HttpRequestBase httpMethod) If passed httpMethod is of type HttpPost then obtain its entity.void
close()
void
commitHeaders
(ClientRequest request, org.apache.http.client.methods.HttpRequestBase httpMethod) protected InputStream
private org.apache.http.client.methods.HttpRequestBase
createHttpMethod
(String url, String restVerb) createRequest
(String uriTemplate) createRequest
(javax.ws.rs.core.UriBuilder uriBuilder) execute
(ClientRequest request) static CaseInsensitiveMap
<String> extractHeaders
(org.apache.http.HttpResponse response) void
finalize()
org.apache.http.client.HttpClient
org.apache.http.protocol.HttpContext
private int
int
Response stream is wrapped in a BufferedInputStream.protected String
Use context information, which will include node name, to avoid conflicts in case of multiple VMS using same temp directory location.private void
handleFileNotDeletedError
(File tempRequestFile, Exception ex) Log that the file did not get deleted but prevent the request from failing by eating the exception.boolean
isClosed()
void
loadHttpMethod
(ClientRequest request, org.apache.http.client.methods.HttpRequestBase httpMethod) void
setFileUploadInMemoryThresholdLimit
(int pInMemoryThresholdLimit) Setter forfileUploadInMemoryThresholdLimit
void
setFileUploadMemoryUnit
(String pMemoryUnit) Setter forfileUploadMemoryUnit
void
setFileUploadTempFileDir
(File pTempFileDir) Setter forfileUploadTempFileDir
(package private) void
setHttpClient
(org.apache.http.client.HttpClient pHttpClient) Setter for theHttpClient
to which this class delegates the actual HTTP call.void
setHttpContext
(org.apache.http.protocol.HttpContext httpContext) void
setResponseBufferSize
(int responseBufferSize) Response stream is wrapped in a BufferedInputStream.private org.apache.commons.io.output.DeferredFileOutputStream
Creates the request OutputStream, to be sent to the end Service invoked, as a DeferredFileOutputStream.
-
Field Details
-
BYTE_MEMORY_UNIT
- See Also:
-
KILOBYTE_MEMORY_UNIT
- See Also:
-
MEGABYTE_MEMORY_UNIT
- See Also:
-
GIGABYTE_MEMORY_UNIT
- See Also:
-
processId
Used to build temp file prefix. -
httpClient
protected org.apache.http.client.HttpClient httpClient -
createdHttpClient
protected boolean createdHttpClient -
httpContext
protected org.apache.http.protocol.HttpContext httpContext -
closed
protected boolean closed -
fileUploadInMemoryThresholdLimit
private int fileUploadInMemoryThresholdLimitFor uploading File's over JAX-RS framework, this property, together withfileUploadMemoryUnit
, defines the maximum File size allowed in memory. If fileSize exceeds this size, it will be stored tofileUploadTempFileDir
.
Defaults to 1 MB -
fileUploadMemoryUnit
- See Also:
-
fileUploadTempFileDir
Temp directory to write output request stream to. Any file to be uploaded has to be written out to the output request stream to be sent to the service and when the File is too huge the output request stream is written out to the disk rather than to memory.
Defaults to JVM temp directory. -
responseBufferSize
protected int responseBufferSize
-
-
Constructor Details
-
ApacheHttpClient4Executor
public ApacheHttpClient4Executor() -
ApacheHttpClient4Executor
public ApacheHttpClient4Executor(org.apache.http.client.HttpClient httpClient) -
ApacheHttpClient4Executor
public ApacheHttpClient4Executor(org.apache.http.client.HttpClient httpClient, org.apache.http.protocol.HttpContext httpContext)
-
-
Method Details
-
checkClientExceptionMapper
private static void checkClientExceptionMapper() -
getResponseBufferSize
public int getResponseBufferSize()Response stream is wrapped in a BufferedInputStream. Default is 8192. Value of 0 will not wrap it. Value of -1 will use a SelfExpandingBufferedInputStream- Returns:
-
setResponseBufferSize
public void setResponseBufferSize(int responseBufferSize) Response stream is wrapped in a BufferedInputStream. Default is 8192. Value of 0 will not wrap it. Value of -1 will use a SelfExpandingBufferedInputStream- Parameters:
responseBufferSize
-
-
getHttpClient
public org.apache.http.client.HttpClient getHttpClient() -
getHttpContext
public org.apache.http.protocol.HttpContext getHttpContext() -
setHttpContext
public void setHttpContext(org.apache.http.protocol.HttpContext httpContext) -
extractHeaders
-
createRequest
- Specified by:
createRequest
in interfaceClientExecutor
-
createRequest
- Specified by:
createRequest
in interfaceClientExecutor
-
createBufferedStream
-
execute
- Specified by:
execute
in interfaceClientExecutor
- Throws:
Exception
-
cleanUpAfterExecute
protected void cleanUpAfterExecute(org.apache.http.client.methods.HttpRequestBase httpMethod) If passed httpMethod is of type HttpPost then obtain its entity. If the entity has an enclosing File then delete it by invoking this method after the request has completed. The entity will have an enclosing File only if it was too huge to fit into memory.- Parameters:
httpMethod
- - the httpMethod to clean up.- See Also:
-
createHttpMethod
-
loadHttpMethod
public void loadHttpMethod(ClientRequest request, org.apache.http.client.methods.HttpRequestBase httpMethod) throws Exception - Throws:
Exception
-
buildEntity
Build the HttpEntity to be sent to the Service as part of (POST) request. Creates a off-memoryApacheHttpClient4Executor.FileExposingFileEntity
or a regular in-memoryByteArrayEntity
depending on if the request OutputStream fit into memory when built by callingwriteRequestBodyToOutputStream(ClientRequest)
.- Parameters:
request
- -- Returns:
- - the built HttpEntity
- Throws:
IOException
- -
-
writeRequestBodyToOutputStream
private org.apache.commons.io.output.DeferredFileOutputStream writeRequestBodyToOutputStream(ClientRequest request) throws IOException Creates the request OutputStream, to be sent to the end Service invoked, as a DeferredFileOutputStream.- Parameters:
request
- -- Returns:
- - DeferredFileOutputStream with the ClientRequest written out per HTTP specification.
- Throws:
IOException
- -
-
getMemoryUnitMultiplier
private int getMemoryUnitMultiplier()- Returns:
- - the constant to multiply
fileUploadInMemoryThresholdLimit
with based onfileUploadMemoryUnit
enumeration value.
-
getTempfilePrefix
Use context information, which will include node name, to avoid conflicts in case of multiple VMS using same temp directory location.- Returns:
- -
-
handleFileNotDeletedError
Log that the file did not get deleted but prevent the request from failing by eating the exception. Register the file to be deleted on exit, so it will get deleted eventually.- Parameters:
tempRequestFile
- -ex
- - a null may be passed in which case this param gets ignored.
-
setHttpClient
void setHttpClient(org.apache.http.client.HttpClient pHttpClient) Setter for theHttpClient
to which this class delegates the actual HTTP call. Note that this class acts as the adapter between RestEasy and Apache HTTP Component library.- Parameters:
pHttpClient
- -
-
setFileUploadInMemoryThresholdLimit
public void setFileUploadInMemoryThresholdLimit(int pInMemoryThresholdLimit) Setter forfileUploadInMemoryThresholdLimit
- Parameters:
pInMemoryThresholdLimit
- - the inMemoryThresholdLimitMB to set
-
setFileUploadTempFileDir
Setter forfileUploadTempFileDir
- Parameters:
pTempFileDir
- the tempFileDir to set
-
setFileUploadMemoryUnit
Setter forfileUploadMemoryUnit
- Parameters:
pMemoryUnit
- the memoryUnit to set
-
commitHeaders
public void commitHeaders(ClientRequest request, org.apache.http.client.methods.HttpRequestBase httpMethod) -
close
public void close()- Specified by:
close
in interfaceClientExecutor
-
isClosed
public boolean isClosed() -
finalize
-