相关疑难解决方法(0)

从Spring Boot连接到Heroku Postgres

我正在寻找使用JPA/Hibernate 在Spring Boot应用程序中连接到Heroku Postgres最简单,最干净的方法.

我没有在Heroku或Spring Boot文档中看到这个组合的完整示例,所以我想在Stack Overflow上记录这个.

我想尝试这样的事情:

@Configuration   
public class DataSourceConfig {

    Logger log = LoggerFactory.getLogger(getClass());

    @Bean
    @Profile("postgres")
    public DataSource postgresDataSource() {        
        String databaseUrl = System.getenv("DATABASE_URL")
        log.info("Initializing PostgreSQL database: {}", databaseUrl);

        URI dbUri;
        try {
            dbUri = new URI(databaseUrl);
        }
        catch (URISyntaxException e) {
            log.error(String.format("Invalid DATABASE_URL: %s", databaseUrl), e);
            return null;
        }

        String username = dbUri.getUserInfo().split(":")[0];
        String password = dbUri.getUserInfo().split(":")[1];
        String dbUrl = "jdbc:postgresql://" + dbUri.getHost() + ':' 
            + dbUri.getPort() + dbUri.getPath();

        // …
Run Code Online (Sandbox Code Playgroud)

java postgresql spring heroku spring-boot

8
推荐指数
3
解决办法
1万
查看次数

Heroku Postgres:此连接已关闭

我开发了一个小的Heroku + Grails + Postreg应用程序.部署后20分钟它会工作正常,之后我总是得到:

 This connection has been closed.. Stacktrace follows: Heroku/myapp
- org.postgresql.util.PSQLException: This connection has been closed. Heroku/myapp
- at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:837) Heroku/myapp
- at org.postgresql.jdbc2.AbstractJdbc2Connection.getAutoCommit(AbstractJdbc2Connection.java:798) Heroku/myapp
- at org.grails.datastore.gorm.GormStaticApi$_methodMissing_closure2.doCall(GormStaticApi.groovy:102) Heroku/myapp
- at com.myapp.WorkspaceController.list(WorkspaceController.groovy:18) Heroku/myapp
- at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198) Heroku/myapp
- at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) Heroku/myapp
- at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53) Heroku/myapp
- at grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter.doFilter(RequestHolderAuthenticationFilter.java:53) Heroku/myapp
- at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:62) Heroku/myapp
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) Heroku/myapp
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) Heroku/myapp
- at java.lang.Thread.run(Thread.java:745) Heroku/myapp
- 2015-08-07 15:11:10,685 [http-nio-20850-exec-5] ERROR spi.SqlExceptionHelper - This connection has been …
Run Code Online (Sandbox Code Playgroud)

postgresql grails heroku grails-orm

7
推荐指数
1
解决办法
1485
查看次数

PSQLException:此连接已关闭 - Spring Boot + AWS RDS + Postgres

当我PSQLException: This connection has been closed尝试访问 AWS RDS 中的 Postgres 数据库时,出现以下错误消息:异常是随机发生的(并非每次运行代码时都会发生),如果执行到以下代码之前需要一段时间,则更有可能发生:

@Transactional
public void revokeChanges(ArrayList<Integer> changeIds) {
    jdbcTemplate.batchUpdate(sqlUpdate,
            new BatchPreparedStatementSetter() {
                @Override
                public void setValues(PreparedStatement ps, int i) throws SQLException {
                    ps.setStuff..
                    ...
                }
                @Override
                public int getBatchSize() {
                    return changeIds.size();
                }
            });
    jdbcTemplate.batchUpdate(sqlInsert,
            new BatchPreparedStatementSetter() {
                @Override
                public void setValues(PreparedStatement ps, int i) throws SQLException {
                    ps.setStuff...
                }
                @Override
                public int getBatchSize() {
                    return changeIds.size();
                }
            });
Run Code Online (Sandbox Code Playgroud)

连接东西:

spring.datasource.url=jdbc:postgresql://my-url:port/dbName?tcpKeepAlive=true&autoReconnect=true

spring.datasource.driver-class-name=org.postgresql.Driver

相关POM:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.9.RELEASE</version>
</parent>

<dependencies> …
Run Code Online (Sandbox Code Playgroud)

java postgresql spring jdbc spring-jdbc

5
推荐指数
1
解决办法
1万
查看次数