mule源代码
/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.transport.servlet; import org.mule.DefaultMuleMessage; import org.mule.api.MuleContext; import org.mule.api.MuleMessage; import org.mule.transport.AbstractMuleMessageFactory; import org.mule.transport.http.HttpConstants; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.collections.EnumerationUtils; public class ServletMuleMessageFactory extends AbstractMuleMessageFactory { …… protected Object extractPayloadFromPostRequest(HttpServletRequest request) throws Exception { /* * Servlet Spec v2.5: * * SRV.3.1.1 * When Parameters Are Available * * The following are the conditions that must be met before post form data will * be populated to the parameter set: * * 1. The request is an HTTP or HTTPS request. * 2. The HTTP method is POST. * 3. The content type is application/x-www-form-urlencoded. * 4. The servlet has made an initial call of any of the getParameter family of meth- * ods on the request object. * * If the conditions are not met and the post form data is not included in the * parameter set, the post data must still be available to the servlet via the request * object's input stream. If the conditions are met, post form data will no longer be * available for reading directly from the request object's input stream. * * ----------------------------------------------------------------------------------- * * In plain english:if you call getInputStream on a POSTed request before you call one of * the getParameter* methods, you'll lose the parameters. So we touch the parameters first * and only then we return the input stream that will be the payload of the message. */ request.getParameterNames(); return request.getInputStream(); } …… }
“request.getParameterNames();”这一句代码已经对InpuStream进行了读取,当执行“return request.getInputStream();”时,已经无法从InpuStream中获取到request body了,所以要把 “request.getParameterNames();”这一句代码删除。
重写该factory,然后让Servlet组件调用connector,该connector使用新的factory,如下:
<servlet:connector name="Servlet" doc:name="Servlet"> <service-overrides messageFactory="com.rakuten.api.coupon.factory.ServletMuleMessageFactory"/> </servlet:connector>
Ref:
SRV.3.1.1
相关推荐
mule esb中使用ajax组件所需要依赖jar 包。
Logger的Message栏中输入"Current payload is #[message.payload]",以便记录原始消息负载。Set Payload Transformer的Value栏则输入"#['Hello, ' + message.payload + '. Today is '+ server.dateTime.format('dd/...
例如,用户可以运行 Flight Reservation 例子,通过拷贝示例项目到 $MULE_HOME/apps 目录下,并启动 Mule。 启动 Mule Studio ---------------- 如果用户已经安装了 Mule ESB Studio,可以启动 Mule Studio 并创建...
- **服务**: 在Mule中,服务是执行特定业务逻辑的可重用组件,可以通过HTTP、JMS、FTP等协议暴露或消费。 - **传输**: 传输是Mule用来与外部系统交互的接口,如HTTP、JDBC、FTP等。 - **数据流**: 数据流定义了数据...
在描述中提到,只需将AnyPoint Studio开发的项目放到`APPS`目录下,Mule服务器会自动识别并加载这些应用程序。 在实际应用中,用户可以通过以下步骤部署Mule应用程序: 1. 使用AnyPoint Studio开发并测试应用程序。...
介绍了如何将现有项目导入到Mule Studio,以及如何将Mule项目导出到MuleiON云平台或导出为发布文件。 13. Mule Studio 示例 这部分通过具体例子介绍了如何利用Mule Studio创建项目,包括基于模板创建项目和理解预建...
- 在项目的`src`目录下创建`mule-config.xml`,将Mule Studio中开发的XML配置内容粘贴到这里。 - 你可能还需要把与这个配置相关的Java类复制到`classes`目录下,以便在Tomcat环境中能够找到这些类。 4. **复制...
本部分将详细介绍如何在 Mule Studio 中创建一个新的项目,并构建一个简单的 Mule 流。 ##### 1. 创建新项目 1. **打开 Mule Studio**,点击 `File > New > Mule Project`。 2. **填写项目信息**: - 项目名称:`...
综上所述,Mule ESB的源码包含了丰富的组件和配置,从日志记录到企业级服务,再到安全性和网络代理,涵盖了构建一个强大集成平台所需的各种要素。理解并熟练掌握这些配置文件的用法,对于开发和维护高效、可靠的Mule...
- **UMO (Universal Message Objects)**:这是Mule 2.0及以前版本中的概念,现已由Component Composition取代。UMO用于实现整合逻辑,可以是POJO或JavaBean等形式。 - **组件Composition**:用于组织和编排业务逻辑...
在环境变量中新建一个名为MULE_HOME的变量,值为Mule的路径,然后将其添加到Path路径中。至此,Mule的安装配置完成。 二、Mule服务启动 在启动Mule服务之前,需要先配置环境变量。在命令行中输入mule命令,出现...
1. **安装与配置**:教程将引导你完成Mule ESB 3.0的安装,以及如何在Mule Studio中创建新项目。 2. **创建第一个Mule应用**:从简单的HTTP监听器和响应者开始,了解如何定义流和组件。 3. **连接器使用**:学习...
Mule的核心组件是UMO(Universal Message Objects,从Mule2.0开始UMO这一概念已经被组件Componse所代替),UMO实现整合逻辑。UMO可以是POJO,JavaBean等等。它支持30多种传输协议(file,FTP,UDP,TCP,email,HTTP,SOAP,JMS...
5. **部署流程**:将开发的Mule应用解压并放入“apps”目录后,MULE ESB会在启动时自动检测并加载这些应用。通过管理控制台或者命令行工具,可以对应用进行启动、停止、重启等操作。 6. **企业特性**:MULE ESB企业...
在Mule流程中,可以使用`<dw:transform-message>`元素将输入数据转换为JSON: ```xml <mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw"> ...
2. **MULE配置与部署**:用户指南将详细介绍如何配置MULE实例,包括设置环境变量、安装和启动MULE服务器,以及部署MULE应用到不同的运行时环境,如MULE Standalone或CloudHub。 3. **连接器(Connectors)**:MULE ...
"Mule实现路由分发"这一主题涉及到Mule如何处理消息的传递和定向,这在分布式系统和微服务架构中是至关重要的。 路由分发是Mule的核心功能之一,它确保消息被正确地发送到目标系统或服务。通过Java代码实现路由分发...