【问题标题】:Is there a way to pass the file location by jndi in a <util:properties /> tag?有没有办法通过 jndi 在 <util:properties /> 标记中传递文件位置?
【发布时间】:2012-05-23 19:51:36
【问题描述】:

我在 spring-config.xml 中声明了以下属性

<util:properties id="ldap" location="classpath:com/company/project/resources/some_configuration.properties"/>

然后我在服务实现中使用 spring@Value 注释将属性中包含的值注入到一些成员变量中(这种方法是迄今为止我在服务实现中使用的最干净/最优雅的方法,如果可能的话我不想改变它)。

这种布局的问题是我必须修改属性文件并为每个部署环境(质量、生产等)重新生成应用程序战争,并且服务器管理员希望通过 JNDI 配置 some_configuration.properties 路径(应用程序服务器是 JBoss)

如何通过&lt;util:properties /&gt;标签中的jndi传递文件位置?

任何帮助和建议将不胜感激

编辑: 如果有人提出一个解决方案,我可以做类似的事情,那就太好了:

&lt;util:properties id="ldap" location="jndi:url/some_configuration.properties"/&gt;

或类似

【问题讨论】:

  • 如果您使用的是 Maven2,您可以使用 prepare-resources Maven 的阶段上的 maven-antrun-plugin 按 Maven Profile(dev1、dev2、test、preprod、prod)过滤您的 some_configuration.properties。我以前做过。
  • 谢谢,但我没有在项目中使用 Maven2
  • 您使用哪些开发工具?阿帕奇蚂蚁?
  • 来自 WTP 的 Eclipse 动态 Web 项目
  • 在下面查看我的答案:stackoverflow.com/a/10727450/439427

标签: java spring jndi


【解决方案1】:

旧帖子,但这可能对其他人有用:

<jee:jndi-lookup id="ldapProps" jndi-name="your/jndi" resource-ref="true"/>
<util:properties id="ldap" location="file://#{ldapProps}/some_configuration.properties" />

【讨论】:

  • 谢谢,这就是我要找的!我们正在诉诸其他方法来实现类似的目标
  • 同样 - 今天我对我们的解决方法感到非常沮丧,以至于有足够的动力让 JNDI 工作:)
【解决方案2】:

我正在寻找类似的东西,这个答案将帮助您使用 PropertyPlaceholderConfigurer:https://stackoverflow.com/a/3486315/439427

HTH


在您的情况下,您需要在 bean 中配置 PropertyPlaceholderConfigurer,然后您只需要进行以下更改:

<util:properties id="ldap"
  location="classpath:x/y/z/resources/${environment}.properties"/>

${environment} 将由如下环境变量设置:-Denvironment=dev

【讨论】:

  • 谢谢,我正在检查它,但我仍然想知道 jndi 是否有办法做同样的事情
  • 我喜欢这种方法,但是如果服务器配置发生变化(端口、IP、域等),我必须编辑属性文件并重新生成战争,这是管理团队不想要的到,他们想编辑一个外部文件,这样他们就不需要开发人员的帮助来完成任务(如果他们可以通过 jndi 来完成,那将是一个很大的优势,因为他们已经有一个支持 jndi 的服务器)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 2018-05-07
  • 1970-01-01
  • 2013-11-17
  • 2018-05-13
相关资源
最近更新 更多