2016-04-27 17 views
2

Ich versuche eine Datenbankverbindung mit postgresql einzurichten. Ich benutzte plain vanila JDBC und konnte erfolgreich eine Verbindung zur Datenbank herstellen.Spring JDBC kann keine Verbindung zur Postgres-Datenbank herstellen, aber JDBC kann einfach eine Verbindung herstellen

Aber wenn ich die gleichen Verbindungsparameter mit JdbcTemplate gebe, kann ich keine Verbindung herstellen.

haben Sie einen Blick auf mein Code und Konfigurationen:

<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> 

und hier ist die Art, wie ich durch Code bin Zugriff:

Zuerst habe ich eine Klasse bin die Schaffung ApplicationContextAware .Dann, von dem implementieren Referenz Ich rufe das jdbcTemplate Objekt an.

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.."); 

} 

}

und

Das ist die Klasse von 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()); 
    } 
} 

und ich bin immer Fehler:

org.springframework.jdbc.CannotGetJdbcConnectionException: Konnte JDBC Con nicht bekommen nection; verschachtelte Ausnahme ist org.postgresql.util.PSQLException: Verbindung abgelehnt. Überprüfen Sie, ob der Hostname und der Port korrekt sind und ob der Postmaster TCP/IP-Verbindungen akzeptiert. bei org.springframework.jdbc.datasource.DataSourceUtils.getConnection (DataSourceUtils.java:80) bei org.springframework.jdbc.core.JdbcTemplate.execute (JdbcTemplate.java:628) bei org.springframework.jdbc.core. JdbcTemplate.update (JdbcTemplate.java:907) bei org.springframework.jdbc.core.JdbcTemplate.update (JdbcTemplate.java:968) bei org.springframework.jdbc.core.JdbcTemplate.update (JdbcTemplate.java:978) at Erstellt von: org.postgresql.util.PSQLException: Verbindung abgelehnt. Überprüfen Sie, ob der Hostname und der Port korrekt sind und ob der Postmaster TCP/IP-Verbindungen akzeptiert. bei org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl (ConnectionFactoryImpl.java:207)

+1

Ihre Verbindung geschlossen ist, der Server die Verbindung verweigert, sollten Sie Ihre Firewall-Einstellungen überprüfen. –

+0

Wenn es Windows ist, deaktivieren Sie Ihre Firewall. Ich hoffe auch, dass die Konfigurationsdetails korrekt sind. –

+0

Diese Frage sollte wahrscheinlich geschlossen werden, da es nur ein einfacher Tippfehler war. –

Antwort

3

Typo im Hafen?

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

Der Standard PostgreSQL-Port ist 5432. Wenn Sie es 5342 natürlich geändert :)

Verwandte Themen