spring - 在Spring/Tomcat中,jndi查找是指哪个配置文件? :

标签 spring tomcat jndi

我无法让 Spring/Tomcat 应用程序解析一个变量,该变量在应用程序上下文中显示为 JndiFactoryObjectName bean 的属性。这是相关的 bean 条目:

当我尝试在服务器上运行它时,出现了这个错误:

Caused by: javax.naming.NameNotFoundException: Name search.url is not bound in this Context

server.xml 中的这个条目似乎没有帮助:

还有一个入口(从Eclipse/STS看到的)

Tomcat v6.0 Server at localhost
   Catalina
     localhost
         ROOT.xml

<Context path="" reloadable="true" docBase="C:/myworkspace32/myAppName/WebContent">
        <ResourceLink global="search.url" name="search.url" type="java.lang.String"/>
</Context>

不过,这好像没什么影响。

最佳答案

Tomcat访问JNDI资源的步骤

  1. 在server.xml中创建jndi资源

    <Resource global="search.url" name="search.url" type="java.lang.String" />
    
  2. 在 context.xml 中创建链接,以便所有 Web 应用程序都可以访问它。

    <ResourceLink name="search.url"  global="search.url" auth="Container" type="java.lang.String" />
    
  3. 使用spring bean或jee标签注入(inject)jndi

    <bean id="searchUrl" class="org.springframework.jndi.JndiObjectFactoryBean">
     <property name="jndiName" value="java:comp/env/search.url"/>
    </bean>
    

    你可以避免使用 jee contatiner 标签指定环境,如下所示

     <jee:jndi-lookup id="searchUrl" jndi-name="search.url" expected-type="java.lang.String" />
    

关于spring - 在Spring/Tomcat中,jndi查找是指哪个配置文件? :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26727441/

相关文章:

spring - Spring Controllers 中的并发方法入口

tomcat - 如何查找 apache tomcat 中实际运行的并发线程

java - 如何在 Web App 而不是在 tomcat 中创建连接池

datasource - Spring Boot JNDI 数据源查找失败 - 在上下文 "java:"中找不到名称 comp/env/jdbc

spring - 结果行: null from HibernateTemplate Find()

java - 根据外键值选择结果

tomcat - 检查 Linux 中是否安装了软件/应用程序

java - Jboss 7 是否支持来自远程客户端的远程 jndi 查找

java - 使用 JmsTemplate 发送到 ActiveMQ 时出现文本消息编码问题

tomcat使用pc名,页面显示改变