2016-04-27 26 views
2

postgresqlを使用してデータベース接続を設定しようとしています。プレーンなvanila JDBCを使用していて、データベースに正常に接続できました。Spring JDBCはpostgresデータベースに接続できませんが、JDBCは接続できません

しかし、JdbcTemplateを使用して同じ接続パラメータを指定しているときは、接続できません。

私のコードと構成を見てください:

<bean name="dataSource" id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.postgresql.Driver" /> 
    <property name="url" value="jdbc:postgresql://localhost:5342/testdbnew" /> 
    <property name="username" value="admin1" /> 
    <property name="password" value="admin1" /> 
</bean>  

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
    <property name="dataSource" ref="dataSource" /> 
</bean> 

<bean name="announcementNewsDAO" id="announcementNewsDAO" class="test.dao.AnnouncementNewsDAOImpl"> 
</bean> 

、ここでは、私は、コードを介してアクセスしています方法です:

まず、私はそれから、ApplicationContextAware .Thenを実装するクラスを作成しています私はjdbcTemplateオブジェクトを呼び出しています。

public class ApplicationContextProvider implements ApplicationContextAware { 

private static ApplicationContext context; 

public static ApplicationContext getApplicationContext() { 
    return context; 
} 

@Override 
public void setApplicationContext(ApplicationContext ac) 
     throws BeansException { 
    context = ac; 
    System.out.println("Context initialized..."); 
    JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate"); 
    System.out.println("jdbcTemplate initialized.."); 

} 

}

これはAnnouncementDAOImplのクラスである:

public class AnnouncementNewsDAOImpl implements AnnouncementNewsDAO { 


/** 
* JDBCTemplate object for accessing database 
*/ 
@Autowired 
private JdbcTemplate jdbcTemplate ; 


@Override 
public void insertAnnouncementNews(AnnouncementNews news) { 

    String insertQuery = "<db query for insert>"; 
    try { 

     Object[] args = new Object[]{Integer.valueOf(news.getSlno()), news.getStakeholder_code(), news.getInfo_type(), news.getAnnouncement_news(),null,null}; 


     int result = jdbcTemplate.update(insertQuery, args); 

     if(result!=0){ 
      System.out.println("Announcement news inserted for the serial number : "+news.getSlno()); 
     }else{ 
      System.err.println("Could not insert announcement news for the serial number : "+news.getSlno()); 
     } 


    } catch (ParseException pe) { 
     System.err.println("Exception occurred while parsing date : "+pe.getMessage()); 
    } 
} 

と私はエラーになっています:

org.springframework.jdbc.CannotGetJdbcConnectionExceptionを: JDBCコンを取得できませんでしたnection;ネストされた例外はorg.postgresql.util.PSQLExceptionです:Connection refused。ホスト名とポートが正しく、ポストマスターがTCP/IP接続を受け入れていることを確認します。 at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:628) at org.springframework.jdbc.core。 (JdbcTemplate.java:978) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:978) at発生原因:org.postgresql.util.PSQLException:接続が拒否されました。ホスト名とポートが正しく、ポストマスターがTCP/IP接続を受け入れていることを確認します。 org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:207)ポートで

+1

の接続は、サーバーが接続を拒否し、あなたのファイアウォールの設定を確認する必要があります閉じています。 –

+0

Windowsの場合は、ファイアウォールを無効にします。また、設定の詳細が正しいことを願っています。 –

+0

この質問はおそらく問題であった単純なタイプミスであったので、おそらく閉じられるはずです。 –

答えて

3

誤植で ?

<property name="url" value="jdbc:postgresql://localhost:5342/iitkgpdbnew" /> 

あなたは、もちろん5342にそれを変更しない限り、デフォルトのPostgreSQLのポートは5432です:)