java - 入站属性骡子创建

标签 java mule

为什么此代码允许某人在消息处理器(如 Java 组件)中创建入站消息属性

message.setProperty("myProperty", PropertyScope.INBOUND" );

但这并不

<set-property value="100" propertyName="myProperty" />

根据文档,只有消息源应该能够创建入站属性,那么为什么 Java 组件能够设置入站消息属性?

最佳答案

您是对的 - 这确实违反了入站属性的记录行为。此外,证明您是否尝试使用表达式组件设置入站属性:

<expression-component>
  message.inboundProperties['foo'] = 'bar'
</exporession-component>

运行时会抛出以下错误:

Exception stack is:
1. The inbound message property "foo" cannot be added, updated or removed 
   because inbound message properties are immutable (java.lang.UnsupportedOperationException)
  org.mule.el.context.MessagePropertyMapContext:47 (null)

但是 setProperty 的 Javadoc说:

Set a property on the message. End-users should prefer more scope-specific methods for readability. This one is more intended for programmatic scope manipulation and Mule internal use.

所以要点是 setProperty 是供 Mule 内部使用的,你应该使用 setInitationProperty、setOutboundProperty 或 setSessionProperty。这很有趣,因为我确信我以前使用过 setProperty。

关于java - 入站属性骡子创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21584859/

相关文章:

esb - Mule ESB 可以部署在 Application Server 中

mule - 在 Mule 中创建 mbean - 由 Mule 管理控制台监控

java - Scala、SQL Server - 如何使用 Scala 将当前时间戳作为日期时间插入 SQL Server 中?

java - GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN 无法正常运行

java - 在 Swing 应用程序中保留键盘布局?

java - Hibernate 3 与 mysql

java - 将对象数组转换为我想要的类的数组

mysql - 如何使用 mule 调用 MySQL 存储过程 3.4.2。我是 Mule 新手,项目团队正在使用 3.4.2 版本

java - 骡子 - NoClassDefFoundError : Could not initialize class java. time.zone.ZoneRulesProvider

ftp - Mule ESB Community Edition 3.4 - 防止删除原始文件