我无法让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资源的步骤


在server.xml中创建jndi资源

<Resource global="search.url" name="search.url" type="java.lang.String" />

在context.xml中创建链接,以便所有Web应用程序都可以访问它。

<ResourceLink name="search.url"  global="search.url" auth="Container" type="java.lang.String" />

使用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" />

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

10-11 09:22