【问题标题】:Application scope PropertyPlaceHolder Spring in Mule应用范围 PropertyPlaceHolder Spring in Mule
【发布时间】:2013-06-11 23:13:40
【问题描述】:

我正在使用 Mule CE 3.3.0,但 PropertyPlaceHolder 的范围存在问题。假设我有两个 mule 应用程序(writeApp 和 readApp)。在 writeApp 应用程序中,我设置了一个 propertyPlaceholer bean,定义如下:

<spring:bean id="consignmentProperty" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <spring:property name="ignoreUnresolvablePlaceholders" value="true"/>
        <spring:property name="locations">
            <spring:list>
                <spring:value>classpath:connections.properties</spring:value>
                    <spring:value>.....</spring:value>
            </spring:list>
        </spring:property>
</spring:bean>

在 readApp 应用程序中,我尝试读取 writeApp 中定义的属性

<mule>
    <flow name="readContextVariableFlow1" doc:name="readContextVariableFlow1">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8085" path="read" doc:name="HTTP"/>
        <append-string-transformer message="${prop.conn}" doc:name="Append String"/>
        <object-to-string-transformer doc:name="Object to String"/>
    </flow>
</mule>

问题是现在我可以从 readApp 中读取 prop.conn 属性,尽管它是在 writeApp 中定义的。我可以为每个应用程序定义一个特定的文件属性。

提前感谢您的任何帮助

【问题讨论】:

  • 当您说“应用程序”时,您的真正意思是 Mule 应用程序(即部署在 Mule 独立设备上的 zip 文件),而不是流程,对吗?
  • 是的,我的意思是mule应用程序,即zip文件
  • 感谢您的精确。然后,哇,这令人惊讶,除非 Spring 在一个应用程序的系统属性中加载这些道具,并从另一个应用程序的系统道具中获取它们。
  • 直接使用PropertyPlaceholderConfigurer 类而不是&lt;context:property-placeholder /&gt; 元素的任何原因。

标签: spring mule placeholder


【解决方案1】:

您可以为属性命名以防止交叉共享,例如“readApp.prop.conn”和“writeApp.prop.conn”。

或者,尝试关闭系统属性:

<spring:beans>
    <context:property-placeholder location="classpath:connections.properties"
        ignore-unresolvable="true" system-properties-mode="NEVER" />
</spring:beans>

【讨论】:

  • 是的,我知道,但我会避免在两个不同的 mule 应用程序中显示一个文件而不是另一个文件
  • 好的,你知道是否有可能只为一个应用程序拥有一个配置文件并且它不被应用程序共享?
  • 我以为是这样,我不明白一个应用程序中加载的属性如何可用于另一个应用程序,除非它们也被加载并解析为系统属性。你试过我的第二个建议了吗?
  • 你的意思是使用 .* 符号吗?是的,这是可行的,但我的特权应该是让一个文件只对一个应用程序和您的解决方案可见,虽然它是一个聪明的解决方案,但它并不能解决我遇到的问题
  • 粘贴您的代码时,出现此错误:src-resolve: Cannot resolve the name 'spring-context:property-placeholder' to a(n) 'element declaration' 组件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多