我正在开发一个Spring Web应用程序,其中正在使用JMS以及一些数据源连接。
现在,我不是要对DataSource / Jms Connection Factory的JNDI名称进行硬编码,而是要从外部属性文件中读取它们。
我使用了以下配置:
<bean id="myProps" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath*:myFile"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>
`<jee:jndi-lookup` id="dataSource" jndi-name="${DS_JNDI}" expected-type="javax.sql.DataSource"/>
但是在部署期间,它会在weblogic :::
中引发错误javax.naming.NameNotFoundException: Unable to resolve '${DS_JNDI}'. Resolved ''; remaining name '${DS_JNDI}'
就像使用<jee:jndi-lookup>
时不能放置属性文件条目吗?
答案 0 :(得分:0)
您应该删除classpath之后的星号,并添加文件扩展名的属性
<bean id="myProps" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:myFile.properties"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>
答案 1 :(得分:0)
<bean id="myProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath*:myFile.properties</value>
</list>
</property>
</bean>
这是问题的正确解决方案。我认为从Spring5.x开始,它已停止附加“ .properties”扩展名。