当前位置: 首页 > 知识库问答 >
问题:

使用JNDI的Spring数据源配置

莫骞仕
2023-03-14

我在使用Spring ApplicationContext.xml文件中的JNDI配置dataSource bean时遇到了困难。

我的applicationContext.xml条目如下所示:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/myApp" expected-type="javax.sql.DataSource"/>
<resource-env-ref>
    <resource-env-ref-name>jdbc/myApp</resource-env-ref-name>
    <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
<resource-env-ref>
<Resource 
    auth="Container" 
    factory="bitronix.tm.resource.ResourceObjectFactory" 
    name="jdbc/myApp" type="javax.sql.DataSource" 
    uniqueName="jdbc/myApp" />

通过这些配置,我在Tomcat控制台上不断得到这样的错误:

由:javax.naming.NameNotFoundException:Name[jdbc/myapp]在此上下文中没有绑定。找不到[jdbc]。在org.apache.naming.namingcontext.lookup(namingcontext.java:819)在org.apache.naming.namingcontext.lookup(namingcontext.java:167)在org.apache.naming.selectorcontext.lookup(selectorcontext.java:156)在javax.naming.initialcontext.java:156)在org.springframework.jndi.jnditemplate$1.doincontext(jnditemplate.java:155)在.jnditemplate.lookup(jnditemplate.java:152)在org.springframework.jndi.jnditemplate.lookup(jnditemplate.java:179)在org.springframework.jndi.jndilocatorsupport.lookup(jnditemplate.java:104)在org.springframework.jndi.jndilocatorsupport.java:104)在org.springframework.jndi.jndilocatorsupport.lookup在org.springframework.beans.factory.support.abstractaUtowireCapableBeanFactor的DiobjectFactoryBean.AfterPropertiesSet(jndiobjectFactoryBean.java:217)在org.springframework.beans.factory.support.AbstracTauTowireCapableBeanFactory.InitializeBean(AbstracTauTowireCapableBeanFactory.java:1612)

请帮助我解决这个问题。在我看来,context.xml中的bitronix事务工厂导致了这个问题。

共有1个答案

盛骏祥
2023-03-14

您需要使用不同的jndi名称,因为在Tomcat中,所有配置的条目和资源都放在jndi命名空间的java:comp/env部分,您还需要指定:

<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/myApp" expected-type="javax.sql.DataSource"/>
 类似资料:
  • 我想用Spring Boot配置JNDI数据源 我知道可以在application.properties.中使用以下内容创建jndi。我在纠结的是如何将其与JBoss WildFly联系起来? a.我需要在WildFly的standalone.xml下添加/更改什么和b. Spring Boot主应用程序类ProjectPocApiApplication下需要的任何更改 谢谢

  • 我试图创建一个Spring Boot应用程序,它连接两个数据源。我可以通过遵循Spring文档来实现这一点,但我面临的挑战是实现以下目标 null 是否有任何方法可以使用Spring Boot的自动配置功能来实现这一点,或者我必须基于概要文件创建不同的数据源bean。

  • 嗨,我正在尝试使用jndi数据源。下面是代码 context.xml 在spring servlet配置bean中是: 我得到这个错误 org.springframework.beans.factory.beanCreationException:创建名为“Contact Controller”的bean时出错:注入autowired依赖项失败;嵌套异常为org.SpringFramework.B

  • 我是JNDI的新手,我正在尝试让我的db连接正常工作。到目前为止还没有什么进展。我要么收到一条消息,说明“名称[java:comp/env]未在此上下文中绑定。找不到[java:comp]”,要么收到超时。 下面是关于我当前配置的信息。 Tomcat\conf\context.xml 我还尝试将资源放在context.xml中,以确保可以找到它: Tomcat\conf\server.xml 我回

  • 更具体地说,我得到了包含所有依赖项的可执行war。应用程序在没有jndi数据源的情况下启动,就像一个魅力一样,用jndi数据源运行它失败了。我认为在这样的配置中没有jetty.xml的位置,因此jetty-env.xml也不适用,因为jetty在默认情况下不会读取它。我试图使用jetty-web.xml进行jndi数据源配置,但jetty未能部署应用程序,返回503错误代码。我用的是9-M4型飞机

  • 当使用Spring Batch Admin时,它会尝试为dataSource、transactionManager等提供一些默认值。 如果您想覆盖这些默认值,您可以在META-INF/Spring/批/servlet/overder/文件夹下创建自己的xml bean定义,并且在引导期间它保证将覆盖默认属性。 在spring batch admin中,数据源默认值是在数据源上下文中定义的。使用此定