1

更新

我使用此处描述的方法从“类路径:”和“类路径 *:”打印出生成的 java 类路径并得到以下结果,但我仍然从 PPC 中为我的 jms.properties 文件中定义的属性获得 BeanDefinitionStoreException。是什么赋予了!?

[main] INFO - .......Loading........
[main] INFO - printing normal classpath
[main] INFO - class path resource [conf/dev/jgroups.properties]
[main] INFO - printing wildcard classpath
[main] INFO - URL [jar:file:/filepath/StandaloneProject.jar!/conf/dev/jgroups.properties]
[main] INFO - URL [jar:file:/filepath/DependencyProject.jar!/conf/dev/jdbc.properties]
[main] INFO - URL [jar:file:/filepath/DependencyProject.jar!/conf/dev/jms.properties]

它在我的 Windows 机器上运行良好。它在我的开发 Linux 机器上失败了???任何帮助表示赞赏,如果您没有实际答案但可以指导我如何调试正在发生的事情,那也有帮助。

更新#2

我也尝试添加

<property name="ignoreUnresolvablePlaceholders" value="true" />

到我的 EncryptablePropertyPlaceholderConfigurer 的属性列表,但我仍然收到 BeanDefinitionStoreException :(

背景

我正在使用一个独立的 java maven 项目,其中包括另一个项目作为依赖项。包含的项目是一组核心类,并具有每个环境的属性文件。

这些文件在打包到依赖项 jar 之前存储在 main/resources/conf/[env] 中(我们将其称为 DependencyProject)。这个项目包括一个 Spring 2.5.6 PropertyPlaceholderConfigurer 来自动将属性加载到 bean 中。

现在,我要做的是使用 jGroups 将我的应用程序集群到多个服务器上。这需要在 DependencyProject 的属性之外添加特定于 env 的属性文件到 StandaloneProject,因此 jGroups 知道它需要在每个环境中与哪个地址和端口进行通信。这些属性不属于依赖项。我想我会将它们放在具有相同文件夹名称的 StandaloneProject 下的配置路径中,以便美观且一致。每个人都喜欢一致性,对吧?

所以,到目前为止,我得到的是如下所示的文件夹:

DependencyProject/src/main/resources/conf/[env]
(这些文件夹包含 jms.properties、jdbc.properties 等文件。)

StandaloneProject/src/main/resources/conf/[env]
(这些文件夹包含一个 jgroups.properties 文件)

DependencyProject 在 PropertyPlaceholderConfigurer 中声明以下位置:

<value>classpath*:conf/${implementation.env}/*.properties</value>

我不打算用 Spring 加载 jGroups 属性文件。我在我的应用程序执行中采用老式的方式。

问题

conf/[env] 的目录路径重复这一简单事实导致某处发生冲突,并且没有加载来自 DependencyProject 的属性。我尝试添加“classpath *:”而不仅仅是“classpath:”,但它没有效果。我也尝试过使用 IgnoreUnresolvablePlaceholders,但我不确定这是正确的解决方案。

我知道这与文件夹结构有关,因为我可以插入一个文件夹,这样两条路径就不会相互镜像,并且一切正常。

DependencyProject/src/main/resources/conf/[env] StandaloneProject/src/main/resources/conf/folder/[env]

有任何想法吗?

4

1 回答 1

0

我最终只是在我的 conf 文件夹下放了一个 jgroups 文件夹。我希望将所有内容都放在 /conf 目录中,而不是 /conf 中的一些属性和 /conf/jgroups 中的一些属性,但这有效。

于 2013-04-10T17:35:14.530 回答