glassfish-4 + spring jndi name java:comp / env / jdbc /

时间:2014-06-16 14:47:02

标签: java spring jdbc glassfish-4

在spring web-app中,我们有一个bean

<bean id="test" class="org.springframework.jndi.JndiObjectFactoryBean">
   <property name="jndiName" value="jdbc/testRes"/>
</bean>

在glassfish4中将此源声明为jdbc / testRes

这一切都有效但是 如果我们写这样的jndi名字

    <bean id="test" class="org.springframework.jndi.JndiObjectFactoryBean">
       <property name="jndiName" value="java:comp/env/jdbc/testRes"/>
    </bean>

它停止工作。

这个web应用程序有许多声明jndi名称,如java:comp / env / jdbc / testRes,我们需要在tomcat7和glassfish4中保持兼容性。

我们如何配置这些名称的映射?

我们找到了解决方案,但它不起作用

<resource-ref>
    <res-ref-name>java:comp/env/jdbc/testRes</res-ref-name>
    <jndi-name>jdbc/testRes</jndi-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

请帮忙

1 个答案:

答案 0 :(得分:0)

可能你找到了解决方案,但是如果其他人有同样的问题......

尝试添加到resource-ref这一行:

<lookup-name>jdbc/testRes</lookup-name>

所以它看起来像这样:

<resource-ref>
    <res-ref-name>java:comp/env/jdbc/testRes</res-ref-name>
    <jndi-name>jdbc/testRes</jndi-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <lookup-name>jdbc/testRes</lookup-name>
</resource-ref>