【问题标题】:In Spring/Tomcat, which configuration file do jndi lookups refer to?:在 Spring/Tomcat 中,jndi 查找参考哪个配置文件?:
【发布时间】:2014-11-04 03:51:41
【问题描述】:

我无法让 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>

但是,这似乎没有影响。

【问题讨论】:

  • 您可以与我们分享您的资源 JNDI 是如何在 Tomcat 中配置的
  • Tomcat中JNDI通常在哪里找到资源?
  • 你可以在 ${catalina.home}\conf\context.xml 中找到

标签: spring tomcat jndi


【解决方案1】:

这里是从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标签注入jndi

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

    你可以通过使用jee容器标签来避免指定环境,如下所示

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

【讨论】:

    【解决方案2】:

    跟随一个带有 Spring 的 Tomcat JNDI 示例

    弹簧配置

    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    
    
    <jee:jndi-lookup id="yourDS" jndi-name="java:comp/env/yourDS"/>
    

    Tomcat 配置(放入 ${catalina.home}\conf\context.xml)

        <Resource
        name="yourDS"
        type="javax.sql.DataSource"
        username="****"
        password="*****"
        driverClassName="com.ibm.db2.jcc.DB2Driver"  
        url="*******"
        maxActive="8"
        maxIdle="4"
        />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      • 2021-07-05
      • 2011-07-13
      • 2010-09-08
      • 2011-05-17
      相关资源
      最近更新 更多