2014-04-07 45 views
0

我希望Spring首先检查JBoss EAP 6.2(它使用JBoss AS 7.2)中的系统属性,然后检查jar中的属性。Spring 3.2 PropertySourcesPlaceholderConfigurer with JBoss EAP 6.2

我试图

<context:property-placeholder location="classpath:xxx.properties" /> 

但这使用性质的罐子不是从JBoss的系统属性。 我也试过

<context:property-placeholder location="classpath:xxx.properties" system-properties-mode="OVERRIDE" /> 

其中需要使用旧PropertyPlaceholderConfigurer,但是这也依旧采用了性能罐子里。我也尝试设置3.0(而不是3.2)spring xsd,但无济于事。

那么,我该如何让Spring首先检查JBoss中的属性,然后在jar中?

编辑:我试图用其他选项(ENVIRONMENT,NEVER和FALLBACK)替换OVERRIDE,但我总是以本地属性中定义的值结束。

+0

你真的确定'系统properties'包含所需'key'? –

+0

是的,因为当我从本地属性中删除一个键时,我看到了在系统属性中定义的值。 – MystyxMac

+2

好吧,你可能有''的重复配置,并且在那个之后有'OVERRIDE'。 –

回答

1

经过Artem Bilan的评论后,我再次搜索(只是为了确保没有重复),并找到一个加载了相同属性的类,但在Java中(Properties.load())。这导致覆盖我试图通过Spring加载的system properties

1

公开属性文件,应用程序,我们做了以下内容:

  • 创建名为com/ourcompany/configuration/main目录结构调查一个JBoss模块,并把它与所有其他JBoss模块一起(在modules目录) 。

  • 在该目录中创建了一个module.xml。

  • 将所有* .properties文件放在该目录中。

  • 在standalone.xml(JBoss配置文件)中创建以下配置目录,使配置目录对所有应用程序可见,并避免为每个应用程序配置jboss-deployment-structure.xml文件。

然后所有属性都在类路径上,如预期的那样。

module.xml:

<module xmlns="urn:jboss:module:1.1" name="com.ourcompany.configuration"> 
    <resources> 
     <resource-root path="."/> 
    </resources> 
</module> 

standalone.xml:

<subsystem xmlns="urn:jboss:domain:ee:1.1"> 
    <global-modules> 
     <module name="com.ourcompany.configuration" slot="main"/> 
    </global-modules> 
</subsystem> 
+0

解决所有系统属性应该位于standalone.xml中的问题。 +1 – MystyxMac

相关问题