[置顶] Spring Integration实例代码分析之basic--http
2012-10-25 14:35
465 查看
从spring官方网站下载Spring Integration的例子代码,里面包含了很多个分好类的例子
下载地址:https://github.com/SpringSource/spring-integration-samples
打开basic文件夹,里面有一个http的例子
安装方式:eclipse-->help-->eclipemarketplace 搜索maven
安装前两个就行了
之后导入http这个例子的代码,eclipse-->import-->existing maven projects,
选择http文件夹(包含pom.xml的文件夹都可以导入)即可导入此项目,maven会自动去下载所需的依赖包,目录结构如下图:
分析一下web.xml文件,
web.xml
其contextConfigLocation配置的是/WEB-INF/servlet-config.xml
我们再看一下servlet-config.xml文件
配置了一个int-http:inbound-gateway,channel和一个service-activator,inbound-gateway用来接受请求,关联名称/receiveGateway,接受POST GET请求,并连接到一个通道,为receiveChannel,通道关联到一个service-activator,表达式为payload + from the other side,其中payload为从客户端接受的信息,添加一些信息之后返回去。
服务器端就是这么简单的内容,用spring的eclipse插件打开这个文件,可以看到图示:
我们可以将服务器端运行起来,选择pom右键-->run as-->maven build
在goal输入jetty:run,确定即可。
输出信息如下:
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] <<< maven-jetty-plugin:6.1.10:run (default-cli) @ http <<<
[WARNING] The artifact org.apache.commons:commons-io:jar:1.3.2 has been relocated to commons-io:commons-io:jar:1.3.2
[INFO]
[INFO] --- maven-jetty-plugin:6.1.10:run (default-cli) @ http ---
[INFO] Configuring Jetty for project: Samples (Basic) - HTTP Demo
[INFO] Webapp source directory = /media/g_windows/ubuntudata/code/SpringSource-spring-integration-samples-84aefe6/basic/http/src/main/webapp
[INFO] web.xml file = /media/g_windows/ubuntudata/code/SpringSource-spring-integration-samples-84aefe6/basic/http/src/main/webapp/WEB-INF/web.xml
[INFO] Classes = /media/g_windows/ubuntudata/code/SpringSource-spring-integration-samples-84aefe6/basic/http/target/classes
2012-10-25 15:15:37.729::INFO: Logging to STDERR via org.mortbay.log.StdErrLog
[INFO] Context path = /http
[INFO] Tmp directory = determined at runtime
[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml
[INFO] Web overrides = none
[INFO] Webapp directory = /media/g_windows/ubuntudata/code/SpringSource-spring-integration-samples-84aefe6/basic/http/src/main/webapp
[INFO] Starting jetty 6.1.10 ...
2012-10-25 15:15:37.823::INFO: jetty-6.1.10
2012-10-25 15:15:37.201::INFO: No Transaction manager found - if your webapp requires one, please configure one.
2012-10-25 15:15:38.179:/http:INFO: Initializing Spring FrameworkServlet 'Multipart'
15:15:38.803 INFO [main][org.springframework.web.servlet.DispatcherServlet] FrameworkServlet 'Multipart': initialization started
15:15:38.862 INFO [main][org.springframework.web.context.support.XmlWebApplicationContext] Refreshing WebApplicationContext for namespace 'Multipart-servlet': startup date [Thu Oct 25 15:15:38 CST 2012]; root of context hierarchy
15:15:38.927 INFO [main][org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from ServletContext resource [/WEB-INF/servlet-config.xml]
15:15:39.712 INFO [main][org.springframework.integration.config.xml.DefaultConfiguringBeanFactoryPostProcessor] No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created.
15:15:39.712 INFO [main][org.springframework.integration.config.xml.DefaultConfiguringBeanFactoryPostProcessor] No bean named 'taskScheduler' has been explicitly defined. Therefore, a default ThreadPoolTaskScheduler will be created.
15:15:39.734 INFO [main][org.springframework.beans.factory.support.DefaultListableBeanFactory] Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@66b4c2e4: defining beans [org.springframework.integration.internalDefaultConfiguringBeanFactoryPostProcessor,/receiveGateway,receiveChannel,org.springframework.integration.config.ServiceActivatorFactoryBean#0,org.springframework.integration.config.ConsumerEndpointFactoryBean#0,nullChannel,errorChannel,_org.springframework.integration.errorLogger,taskScheduler,org.springframework.integration.config.IdGeneratorConfigurer#0];
root of factory hierarchy
15:15:40.455 INFO [main][org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler] Initializing ExecutorService 'taskScheduler'
15:15:40.461 INFO [main][org.springframework.context.support.DefaultLifecycleProcessor] Starting beans in phase -2147483648
15:15:40.462 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] Adding {service-activator} as a subscriber to the 'receiveChannel' channel
15:15:40.462 INFO [main][org.springframework.integration.channel.DirectChannel] Channel 'receiveChannel' has 1 subscriber(s).
15:15:40.462 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] started org.springframework.integration.config.ConsumerEndpointFactoryBean#0
15:15:40.462 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
15:15:40.462 INFO [main][org.springframework.integration.channel.PublishSubscribeChannel] Channel 'errorChannel' has 1 subscriber(s).
15:15:40.462 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] started _org.springframework.integration.errorLogger
15:15:40.462 INFO [main][org.springframework.context.support.DefaultLifecycleProcessor] Starting beans in phase 0
15:15:40.463 INFO [main][org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway] started /receiveGateway
15:15:40.500 INFO [main][org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping] Mapped URL path [/receiveGateway] onto handler '/receiveGateway'
15:15:40.766 INFO [main][org.springframework.web.servlet.DispatcherServlet] FrameworkServlet 'Multipart': initialization completed in 1962 ms
2012-10-25 15:15:40.169::INFO: Started SelectChannelConnector@0.0.0.0:8080[INFO] Started Jetty Server
创建一个requestGateway,调用它的一个echo方法,然后得到结果,并输出,也非常简单。
下面我们看一下RequestGateway.java
这是一个接口,只有一个echo的方法声明,其他什么也没有了,那么调用这个方法的时候信息发哪了?
只能看看/http-outbound-config.xml配置了
配置了一个gateway,关联上RequestGateway,并关联一个通道requestChannel,将信息关联到一个outbound-gateway,将信息以POST形式发送到http://localhost:8080/http/receiveGateway地址,正好服务端就可以接受了。
右键run as -->java application,就可以运行了。
可以从输出信息中查看到结果。
15:17:07.013 INFO [main][org.springframework.context.support.ClassPathXmlApplicationContext] Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@25a268f2: startup date [Thu Oct 25 15:17:06 CST 2012]; root of context hierarchy
15:17:07.097 INFO [main][org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from class path resource [META-INF/spring/integration/http-outbound-config.xml]
15:17:07.700 INFO [main][org.springframework.integration.config.xml.DefaultConfiguringBeanFactoryPostProcessor] No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created.
15:17:07.700 INFO [main][org.springframework.integration.config.xml.DefaultConfiguringBeanFactoryPostProcessor] No bean named 'taskScheduler' has been explicitly defined. Therefore, a default ThreadPoolTaskScheduler will be created.
15:17:07.715 INFO [main][org.springframework.beans.factory.support.DefaultListableBeanFactory] Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@7fee6f88: defining beans [org.springframework.integration.internalDefaultConfiguringBeanFactoryPostProcessor,requestGateway,requestChannel,org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler#0,org.springframework.integration.config.ConsumerEndpointFactoryBean#0,nullChannel,errorChannel,_org.springframework.integration.errorLogger,taskScheduler,org.springframework.integration.config.IdGeneratorConfigurer#0];
root of factory hierarchy
15:17:07.934 INFO [main][org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler] Initializing ExecutorService 'taskScheduler'
15:17:07.988 INFO [main][org.springframework.integration.gateway.GatewayProxyFactoryBean$MethodInvocationGateway] started requestGateway
15:17:07.988 INFO [main][org.springframework.integration.gateway.GatewayProxyFactoryBean] started requestGateway
15:17:08.419 INFO [main][org.springframework.context.support.DefaultLifecycleProcessor] Starting beans in phase -2147483648
15:17:08.419 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] Adding {message-handler} as a subscriber to the 'requestChannel' channel
15:17:08.419 INFO [main][org.springframework.integration.channel.DirectChannel] Channel 'requestChannel' has 1 subscriber(s).
15:17:08.420 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] started org.springframework.integration.config.ConsumerEndpointFactoryBean#0
15:17:08.420 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
15:17:08.420 INFO [main][org.springframework.integration.channel.PublishSubscribeChannel] Channel 'errorChannel' has 1 subscriber(s).
15:17:08.420 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] started _org.springframework.integration.errorLogger
15:17:08.420 INFO [main][org.springframework.context.support.DefaultLifecycleProcessor] Starting beans in phase 0
15:17:08.799 INFO [main][org.springframework.integration.samples.http.HttpClientDemo] Replied with: Hello from the other side
http inbound gateway 就是用来通过HTTP获取信息的,而service-activator通常是处理信息的服务。
客户端组件关系:
outboundgateway则是用于向外发送数据,通过这个例子可以很好的理解这两个gateway 的作用。
下载地址:https://github.com/SpringSource/spring-integration-samples
打开basic文件夹,里面有一个http的例子
1.导入项目
我们可以在eclipse里进行调试,由于这些例子都是用maven构建的,最好先给eclipse安装maven插件,以及maven的wtp插件(用于WEB开发)安装方式:eclipse-->help-->eclipemarketplace 搜索maven
安装前两个就行了
之后导入http这个例子的代码,eclipse-->import-->existing maven projects,
选择http文件夹(包含pom.xml的文件夹都可以导入)即可导入此项目,maven会自动去下载所需的依赖包,目录结构如下图:
2.代码分析
服务器端的代码
首先,从目录可见,这是一个WEB项目,可以部署到WEB容器中,我们先看服务器端的代码分析一下web.xml文件,
web.xml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>multipart-http</display-name> <servlet> <servlet-name>Multipart</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/servlet-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Multipart</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>其中配置了一个servlet,名字叫Multipart,配置的类为DispatcherServlet,用过SPRING MVC的都比较熟悉这个配置,它就是SPRING表示层的控制器。
其contextConfigLocation配置的是/WEB-INF/servlet-config.xml
我们再看一下servlet-config.xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd http://www.springframework.org/schema/integration/file http://www.springframework.org/schema/integration/file/spring-integration-file.xsd http://www.springframework.org/schema/integration/http http://www.springframework.org/schema/integration/http/spring-integration-http.xsd" xmlns:int="http://www.springframework.org/schema/integration" xmlns:int-file="http://www.springframework.org/schema/integration/file" xmlns:int-http="http://www.springframework.org/schema/integration/http" xmlns:int-mail="http://www.springframework.org/schema/integration/mail"> <int-http:inbound-gateway request-channel="receiveChannel" name="/receiveGateway" supported-methods="POST,GET"/> <int:channel id="receiveChannel"/> <int:service-activator input-channel="receiveChannel" expression="payload + ' from the other side'"/> </beans>
配置了一个int-http:inbound-gateway,channel和一个service-activator,inbound-gateway用来接受请求,关联名称/receiveGateway,接受POST GET请求,并连接到一个通道,为receiveChannel,通道关联到一个service-activator,表达式为payload + from the other side,其中payload为从客户端接受的信息,添加一些信息之后返回去。
服务器端就是这么简单的内容,用spring的eclipse插件打开这个文件,可以看到图示:
我们可以将服务器端运行起来,选择pom右键-->run as-->maven build
在goal输入jetty:run,确定即可。
输出信息如下:
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] <<< maven-jetty-plugin:6.1.10:run (default-cli) @ http <<<
[WARNING] The artifact org.apache.commons:commons-io:jar:1.3.2 has been relocated to commons-io:commons-io:jar:1.3.2
[INFO]
[INFO] --- maven-jetty-plugin:6.1.10:run (default-cli) @ http ---
[INFO] Configuring Jetty for project: Samples (Basic) - HTTP Demo
[INFO] Webapp source directory = /media/g_windows/ubuntudata/code/SpringSource-spring-integration-samples-84aefe6/basic/http/src/main/webapp
[INFO] web.xml file = /media/g_windows/ubuntudata/code/SpringSource-spring-integration-samples-84aefe6/basic/http/src/main/webapp/WEB-INF/web.xml
[INFO] Classes = /media/g_windows/ubuntudata/code/SpringSource-spring-integration-samples-84aefe6/basic/http/target/classes
2012-10-25 15:15:37.729::INFO: Logging to STDERR via org.mortbay.log.StdErrLog
[INFO] Context path = /http
[INFO] Tmp directory = determined at runtime
[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml
[INFO] Web overrides = none
[INFO] Webapp directory = /media/g_windows/ubuntudata/code/SpringSource-spring-integration-samples-84aefe6/basic/http/src/main/webapp
[INFO] Starting jetty 6.1.10 ...
2012-10-25 15:15:37.823::INFO: jetty-6.1.10
2012-10-25 15:15:37.201::INFO: No Transaction manager found - if your webapp requires one, please configure one.
2012-10-25 15:15:38.179:/http:INFO: Initializing Spring FrameworkServlet 'Multipart'
15:15:38.803 INFO [main][org.springframework.web.servlet.DispatcherServlet] FrameworkServlet 'Multipart': initialization started
15:15:38.862 INFO [main][org.springframework.web.context.support.XmlWebApplicationContext] Refreshing WebApplicationContext for namespace 'Multipart-servlet': startup date [Thu Oct 25 15:15:38 CST 2012]; root of context hierarchy
15:15:38.927 INFO [main][org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from ServletContext resource [/WEB-INF/servlet-config.xml]
15:15:39.712 INFO [main][org.springframework.integration.config.xml.DefaultConfiguringBeanFactoryPostProcessor] No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created.
15:15:39.712 INFO [main][org.springframework.integration.config.xml.DefaultConfiguringBeanFactoryPostProcessor] No bean named 'taskScheduler' has been explicitly defined. Therefore, a default ThreadPoolTaskScheduler will be created.
15:15:39.734 INFO [main][org.springframework.beans.factory.support.DefaultListableBeanFactory] Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@66b4c2e4: defining beans [org.springframework.integration.internalDefaultConfiguringBeanFactoryPostProcessor,/receiveGateway,receiveChannel,org.springframework.integration.config.ServiceActivatorFactoryBean#0,org.springframework.integration.config.ConsumerEndpointFactoryBean#0,nullChannel,errorChannel,_org.springframework.integration.errorLogger,taskScheduler,org.springframework.integration.config.IdGeneratorConfigurer#0];
root of factory hierarchy
15:15:40.455 INFO [main][org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler] Initializing ExecutorService 'taskScheduler'
15:15:40.461 INFO [main][org.springframework.context.support.DefaultLifecycleProcessor] Starting beans in phase -2147483648
15:15:40.462 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] Adding {service-activator} as a subscriber to the 'receiveChannel' channel
15:15:40.462 INFO [main][org.springframework.integration.channel.DirectChannel] Channel 'receiveChannel' has 1 subscriber(s).
15:15:40.462 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] started org.springframework.integration.config.ConsumerEndpointFactoryBean#0
15:15:40.462 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
15:15:40.462 INFO [main][org.springframework.integration.channel.PublishSubscribeChannel] Channel 'errorChannel' has 1 subscriber(s).
15:15:40.462 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] started _org.springframework.integration.errorLogger
15:15:40.462 INFO [main][org.springframework.context.support.DefaultLifecycleProcessor] Starting beans in phase 0
15:15:40.463 INFO [main][org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway] started /receiveGateway
15:15:40.500 INFO [main][org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping] Mapped URL path [/receiveGateway] onto handler '/receiveGateway'
15:15:40.766 INFO [main][org.springframework.web.servlet.DispatcherServlet] FrameworkServlet 'Multipart': initialization completed in 1962 ms
2012-10-25 15:15:40.169::INFO: Started SelectChannelConnector@0.0.0.0:8080[INFO] Started Jetty Server
客户端代码
看HttpClientDemo.javapublic static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("/META-INF/spring/integration/http-outbound-config.xml"); RequestGateway requestGateway = context.getBean("requestGateway", RequestGateway.class); String reply = requestGateway.echo("Hello"); logger.info("Replied with: " + reply); }其中一个main函数,里面创建一个spring 的context,使用配置文件为META-INF/spring/integration/http-outbound-config.xml
创建一个requestGateway,调用它的一个echo方法,然后得到结果,并输出,也非常简单。
下面我们看一下RequestGateway.java
package org.springframework.integration.samples.http; /** * @author Oleg Zhurakousky * */ public interface RequestGateway { public String echo(String request); }
这是一个接口,只有一个echo的方法声明,其他什么也没有了,那么调用这个方法的时候信息发哪了?
只能看看/http-outbound-config.xml配置了
<int:gateway id="requestGateway" service-interface="org.springframework.integration.samples.http.RequestGateway" default-request-channel="requestChannel"/> <int:channel id="requestChannel"/> <int-http:outbound-gateway request-channel="requestChannel" url="http://localhost:8080/http/receiveGateway" http-method="POST" expected-response-type="java.lang.String"/>
配置了一个gateway,关联上RequestGateway,并关联一个通道requestChannel,将信息关联到一个outbound-gateway,将信息以POST形式发送到http://localhost:8080/http/receiveGateway地址,正好服务端就可以接受了。
右键run as -->java application,就可以运行了。
可以从输出信息中查看到结果。
15:17:07.013 INFO [main][org.springframework.context.support.ClassPathXmlApplicationContext] Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@25a268f2: startup date [Thu Oct 25 15:17:06 CST 2012]; root of context hierarchy
15:17:07.097 INFO [main][org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from class path resource [META-INF/spring/integration/http-outbound-config.xml]
15:17:07.700 INFO [main][org.springframework.integration.config.xml.DefaultConfiguringBeanFactoryPostProcessor] No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created.
15:17:07.700 INFO [main][org.springframework.integration.config.xml.DefaultConfiguringBeanFactoryPostProcessor] No bean named 'taskScheduler' has been explicitly defined. Therefore, a default ThreadPoolTaskScheduler will be created.
15:17:07.715 INFO [main][org.springframework.beans.factory.support.DefaultListableBeanFactory] Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@7fee6f88: defining beans [org.springframework.integration.internalDefaultConfiguringBeanFactoryPostProcessor,requestGateway,requestChannel,org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler#0,org.springframework.integration.config.ConsumerEndpointFactoryBean#0,nullChannel,errorChannel,_org.springframework.integration.errorLogger,taskScheduler,org.springframework.integration.config.IdGeneratorConfigurer#0];
root of factory hierarchy
15:17:07.934 INFO [main][org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler] Initializing ExecutorService 'taskScheduler'
15:17:07.988 INFO [main][org.springframework.integration.gateway.GatewayProxyFactoryBean$MethodInvocationGateway] started requestGateway
15:17:07.988 INFO [main][org.springframework.integration.gateway.GatewayProxyFactoryBean] started requestGateway
15:17:08.419 INFO [main][org.springframework.context.support.DefaultLifecycleProcessor] Starting beans in phase -2147483648
15:17:08.419 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] Adding {message-handler} as a subscriber to the 'requestChannel' channel
15:17:08.419 INFO [main][org.springframework.integration.channel.DirectChannel] Channel 'requestChannel' has 1 subscriber(s).
15:17:08.420 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] started org.springframework.integration.config.ConsumerEndpointFactoryBean#0
15:17:08.420 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
15:17:08.420 INFO [main][org.springframework.integration.channel.PublishSubscribeChannel] Channel 'errorChannel' has 1 subscriber(s).
15:17:08.420 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] started _org.springframework.integration.errorLogger
15:17:08.420 INFO [main][org.springframework.context.support.DefaultLifecycleProcessor] Starting beans in phase 0
15:17:08.799 INFO [main][org.springframework.integration.samples.http.HttpClientDemo] Replied with: Hello from the other side
总结
服务器端组件如下:http inbound gateway 就是用来通过HTTP获取信息的,而service-activator通常是处理信息的服务。
客户端组件关系:
outboundgateway则是用于向外发送数据,通过这个例子可以很好的理解这两个gateway 的作用。
相关文章推荐
- Spring Integration实例代码分析之basic--http
- [置顶] FastCGI 协议分析与C语言实现实例
- Java堆溢出OutOfMemoryError之代码实例和原因分析
- ASP.NET底层封装HttpModule实例---FormsAuthentication类的分析
- java 发送带Basic Auth认证的http post请求实例代码
- HttpClient Post 二进制/字节流/byte[]实例代码
- ASP.NET MVC 从IHttp到页面输出的实例代码
- PHP curl_setopt()函数实例代码与参数分析
- nginx代码分析-http模块-access
- 代码中函数、变量、常量 / bss段、data段、text段 /sct文件、.map文件的关系[实例分析arm代码(mdk)]
- 检查HTTP 的 Basic认证代码示例-JSP
- 代码分析将double类型的浮点数转换成二进制-实例
- Spring Boot 运行原理 - 实例分析(HttpEncodingAutoConfiguration)
- RTSP服务器实例live555源代码分析
- php和数据库结合的一个简单的web实例 代码分析 (php初学者)
- Qt例程代码分析之basicshapes-cpp
- HTTP基本认证(Basic Authentication)的JAVA实例代码
- GoAhead2.5源代码分析之3-用户管理实例(umui.c)
- [置顶] 代码覆盖工具Jacoco使用示例及源码分析