Mule是一个基于Java的轻量级企业服务总线(ESB)和集成平台,允许开发人员快速,轻松地将应用程序连接在一起,使他们能够交换数据。无论应用程序使用何种不同的技术,Mule都可以轻松集成现有系统,包括JMS,Web服务,JDBC,HTTP等。
我的是一个 Mule 4 应用程序(4.4),使用内存数据库中的 H2 来执行 munit 测试。 所以之前使用 jdbc url 为: 我的是一个 Mule 4 应用程序(4.4),使用内存数据库中的 H2 来执行 munit 测试。 所以之前使用 jdbc url 作为: <property name="url" value="jdbc:h2:mem:empdb;DB_CLOSE_ON_EXIT=FALSE;MODE=ORACLE; INIT=RUNSCRIPT FROM 'classpath:sql/h2init.sql';TRACE_LEVEL_FILE=4;TRACE_LEVEL_SYSTEM_OUT=3;" /> 然而,这个问题是在同一个 Munit 套件中有多个 Munit 的情况下,并且每次测试后都会抱怨 due to h2init.sql being executed twice against the same database. It fails the second time as the tables already exist. 上面的引用实际上是从here复制的,但它准确地解释了遇到的问题。 因此使用了@peterB建议的解决方案,即使用 "in memory private" connection mode,如下所示: <property name="url" value="jdbc:h2:mem:;DB_CLOSE_ON_EXIT=FALSE;MODE=ORACLE; INIT=RUNSCRIPT FROM 'classpath:sql/h2init.sql';TRACE_LEVEL_FILE=4;TRACE_LEVEL_SYSTEM_OUT=3;" /> 请注意,empdb 已从 jdbc url 中删除,现在一切正常 然而,这现在导致了一个不同的问题 - 早些时候我可以通过以下方式访问 H2 控制台:http://localhost:8082/ 并登录 现在,当我尝试时,它失败了: 数据库 URL“jdbc:h2:mem”中不允许使用隐式相对于当前工作目录的文件路径。请改用绝对路径、~/name、./name 或 baseDir 设置。 [90011-224] 90011/90011(帮助) 我尝试的 jdbc url 是:jdbc:h2:mem: 在运行 munits 时的控制台日志中可以看到我的 munit 与 db 连接良好: INFO 2024-03-03 11:39:00,665 [[MuleRuntime].uber.03: h2database: database opening mem: (build 224) INFO 2024-03-03 11:39:00,715 [[MuleRuntime].uber.03: h2database: database opened mem: 正在阅读 H2 文档:https://www.h2database.com/html/features.html 内存数据库对于某些用例(例如:快速 原型设计、测试、高性能操作、只读 数据库),可能不需要保存数据或保存更改 到数据。该数据库支持内存模式,其中数据 没有坚持下去。 在某些情况下,只有一个与内存数据库的连接 必需的。这意味着要打开的数据库是私有的。在这个 例如,数据库 URL 为 jdbc:h2:mem:在其中打开两个连接 同一个虚拟机意味着打开两个不同的(私有的) 数据库。 有时与同一个内存数据库的多个连接 必需的。在这种情况下,数据库 URL 必须包含名称。例子: jdbc:h2:内存:db1。仅使用此 URL 访问同一数据库才有效 在相同的虚拟机和类加载器环境中。 从另一个进程或另一个进程访问内存数据库 计算机上,您需要在与该计算机相同的进程中启动一个 TCP 服务器 内存数据库已创建。然后其他进程需要 通过 TCP/IP 或 TLS 访问数据库,使用数据库 URL,例如: jdbc:h2:tcp://localhost/mem:db1. 默认情况下,关闭最后一个数据库连接将关闭 数据库。对于内存数据库来说,这意味着内容丢失。 要保持数据库打开,请将 ;DB_CLOSE_DELAY=-1 添加到数据库 URL。 使内存数据库的内容与虚拟数据库的保存时间一样长 机器处于活动状态,使用 jdbc:h2:mem:test;DB_CLOSE_DELAY=-1。这可能 创建内存泄漏,当需要删除数据库时,使用 关机命令。 因此,唯一的问题是当我处于调试模式下的 Munit 中间时,想在浏览器中打开控制台并查看表记录的状态 - 这怎么可能? 从上面的文档中我不确定h2 In memory database private mode是否可能? 未命名的私有内存数据库不在不同连接之间共享,每个连接都有自己独立的数据库。当您只需要一个连接时,您可以使用此类数据库,但无法使用 H2 Console 或任何其他工具来检查它,因为具有相同 URL 的 H2 Console(或其他工具)将获得一个自己的(空)私人数据库。
Dataweave 转换 - 满足条件时如何减少有效负载数组
我有这个 JSON 有效负载: [ { “身份证”:“6812”, “状态”:“可用”, “到期日期”:“2024-04-30T13:00:00.000-07:0...
Mule 4 尝试在 Munit 中初始化基于 Spring 的 H2 数据源 - 出现 ClassNotFoundException
我正在尝试在Mule 4中编写一个Munit,其中在Munit中我想使用基于Spring的H2数据源 所以我在 Munit 类中定义了以下内容: 我正在尝试在 Mule 4 中编写一个 Munit,其中我想在 Munit 中使用基于 Spring 的 H2 数据源 所以我在我的 Munit 类中定义了以下内容: <munit:config name="munit-test-config.xml" /> <spring:config name="Spring_Config" doc:name="Spring Config" files="beans.xml" > </spring:config> <db:config name="Database_Config" doc:name="Database Config"> <db:data-source-connection dataSourceRef="dataSource" /> </db:config> 在beans.xml: <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="org.h2.Driver" /> <property name="url" value="jdbc:h2:mem:test;DB_CLOSE_DELAY=-1" /> <property name="username" value="sa" /> <property name="password" value="" /> </bean> 在我的 pom 中包含了所需的依赖项并作为共享库: <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> <scope>test</scope> </dependency> <sharedLibrary> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> </sharedLibrary> 但是,如果我run通过anypoint studio运行应用程序,它运行良好,但是如果我尝试运行Munit,它会失败: 上下文初始化期间遇到异常 - 取消 刷新尝试: org.springframework.beans.factory.CannotLoadBeanClassException:不能 查找 bean 的类 [org.apache.commons.dbcp.BasicDataSource] 类路径资源 [beans.xml] 中定义的名称“dataSource”;嵌套的 例外是 org.mule.runtime.module.artifact.api.classloader.exception.CompositeClassNotFoundException: 无法加载类“org.apache.commons.dbcp.BasicDataSource”:[ org.apache.commons.dbcp.BasicDataSource,无法加载类 'org.apache.commons.dbcp.BasicDataSource': [ 我错过了什么? 您的 pom 声明了 c3p0 数据库连接池的依赖项,但您的 Spring bean 使用 Apache DBCP 数据库连接池创建一个池。在这两个地方都使用 DBCP 或 c3p0。
Dataweave 有效负载转换 - NetSuite SOAP
我有 JSON 有效负载,需要对其进行转换并调用 NetSuite。 有效负载: [ { “Netsuite 销售订单 ID”:“15922713”, “项目编号”:“
如何提取键值对并将其存储在Object Store V2 Mule 2.0中
我需要迭代以下输入负载并将所有 EMPNAME 作为键和 EMPID 作为值存储在对象存储中。 { “应用程序”:“销售人员”, “有效载荷...
我想使用 Assert Equals 组件来查找负载中是否存在字符串。我举个例子: Txt|名称=ST CLAUD|国家/地区=西班牙|Txtld=45 我想搜索有效负载是否包含字符串“
从 Mule flowVars 中的 JSON 数组获取字段值
我正在使用 Anypoint 6.1 和 Mule 3.8.1,并且有一个 flowVar,它包含一个如下所示的 JSON 对象: { “商店”:[ [ “商店1” ], [ “商店2” ] ] } 当我循环时
我有一个名为modifiedDate的查询参数,在RAML文件中定义为仅限日期,但是当我查看Mule调试器时,我看到modifiedDate 2001-10-10是一个字符串数据类型。 随机存取存储器 ... 查询参数...
Mule ESB 无法触发 Choice 'when' 条件
我无法让 Mule ESB 触发 Choice 'when' 条件 我将 Hello World 流转换为接受 JSON 对象(将 JSON 插入到对象节点)并执行 Choice 节点。 但我不能...
访问 MuleSoft Anypoint Exchange 属性
我正在使用 Amazon Secrets Manager Properties Provider Connector 尝试从我的 Anypoint 应用程序连接到 AWS Secrets Manager。该文档使我看起来可以配置
我正在返回一条 JSON 消息,它显示 新行字符。我怎样才能阻止这种情况发生并显示返回结果,以便文本看起来更具可读性,而不是仅显示 li 上的所有内容...
我是 Mule 新手,正在尝试学习 Mule 3(我们生产中现有的一些 API 正在使用 Mule 3)。 生产应用程序有一个使用“使用持久连接”和“连接...”的 HTTP 侦听器
无法在 MuleSoft Munit 中模拟“插入日志”模块
我试图模拟下面的流程,但在运行测试用例时出现异常。 错误:[module-alliant-logger.xml:52]:无法使用错误类型“ALLIANT-LOGGER:PARSING”:命名空间已存在。
我有这个有效负载和数据编织代码,但在下面的数据编织中小于正在工作但不等于?有人可以帮忙吗..如何处理平等? 有效负载: [{ “Id”:&qu...
Maven 在 Azure Pipelines 中使用与本地不同的存储库
我有一个项目在 Azure Pipelines 中 mvn package 失败,即使同一分支在本地成功构建也是如此。问题是缺少依赖项。 Maven 从本地下载依赖项 http...
我有这个有效负载和数据编织代码,但在下面的数据编织中小于正在工作但不等于?有人可以帮忙吗..如何处理平等? 有效负载: [{ “Id”:&qu...
我正在使用 Anypoint Studio 6.1 和 Mule 3.8.1,我希望在 Dataweave 中将以下日期 2017-03-02T17:30:31.377Z 转换为以下格式 Thurs, 1 Mar 2017 17:30:31 GMT 。 数据...
来自 Mulesoft API 的 Azure SQL 调用间歇性延迟长达 15 分钟以上
我们在 Mulesoft 4.4 中创建了多个集成,连接到 Azure SQL Server DB 以进行正在进行的项目。我们在这些事件的“开始”和“结束”事件之间面临间歇性延迟问题...
带有 Anypoint MQ 的 Mule 4 - 当重新投递尝试用尽时,消息是否会自动转到 DLQ?
将 Anypoint MQ 与 Mule Runtime 4.4 结合使用 有一个订阅者,它将使用普通队列中的消息。 该队列配置了 DLQ。 最大重新投递次数 = 2 确认模式 = 自动 他...
我们在 Mulesoft 中面临 MySQL 数据库连接问题,Mule 有两种类型的数据库事务。一个是到 mule 的服务器(自身)数据库,另一个是到远程服务器