Java 带休息和休息的弹簧靴;JPA,建筑战

Java 带休息和休息的弹簧靴;JPA,建筑战,java,maven,jpa,spring-boot,jndi,Java,Maven,Jpa,Spring Boot,Jndi,我正在尝试学习本教程: 我已经成功地创建了一个Rest控制器并通过eclipse运行它,并且我能够在浏览器中获得JSON响应。我使用了ApacheDerby嵌入式数据库 我现在想做的是在我单独的Tomcat实例(非嵌入式)上运行它,并对MySQL数据库进行JNDI查找 上面提到的教程没有提到JNDI,所以我看了一下,建议添加 spring.datasource.jndi-name=java:comp/env/jdbc/mydb 转到application.properties文件 我非常确定我

我正在尝试学习本教程:

我已经成功地创建了一个Rest控制器并通过eclipse运行它,并且我能够在浏览器中获得JSON响应。我使用了ApacheDerby嵌入式数据库

我现在想做的是在我单独的Tomcat实例(非嵌入式)上运行它,并对MySQL数据库进行JNDI查找

上面提到的教程没有提到JNDI,所以我看了一下,建议添加

spring.datasource.jndi-name=java:comp/env/jdbc/mydb
转到application.properties文件

我非常确定我已经正确地设置了Tomcat,因为我以前在另一个应用程序中使用过JNDI查找,但是尝试使用Maven构建WAR失败:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private javax.sql.DataSource org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.dataSource; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/JndiDataSourceAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.jdbc.datasource.lookup.DataSourceLookupFailureException: Failed to look up JNDI DataSource with name 'java:comp/env/jdbc/finance'; nested exception is javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
....

教程似乎不完整,或者我错过了什么?我不知道如何继续。

什么时候发生异常
NoInitialContextException
可由嵌入式Tomcat引发,因为在运行mvn Package时,它没有默认启用JNDI。何时发生异常
NoInitialContextException
可以由嵌入式Tomcat抛出,因为在运行mvn包时,它没有默认启用JNDI