AWS Beanstalk:无法确定嵌入式数据库驱动程序类

Posted

技术标签:

【中文标题】AWS Beanstalk:无法确定嵌入式数据库驱动程序类【英文标题】:AWS Beanstalk: Cannot determine embedded database driver class 【发布时间】:2016-07-24 17:28:15 【问题描述】:

我有一个 spring boot 应用程序,它在我的本地实例上运行良好(通过 Intellij),但是在 AWS BEanstalk 上部署时,应用程序抛出以下错误(抱歉格式化。这就是 spring 生成异常的方式):

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfig uration$JdbcTemplateConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationExcept ion: Could not autowire field: private javax.sql.DataSource org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$JdbcTemplateConfigur ation.dataSource; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in cla ss path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration$NonEmbeddedConfiguration.class]: Bean instantiation via factor y 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.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Cann ot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (the profiles "aws" are currently active).

pom.xml

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>$jackson.version</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>$jackson.version</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>$jackson.version</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-dynamodb</artifactId>
        <version>1.10.56</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.my.app.path.MyApplication</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

application.properties

spring.profiles.active=aws
dynamodb.tablename=my_dynamodb_table

application-aws.properties

spring.profiles.active=aws

应用程序使用 dynamodb 中的表。这可能是因为我可能需要在 AWS 中设置权限以允许 beanstalk 与 dynamodb 对话?如果是这样,请告诉我该怎么做。

我的 EC2 实例是 tomcat8 类型。

【问题讨论】:

【参考方案1】:

在this post 上找到了我的问题的解决方案。请参阅@user672009 的答案。

只需将其添加到您的 pom 中即可。

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.3.156</version>
</dependency>

【讨论】:

以上是关于AWS Beanstalk:无法确定嵌入式数据库驱动程序类的主要内容,如果未能解决你的问题,请参考以下文章

无法将数据库迁移到 AWS 弹性 Beanstalk

Moqui 在 Elastic Beanstalk Tomcat 实例上部署到 AWS

Angular Universal - 部署到 AWS Elastic Beanstalk

无法在 AWS Elastic Beanstalk 上创建新的 RDS 数据库

无法延长 AWS 中 beanstalk 的超时时间

AWS Elastic Beanstalk 无法担任角色