如何在jboss 4.2中将外部属性文件添加到classpath

时间:2015-03-24 11:49:49

标签: java jboss

我想在启动Jboss 4.2时读取外部属性文件。我想将它添加到类路径以从WAR文件中读取它。我已经看到了使用模块的Jboss 6的不同解决方案,但我还没有看到任何与JBoss 4.2相关的内容。

我在'jboss-service.xml'中包含了以下代码:

    <!-- Bean for reading properties -->
    <mbean code="org.jboss.varia.property.SystemPropertiesService"      
     name="jboss.util:type=Service,name=SystemProperties">
     <!-- Load properties from each of the given comma separated URLs -->
     <attribute name="URLList">
            ./conf/path.tmview.properties
     </attribute>
    </mbean>

在这个文件中我定义了属性:

    property-placeholder filepath=/var/tmview_props/tmview/tmview.properties

此属性用于以下bean定义

   <bean id="tmviewConfigurerLocation"   class="org.springframework.core.io.FileSystemResource">
      <constructor-arg value="${property-placeholder-filepath}" />
   </bean>

在applicationContext.xml中。当我启动jboss时,会读取属性文件

    15:45:29,939 INFO  [SystemPropertiesService] Loaded system properties   
    from: file:/D:/devel/projects/tmview/deployment/jboss-
    ...ver/tmview/conf/path.tmview.properties

因此,该属性被读取,但我一直获得以下异常

    2015-03-24 15:45:39,219 ERROR    
    [org.springframework.web.context.ContextLoader] Context 
    initialization failed
    org.springframework.beans.factory.BeanInitializationException: Could   
    not load properties; nested exception is 
    java.io.FileNotFoundException: ${property-placeholder-filepath} (The 
    system cannot find the file specified)
    at   
    org.springframework.beans.factory.config.PropertyResourceConfigurer.
    postProcessBeanFactory(PropertyResourceConfigurer.java:78)

有没有特殊的方法来读取spring bean中的属性?

2 个答案:

答案 0 :(得分:0)

在jboss 4中,您可以删除<jboss_home>/server/<instance>/conf目录中的属性文件,并且可以从类路径中获取它们。

另一种可能性是将自定义目录添加到类路径中,为此,请参阅Adding second conf folder to JBoss 5.1.0

答案 1 :(得分:0)

好的。最后,我解决了这个问题。似乎问题在于从application-context.xml读取。

<bean id="propertyConfigurer"   
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
            <value>file:${tmview.conf.variables}</value>    
    </property>
</bean>

我必须添加一个属性占位符读者。关于jboss,你可以从conf / jboss-service.xml或deploy / properties-receive.xml中读取参数文件,但是从第二个读取它似乎更合适。