在 tomcat 或 jetty 中部署 mule 应用程序时,如何在 configuration.xml 文件中将 http 端点更改为 servlet 端点?

Posted

技术标签:

【中文标题】在 tomcat 或 jetty 中部署 mule 应用程序时,如何在 configuration.xml 文件中将 http 端点更改为 servlet 端点?【英文标题】:While deploying mule application in tomcat or jetty , How to change http endpoints to servlet endpoints in configuration.xml file? 【发布时间】:2021-09-19 16:48:42 【问题描述】:

我已经尝试在 tomcat 和 jetty 中部署基本的 mule 应用程序(使用 http 侦听器连接器)并且它有效。在这里我将 http 的端点更改为 ...

<servlet:inbound-endpoint path="sample"/>
<set-payload value="Hello mule!"/>

但是现在我正在尝试部署 mule 的其他应用程序,它使用像 salesforce 这样的内置连接器,我现在很困惑如何更改端点。

例如,这就是我的 config.xml 文件的外观。

我正在使用 mule 4.3。请指导/帮助我。提前致谢。

【问题讨论】:

您是如何首先将 Mule 4 应用程序部署到 servlet 容器中的?它是否响应了 HTTP 请求? 我点击了这个链接docs.mulesoft.com/mule-runtime/3.9/…并添加了web.xml文件,然后使用maven命令“maven package”将它打包成一个war文件,然后将它部署到tomcat中。 我很惊讶如果这能奏效。这些说明仅适用于 Mule 3。 Mule 4 没有正式支持嵌入式部署,并且在设计和库方面存在差异。它甚至没有端点,只有完整的连接器。 那么,我们无法在应用服务器中部署 mule 4 应用程序。如果它在 mule 3 中支持,我必须如何更改这些端点? 目标到底是什么? “如何更改端点”不是很清楚。 【参考方案1】:

Mule 流由message source 触发。即接收请求或消息并启动流程执行的“连接器”。在像 Tomcat 这样的 servlet 容器中部署 Mule 应用程序时,您通常打算从容器接收 HTTP 请求,而不是使用 Mule 自己的 HTTP 连接器。这就是使用servlet endpoint 将请求从容器映射到流的原因。

使用嵌入式您会失去管理选项和一些功能。内置的图书馆管理都是手动的,所以容易出错。如果您没有充分的理由部署嵌入式,我强烈建议您单独使用 Mule。对于新项目,您应该真正使用 Mule 4.3,它是 Mule 的当前和现代版本。所有 Mule 3.x 版本都超出了标准支持期,在 EOL 之前应该不会有新的改进。

一些连接器和端点是 Mule 3.x 中内置的(如 HTTP 或 SFTP 连接器),有些需要添加到项目中,如 Salesforce 或 SAP 连接器。如果您使用的是 Maven 项目,则需要添加连接器依赖项。

请注意,Salesforce 连接器要求您使用 Mule 的企业版,正如我所提到的,Mule 3.x 目前的支持有限。

【讨论】:

以上是关于在 tomcat 或 jetty 中部署 mule 应用程序时,如何在 configuration.xml 文件中将 http 端点更改为 servlet 端点?的主要内容,如果未能解决你的问题,请参考以下文章

用InteliJ IDEA时,服务器tomcat或Jetty之前部署的项目怎么去掉,现在每次启动都要加载挺多,有朋友知道吗~

02 Maven 笔记:Eclipse下maven项目在Tomcat7和Jetty9中部署调试

maven+jetty项目在tomcat部署

jetty;tomcat;热部署

grails 2.0 - 在 Jetty 中运行,在 Tomcat 中运行

Day690.Tomcat如何实现热部署和热加载 -深入拆解 Tomcat & Jetty