在Spring / Tomcat中,jndi查找引用哪个配置文件?:

时间:2014-11-04 03:51:41

标签: 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>

然而,这似乎没有任何影响。

2 个答案:

答案 0 :(得分:2)

以下是从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 contatiner标记来避免指定环境,如下所示

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

答案 1 :(得分:1)

关注Tomcat JNDI with Spring的例子

春季配置

<?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"
    />