gpt4 book ai didi

java - 无法使用 PropertyPlaceholderConfigurer 在 JNDI 上下文中查找属性

转载 作者:行者123 更新时间:2023-12-01 05:21:37 25 4
gpt4 key购买 nike

我想从 WEb.XML 中删除 env-entry

<env-entry>
<description>String used in masking process</description>
<env-entry-name>default_mask</env-entry-name>
<env-entry-value>*</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>

所以我创建了一个属性文件(c:/my.properties)

default_mask=9999   

所以我尝试使用现有的解决方案,例如 JndiPropertyPlaceholderConfigurer (来自 Spring Jndi Context and PropertyPlaceholderConfigurer)并在 spring 的 applicationcontext.xml 中配置如下

<bean  
class="com.test.webappl.JndiPropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="ignoreResourceNotFound" value="true"/>
<property name="location" value="file:c:\my.properties"/>

启动 Tomcat 服务器会读取属性文件

.......com.test.webappl.JndiPropertyPlaceholderConfigurer] Loading properties file from URL [file:c:/my.properties]

当我阅读时现在是java

Context context = new InitialContext(); 
String resource = context.lookup("java:comp/env/default_mask");

应用程序抛出以下错误

**javax.naming.NameNotFoundException: Name default_mask is not bound in this Context**

我在 web.xml 中的 spring 设置是

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationcontext.xml</param-value>
</context-param>

有人知道我使用的方法是否正确吗?我知道这个问题已经在 Spring Jndi Context and PropertyPlaceholderConfigurer 中得到了回答但不知何故不适用于我的情况

提前致谢

最佳答案

如果您要将任何内容部署到任何应用程序服务器,最好将所有相关资源打包到部署单元(在您的情况下为 war)。

回答你的问题 - 如果你使用 spring 向 JNDI 容器注入(inject)任何内容,你还应该让 spring 为你找到所有内容。

所以你不能使用

new InitialContext(); // this has nothing to do with spring.

希望这有帮助:)

关于java - 无法使用 PropertyPlaceholderConfigurer 在 JNDI 上下文中查找属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10316610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com