Я пытаюсь установить соединение с базой данных, используя 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
.Затем, от ссылка Я вызываю объект 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 Con nection; Вложенное исключение - org.postgresql.util.PSQLException: Соединение отклонено. Убедитесь, что имя хоста и порт правильные и что почтмейстер принимает соединения TCP/IP. на org.springframework.jdbc.datasource.DataSourceUtils.getConnection (DataSourceUtils.java:80) в org.springframework.jdbc.core.JdbcTemplate.execute (JdbcTemplate.java:628) в org.springframework.jdbc.core. JdbcTemplate.update (JdbcTemplate.java:907) на org.springframework.jdbc.core.JdbcTemplate.update (JdbcTemplate.java:968) в 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)
Ваше соединение закрыто сервер отклонил соединение, вы должны проверить настройки брандмауэра. –
Если это Windows, отключите брандмауэр. Кроме того, я надеюсь, что данные конфигурации верны. –
Этот вопрос, вероятно, должен быть закрыт, поскольку это была просто опечатка, которая была проблемой. –