Spring Integration

org.springframework.integration.http.inbound
Class HttpRequestHandlingMessagingGateway

java.lang.Object
  extended by org.springframework.integration.context.IntegrationObjectSupport
      extended by org.springframework.integration.endpoint.AbstractEndpoint
          extended by org.springframework.integration.gateway.MessagingGatewaySupport
              extended by org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport
                  extended by org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.InitializingBean, org.springframework.context.Lifecycle, org.springframework.context.Phased, org.springframework.context.SmartLifecycle, NamedComponent, OrderlyShutdownCapable, TrackableComponent, org.springframework.web.HttpRequestHandler

public class HttpRequestHandlingMessagingGateway
extends HttpRequestHandlingEndpointSupport
implements org.springframework.web.HttpRequestHandler

Inbound Messaging Gateway that handles HTTP Requests. May be configured as a bean in the Application Context and delegated to from a simple HttpRequestHandlerServlet in web.xml where the servlet and bean both have the same name. If the HttpRequestHandlingEndpointSupport.expectReply property is set to true, a response can generated from a reply Message. Otherwise, the gateway will play the role of a unidirectional Channel Adapter with a simple status-based response (e.g. 200 OK).

The default supported request methods are GET and POST, but the list of values can be configured with the HttpRequestHandlingEndpointSupport.supportedMethods property. The payload generated from a GET request (or HEAD or OPTIONS if supported) will be a MultiValueMap containing the parameter values. For a request containing a body (e.g. a POST), the type of the payload is determined by the request payload type.

If the HTTP request is a multipart and a "multipartResolver" bean has been defined in the context, then it will be converted by the MultipartAwareFormHttpMessageConverter as long as the default message converters have not been overwritten (although providing a customized instance of the Multipart-aware converter is also an option).

By default a number of HttpMessageConverters are already configured. The list can be overridden by calling the HttpRequestHandlingEndpointSupport.setMessageConverters(List) method.

Since:
2.0
Author:
Mark Fisher, Oleg Zhurakousky

Field Summary
 
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
logger
 
Constructor Summary
HttpRequestHandlingMessagingGateway()
           
HttpRequestHandlingMessagingGateway(boolean expectReply)
           
 
Method Summary
 void handleRequest(javax.servlet.http.HttpServletRequest servletRequest, javax.servlet.http.HttpServletResponse servletResponse)
          Handles the HTTP request by generating a Message and sending it to the request channel.
 void setConvertExceptions(boolean convertExceptions)
          Flag to determine if conversion and writing out of message handling exceptions should be attempted (default false, in which case they will simply be re-thrown).
 
Methods inherited from class org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport
afterShutdown, beforeShutdown, createEvaluationContext, doHandleRequest, doStart, getComponentType, getMessageConverters, isExpectReply, isShuttingDown, onInit, setExtractReplyPayload, setHeaderExpressions, setHeaderMapper, setMessageConverters, setMultipartResolver, setPath, setPayloadExpression, setRequestPayloadType, setSupportedMethodNames, setSupportedMethods, setupResponseAndConvertReply, setupResponseAndConvertReply
 
Methods inherited from class org.springframework.integration.gateway.MessagingGatewaySupport
doStop, receive, send, sendAndReceive, sendAndReceiveMessage, setErrorChannel, setReplyChannel, setReplyMapper, setReplyTimeout, setRequestChannel, setRequestMapper, setRequestTimeout, setShouldTrack
 
Methods inherited from class org.springframework.integration.endpoint.AbstractEndpoint
getPhase, isAutoStartup, isRunning, setAutoStartup, setPhase, setTaskScheduler, start, stop, stop
 
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, getBeanFactory, getComponentName, getConversionService, getTaskScheduler, setBeanFactory, setBeanName, setComponentName, setConversionService, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.springframework.integration.context.NamedComponent
getComponentName
 

Constructor Detail

HttpRequestHandlingMessagingGateway

public HttpRequestHandlingMessagingGateway()

HttpRequestHandlingMessagingGateway

public HttpRequestHandlingMessagingGateway(boolean expectReply)
Method Detail

setConvertExceptions

public void setConvertExceptions(boolean convertExceptions)
Flag to determine if conversion and writing out of message handling exceptions should be attempted (default false, in which case they will simply be re-thrown). If the flag is true and no message converter can convert the exception a new exception will be thrown.

Parameters:
convertExceptions - the flag to set

handleRequest

public final void handleRequest(javax.servlet.http.HttpServletRequest servletRequest,
                                javax.servlet.http.HttpServletResponse servletResponse)
                         throws javax.servlet.ServletException,
                                java.io.IOException
Handles the HTTP request by generating a Message and sending it to the request channel. If this gateway's 'expectReply' property is true, it will also generate a response from the reply Message once received. That response will be written by the HttpMessageConverters.

Specified by:
handleRequest in interface org.springframework.web.HttpRequestHandler
Throws:
javax.servlet.ServletException
java.io.IOException

Spring Integration