繁体   English   中英

为什么我无法使用Dropwizard连接到AWS RDS实例?

[英]Why Can't I connect to AWS RDS instance with Dropwizard?

我现在有一个简单的Dropwizard API,其中一个端点返回我的AWS RDS数据库中的所有用户,还有一个“ hello world”端点。 我可以使用开发机上的MySQL Workbench连接到我的RDS实例,因此我知道允许连接。

我的应用程序可以构建,并且可以正常运行。 我有一个正在运行的“ hello world”端点,但是当我尝试击中/users/all端点时,出现以下错误:

ERROR [2016-05-01 23:47:07,305] io.dropwizard.jersey.errors.LoggingExceptionMapper: Error handling a request: b92c1a9ace3378bf
! java.sql.SQLException: No database selected
! at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
! at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
! at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
! at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
! at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
! at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734)
! at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
! at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1379)
! at org.skife.jdbi.v2.SQLStatement.internalExecute(SQLStatement.java:1327)
! ... 66 common frames omitted

我相信我正在使用Sonatype Nexus Snapshots1.0.0-rc3-SNAPSHOT Dropwizard版本。

在我的config.yml中,我有:

database:
  driverClass: com.mysql.jdbc.Driver
  user: <my_user>
  password: <my_password>
  url: jdbc:mysql://<my_db>.blah.rds.amazonaws.com

我的Configuration类非常简单,并且仅限于以下内容。

public class AppConfiguration extends Configuration {

    @Valid
    @NotNull
    private DataSourceFactory database = new DataSourceFactory();

    @JsonProperty("database")
    public DataSourceFactory getDataSourceFactory() {
        return database;
    }

}

我的服务运行方法如下所示:

@Override
public void run(AppConfiguration configuration, Environment environment) {

    environment.jersey().register(RolesAllowedDynamicFeature.class);
    environment.jersey().register(new AppResource());

    /* initialize DB and DAOs */
    final DBIFactory factory = new DBIFactory();
    final DBI jdbi = factory.build(environment, configuration.getDataSourceFactory(), "mysql");

    final UserDAO userDAO = jdbi.onDemand(UserDAO.class);

    /* Initialize Resources */
    final UserResource userResource = new UserResource(userDAO);
    environment.jersey().register(userResource);

}

我尝试在运行时调试该应用程序,然后看到已经创建了userDAO对象。 我尝试挖掘实例变量/函数,但是找不到任何有用的信息来说明为什么未连接它们。

您没有在JDBC URL中正确指定数据库。 查看此处指定的格式: jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM