春天的资源

时间:2011-11-25 10:13:48

标签: spring resources web javabeans

问题:我想为“org.springframework.web.context.ContextLoaderListener”提供以下bean定义(在aaplicationContext.xml中指定)可选。如果我没有正确提供“emsPropLocation”上下文参数,tomcat web容器无法正确初始化,这是显而易见的原因。有没有办法让它可选?

appicationContext.xml:

  <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="ignoreResourceNotFound" value="false"/>
    <property name="location" value="file:/#{contextParameters.emsPropLocation}" />
  </bean>

  <!-- TIBCO Connection Factory Bean -->
  <bean id="tibcoConnectionFactory" class="com.tibco.tibjms.TibjmsConnectionFactory">
    <constructor-arg value="${emsServerURL}"/>
    <property name="userName" value="${emsUserName}"/>
    <property name="userPassword" value="${emsPassword}"/>
    <property name="connAttemptCount" value="${connAttemptCount}"/>
    <property name="connAttemptDelay" value="${connAttemptDelay}"/>
    <property name="connAttemptTimeout" value="${connAttemptTimeout}"/>
    <property name="reconnAttemptCount" value="${reconnAttemptCount}"/>
    <property name="reconnAttemptDelay" value="${reconnAttemptDelay}"/>
    <property name="reconnAttemptTimeout" value="${reconnAttemptTimeout}"/>
  </bean>


  <!-- bean id="tibcoUtil" class="com.nr.ns.upload.TibcoUtil" scope="singleton">
    <constructor-arg value="true"/>
  </bean-->

  <bean id="jmsExceptionListener" class="com.nr.ns.upload.LogMsgExceptionListener"/>

  <!-- Spring CachingConnectionFactory Bean -->
  <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <constructor-arg ref="tibcoConnectionFactory"/>
    <property name="reconnectOnException" value="${reconnectOnException}"/>
    <property name="sessionCacheSize" value="${sessionCacheSize}"/>
    <property name="exceptionListener" ref="jmsExceptionListener"/>
  </bean> 

  <!-- JMSTemplate Bean -->
  <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <constructor-arg ref="connectionFactory"/>
    <property name="receiveTimeout" value="${receiveTimeout}"/>
    <property name="deliveryMode" value="${deliveryMode}"/>
  </bean>

我们将WAR文件保留在tomcat之外,为了实现这一点,我们在TOMCAT_HOME / conf / Catalina / localhost中有“app.xml”文件。

app.xml中:

<Context path="/app"
    docBase="/abc/ccp/app.war"
    reloadable="true"
    unpackWAR="false">

    <Parameter name="emsPropLocation"
        value="/xyz/config/EMSServerConf.properties"
        override="false"/>
</Context>

2 个答案:

答案 0 :(得分:0)

尝试将propertyConfigurer的ignoreResourceNotFound属性更改为true。

答案 1 :(得分:0)

如果未设置contextParameters.emsPropLocation,则默认为冒号后的内容。

<property name="location" value="file:/#{contextParameters.emsPropLocation:/xyz/config/EMSServerConf.properties}" />