Class ApacheHttpClient4Engine
- java.lang.Object
-
- org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine
-
- All Implemented Interfaces:
ClientHttpEngine
- Direct Known Subclasses:
ApacheHttpClient43Engine
public class ApacheHttpClient4Engine extends java.lang.Object implements ClientHttpEngine
- Version:
- $Revision: 1 $
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
ApacheHttpClient4Engine.FileExposingFileEntity
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 see however, we have to delete the File supporting theFileEntity
, 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.static class
ApacheHttpClient4Engine.MemoryUnit
Enumeration to represent memory units.
-
Field Summary
Fields Modifier and Type Field Description protected boolean
chunked
protected boolean
closed
protected boolean
createdHttpClient
protected org.apache.http.HttpHost
defaultProxy
protected int
fileUploadInMemoryThresholdLimit
For uploading File's over JAX-RS framework, this property, together withfileUploadMemoryUnit
, defines the maximum File size allowed in memory.protected ApacheHttpClient4Engine.MemoryUnit
fileUploadMemoryUnit
The unit forfileUploadInMemoryThresholdLimit
.protected java.io.File
fileUploadTempFileDir
Temp directory to write output request stream to.protected javax.net.ssl.HostnameVerifier
hostnameVerifier
protected org.apache.http.client.HttpClient
httpClient
protected org.apache.http.protocol.HttpContext
httpContext
protected HttpContextProvider
httpContextProvider
private static java.lang.String
processId
Used to build temp file prefix.protected int
responseBufferSize
protected javax.net.ssl.SSLContext
sslContext
-
Constructor Summary
Constructors Constructor Description ApacheHttpClient4Engine()
ApacheHttpClient4Engine(org.apache.http.client.HttpClient httpClient)
ApacheHttpClient4Engine(org.apache.http.client.HttpClient httpClient, boolean closeHttpClient)
ApacheHttpClient4Engine(org.apache.http.client.HttpClient httpClient, org.apache.http.protocol.HttpContext httpContext)
Deprecated.ApacheHttpClient4Engine(org.apache.http.client.HttpClient httpClient, HttpContextProvider httpContextProvider)
ApacheHttpClient4Engine(org.apache.http.HttpHost defaultProxy)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected org.apache.http.HttpEntity
buildEntity(ClientInvocation request)
Build the HttpEntity to be sent to the Service as part of (POST) request.protected void
cleanUpAfterExecute(org.apache.http.client.methods.HttpRequestBase httpMethod)
If passed httpMethod is of type HttpPost then obtain its entity.void
close()
protected void
commitHeaders(ClientInvocation request, org.apache.http.client.methods.HttpRequestBase httpMethod)
protected java.io.InputStream
createBufferedStream(java.io.InputStream is)
protected org.apache.http.client.HttpClient
createDefaultHttpClient()
protected org.apache.http.client.methods.HttpRequestBase
createHttpMethod(java.lang.String url, java.lang.String restVerb)
static CaseInsensitiveMap<java.lang.String>
extractHeaders(org.apache.http.HttpResponse response)
void
finalize()
org.apache.http.HttpHost
getDefaultProxy()
int
getFileUploadInMemoryThresholdLimit()
Based on memory unitApacheHttpClient4Engine.MemoryUnit
getFileUploadMemoryUnit()
java.io.File
getFileUploadTempFileDir()
javax.net.ssl.HostnameVerifier
getHostnameVerifier()
Needed for Client.getHostnameVerifier()org.apache.http.client.HttpClient
getHttpClient()
org.apache.http.protocol.HttpContext
getHttpContext()
Deprecated.private int
getMemoryUnitMultiplier()
int
getResponseBufferSize()
Response stream is wrapped in a BufferedInputStream.javax.net.ssl.SSLContext
getSslContext()
Needed for Client.getSslContext();protected java.lang.String
getTempfilePrefix()
Use context information, which will include node name, to avoid conflicts in case of multiple VMS using same temp directory location.private void
handleFileNotDeletedError(java.io.File tempRequestFile, java.lang.Exception ex)
Log that the file did not get deleted but prevent the request from failing by eating the exception.ClientResponse
invoke(ClientInvocation request)
boolean
isChunked()
boolean
isClosed()
protected boolean
isRedirectRequired(ClientInvocation request, org.apache.http.client.methods.HttpRequestBase httpMethod)
protected void
loadHttpMethod(ClientInvocation request, org.apache.http.client.methods.HttpRequestBase httpMethod)
void
setChunked(boolean chunked)
void
setFileUploadInMemoryThresholdLimit(int fileUploadInMemoryThresholdLimit)
void
setFileUploadMemoryUnit(ApacheHttpClient4Engine.MemoryUnit fileUploadMemoryUnit)
void
setFileUploadTempFileDir(java.io.File fileUploadTempFileDir)
void
setHostnameVerifier(javax.net.ssl.HostnameVerifier hostnameVerifier)
void
setHttpContext(org.apache.http.protocol.HttpContext httpContext)
Deprecated.protected void
setRedirectNotRequired(ClientInvocation request, org.apache.http.client.methods.HttpRequestBase httpMethod)
protected void
setRedirectRequired(ClientInvocation request, org.apache.http.client.methods.HttpRequestBase httpMethod)
void
setResponseBufferSize(int responseBufferSize)
Response stream is wrapped in a BufferedInputStream.void
setSslContext(javax.net.ssl.SSLContext sslContext)
private org.apache.commons.io.output.DeferredFileOutputStream
writeRequestBodyToOutputStream(ClientInvocation request)
Creates the request OutputStream, to be sent to the end Service invoked, as a DeferredFileOutputStream.
-
-
-
Field Detail
-
processId
private static java.lang.String 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
-
httpContextProvider
protected HttpContextProvider httpContextProvider
-
closed
protected boolean closed
-
sslContext
protected javax.net.ssl.SSLContext sslContext
-
hostnameVerifier
protected javax.net.ssl.HostnameVerifier hostnameVerifier
-
responseBufferSize
protected int responseBufferSize
-
defaultProxy
protected org.apache.http.HttpHost defaultProxy
-
chunked
protected boolean chunked
-
fileUploadInMemoryThresholdLimit
protected int fileUploadInMemoryThresholdLimit
For 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
protected ApacheHttpClient4Engine.MemoryUnit fileUploadMemoryUnit
- See Also:
ApacheHttpClient4Engine.MemoryUnit
-
fileUploadTempFileDir
protected java.io.File 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.
-
-
Constructor Detail
-
ApacheHttpClient4Engine
public ApacheHttpClient4Engine()
-
ApacheHttpClient4Engine
public ApacheHttpClient4Engine(org.apache.http.HttpHost defaultProxy)
-
ApacheHttpClient4Engine
public ApacheHttpClient4Engine(org.apache.http.client.HttpClient httpClient)
-
ApacheHttpClient4Engine
public ApacheHttpClient4Engine(org.apache.http.client.HttpClient httpClient, boolean closeHttpClient)
-
ApacheHttpClient4Engine
@Deprecated public ApacheHttpClient4Engine(org.apache.http.client.HttpClient httpClient, org.apache.http.protocol.HttpContext httpContext)
Deprecated.Creates a client engine instance using the specifiedHttpClient
andHttpContext
instances. Note that the same instance of httpContext is passed to the engine, which may store thread unsafe attributes in it. It is hence recommended to override the HttpClientexecute(HttpUriRequest request, HttpContext context)
method to perform a deep copy of the context before executing the request.- Parameters:
httpClient
- The http clienthttpContext
- The context to be used for executing requests
-
ApacheHttpClient4Engine
public ApacheHttpClient4Engine(org.apache.http.client.HttpClient httpClient, HttpContextProvider httpContextProvider)
-
-
Method Detail
-
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
-
-
getFileUploadInMemoryThresholdLimit
public int getFileUploadInMemoryThresholdLimit()
Based on memory unit- Returns:
-
setFileUploadInMemoryThresholdLimit
public void setFileUploadInMemoryThresholdLimit(int fileUploadInMemoryThresholdLimit)
-
getFileUploadMemoryUnit
public ApacheHttpClient4Engine.MemoryUnit getFileUploadMemoryUnit()
-
setFileUploadMemoryUnit
public void setFileUploadMemoryUnit(ApacheHttpClient4Engine.MemoryUnit fileUploadMemoryUnit)
-
getFileUploadTempFileDir
public java.io.File getFileUploadTempFileDir()
-
setFileUploadTempFileDir
public void setFileUploadTempFileDir(java.io.File fileUploadTempFileDir)
-
getHttpClient
public org.apache.http.client.HttpClient getHttpClient()
-
getHttpContext
@Deprecated public org.apache.http.protocol.HttpContext getHttpContext()
Deprecated.
-
setHttpContext
@Deprecated public void setHttpContext(org.apache.http.protocol.HttpContext httpContext)
Deprecated.
-
getSslContext
public javax.net.ssl.SSLContext getSslContext()
Description copied from interface:ClientHttpEngine
Needed for Client.getSslContext();- Specified by:
getSslContext
in interfaceClientHttpEngine
- Returns:
-
setSslContext
public void setSslContext(javax.net.ssl.SSLContext sslContext)
-
getHostnameVerifier
public javax.net.ssl.HostnameVerifier getHostnameVerifier()
Description copied from interface:ClientHttpEngine
Needed for Client.getHostnameVerifier()- Specified by:
getHostnameVerifier
in interfaceClientHttpEngine
- Returns:
-
setHostnameVerifier
public void setHostnameVerifier(javax.net.ssl.HostnameVerifier hostnameVerifier)
-
getDefaultProxy
public org.apache.http.HttpHost getDefaultProxy()
-
extractHeaders
public static CaseInsensitiveMap<java.lang.String> extractHeaders(org.apache.http.HttpResponse response)
-
createBufferedStream
protected java.io.InputStream createBufferedStream(java.io.InputStream is)
-
invoke
public ClientResponse invoke(ClientInvocation request)
- Specified by:
invoke
in interfaceClientHttpEngine
-
createHttpMethod
protected org.apache.http.client.methods.HttpRequestBase createHttpMethod(java.lang.String url, java.lang.String restVerb)
-
isRedirectRequired
protected boolean isRedirectRequired(ClientInvocation request, org.apache.http.client.methods.HttpRequestBase httpMethod)
-
createDefaultHttpClient
protected org.apache.http.client.HttpClient createDefaultHttpClient()
-
setRedirectRequired
protected void setRedirectRequired(ClientInvocation request, org.apache.http.client.methods.HttpRequestBase httpMethod)
-
setRedirectNotRequired
protected void setRedirectNotRequired(ClientInvocation request, org.apache.http.client.methods.HttpRequestBase httpMethod)
-
loadHttpMethod
protected void loadHttpMethod(ClientInvocation request, org.apache.http.client.methods.HttpRequestBase httpMethod) throws java.lang.Exception
- Throws:
java.lang.Exception
-
commitHeaders
protected void commitHeaders(ClientInvocation request, org.apache.http.client.methods.HttpRequestBase httpMethod)
-
close
public void close()
- Specified by:
close
in interfaceClientHttpEngine
-
isClosed
public boolean isClosed()
-
finalize
public void finalize() throws java.lang.Throwable
- Overrides:
finalize
in classjava.lang.Object
- Throws:
java.lang.Throwable
-
isChunked
public boolean isChunked()
-
setChunked
public void setChunked(boolean chunked)
-
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.
-
buildEntity
protected org.apache.http.HttpEntity buildEntity(ClientInvocation request) throws java.io.IOException
Build the HttpEntity to be sent to the Service as part of (POST) request. Creates a off-memoryApacheHttpClient4Engine.FileExposingFileEntity
or a regular in-memoryByteArrayEntity
depending on if the request OutputStream fit into memory when built by calling.- Parameters:
request
- -- Returns:
- - the built HttpEntity
- Throws:
java.io.IOException
- -
-
writeRequestBodyToOutputStream
private org.apache.commons.io.output.DeferredFileOutputStream writeRequestBodyToOutputStream(ClientInvocation request) throws java.io.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:
java.io.IOException
- -
-
getTempfilePrefix
protected java.lang.String getTempfilePrefix()
Use context information, which will include node name, to avoid conflicts in case of multiple VMS using same temp directory location.- Returns:
- -
-
getMemoryUnitMultiplier
private int getMemoryUnitMultiplier()
- Returns:
- - the constant to multiply
fileUploadInMemoryThresholdLimit
with based onfileUploadMemoryUnit
enumeration value.
-
handleFileNotDeletedError
private void handleFileNotDeletedError(java.io.File tempRequestFile, java.lang.Exception ex)
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.
-
-