Spring boot tomcat上的Spring boot rest服务部署:找不到jdbc

Spring boot tomcat上的Spring boot rest服务部署:找不到jdbc,spring-boot,Spring Boot,我的基于SpringBootREST服务MAVEN的应用程序在Eclipse工作区中运行良好。我能够在没有任何问题的情况下发动战争。但是,当我部署到tomcat时,它无法从context.xml绑定我的数据源。具体误差如下 原因:javax.naming.NameNotFoundException:Name[jdbc/MyDB]未在此上下文中绑定。找不到[jdbc]。 位于org.apache.naming.NamingContext.lookup(NamingContext.java:817)

我的基于SpringBootREST服务MAVEN的应用程序在Eclipse工作区中运行良好。我能够在没有任何问题的情况下发动战争。但是,当我部署到tomcat时,它无法从context.xml绑定我的数据源。具体误差如下

原因:javax.naming.NameNotFoundException:Name[jdbc/MyDB]未在此上下文中绑定。找不到[jdbc]。 位于org.apache.naming.NamingContext.lookup(NamingContext.java:817)

以下是我根据stackoverflow上的其他帖子所做的工作

  • My context.xml已定义javax.sql.DataSource资源以及resourceLink。代码粘贴在下面
  • 我的pom.xml有包含资源和插件的构建部分。代码粘贴在下面
  • 我的applicationContext.xml为类org.springframework.jndi.JndiObjectFactoryBean定义了bean,属性jndiName pinting为上下文xml中定义的jdbc资源
  • 最初,我发现maven build没有将上下文xml包含在war中,因此我按照一些帖子的建议复制了main/java/resources文件夹下的meta inf目录。现在,上下文xml确实包含在meta inf文件夹下的war中
  • 当我部署war时,它无法启动并在下面记录错误。 原因:javax.naming.NameNotFoundException:Name[jdbc/MyDB]未在此上下文中绑定。找不到[jdbc]。 位于org.apache.naming.NamingContext.lookup(NamingContext.java:817)
  • 上下文xml==>

       <context>
        <Resource name="jdbc/MyDB" auth="Container" type="javax.sql.DataSource"
            username="uid" password="pwd" driverClassName="net.sourceforge.jtds.jdbc.Driver"
            url="jdbc:jtds:sqlserver://myserver:1433/mydatabase" maxActive="8"
            maxIdle="4" validationQuery="select 1" />
    
             <ResourceLink name="jdbc/MyDB"
                 global="jdbc/MyDB"
                  type="javax.sql.DataSource" />
          </context>
    

    我需要我部署的tomcat应用程序能够识别上下文xml并建立jndi连接。任何帮助都将不胜感激。

    呜呜呜!多亏了stackoverflow上的另一篇帖子,我终于找到了答案!!我认为这是我犯过的最愚蠢的错误。在我的上下文xml中,元素“context”应该是大写的“C”,即“context”

    感谢这个链接中的家伙


    呜呜!多亏了stackoverflow上的另一篇帖子,我终于找到了答案!!我认为这是我犯过的最愚蠢的错误。在我的上下文xml中,元素“context”应该是大写的“C”,即“context”

    感谢这个链接中的家伙

        <build>
                    <resources>
                        <resource>
                            <!-- this is relative to the pom.xml directory -->
                            <directory>${project.basedir}/src/main/resources</directory>
                            <filtering>true</filtering>
                        </resource>
                    </resources>
                    <plugins>
                        <plugin>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-maven-plugin</artifactId>
                            <executions>
                            <execution>
                                <configuration>
                                    <mainClass>com.passg.springboot.SpringBootRestApiApp</mainClass>
                                </configuration>
                            </execution>
                        </executions>
                        </plugin>
                    </plugins>
                </build> 
    
        <?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"
                xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://www.springframework.org/schema/context
                    http://www.springframework.org/schema/context/spring-context.xsd">
    
                <bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
                    <property name="jndiName" value="java:comp/env/jdbc/MyDB"/>
                </bean>
    
        Caused by: javax.naming.NameNotFoundException: Name [jdbc/MyDB] is not bound in this Context. Unable to find [jdbc].
            at org.apache.naming.NamingContext.lookup(NamingContext.java:817)
            at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
            at org.apache.naming.NamingContext.lookup(NamingContext.java:827)
            at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
            at org.apache.naming.NamingContext.lookup(NamingContext.java:827)
            at org.apache.naming.NamingContext.lookup(NamingContext.java:173)
            at org.apache.naming.SelectorContext.lookup(SelectorContext.java:163)
            at javax.naming.InitialContext.lookup(InitialContext.java:417)
            at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155)
            at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87)
            at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152)
            at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:179)
            at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)
            at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:106)
            at org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:231)
            at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:217)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1648)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1585)
            ... 110 more