0

Я получаю исключение, когда метод вызывается из 3 или 4 потоков. Этот метод получает соединение с базой данных внутри и заполняет некоторые значения из БД, а затем соединение (соединение, resultset и prepareStatement) закрывается должным образом внутри метода. Все еще получаю исключение.Получение драйвера TDS - java.lang.NullPointerException. это исключение не соответствует

Thread_1 - вызов метода abc(). соединение открыто и закрыто внутри метода.
Вызов метода Thread_2 - abc(). соединение открыто и закрыто внутри метода.
Вызывается метод Thread_3 - abc(). соединение открыто и закрыто внутри метода.

Непонятно, почему возникает исключение, даже если соединение открыто и закрыто правильно. DataBase - MS SQL, Java - 1,6, апач-кот 6.

Главное, что это не соответствует, а иногда происходит исключение, а иногда нет.

1. Exception - 
com.inet.tds.am: 
[TDS Driver]java.lang.NullPointerException                                     
     at com.inet.tds.aj.a(Unknown Source)                                        
     at com.inet.tds.r.g(Unknown Source)                                         
     at com.inet.tds.r.executeQuery(Unknown Source)                                      
     at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93) 


2. Exception - 
java.sql.SQLException: Connection is closed.                                        
     at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.checkOpen(PoolingDataSource.java:175)                     
     at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:301) 

Просьба сообщить об этом.

ответ

2

Подключение к базе данных, вероятно, не является потокобезопасным. Хотя из вашей трассировки стека кажется, что вы пытаетесь использовать пул подключений (dbcp), вы, возможно, не настроили его правильно. Если вы обновите вопрос с помощью большей части своей конфигурации и кода, в котором вы делаете вызов БД, возможно, кто-то может обнаружить проблему.

+0

Я согласен с этим ответом. Ваше приложение не является потокобезопасным, и у вас может быть какое-то условие гонки. – tom

0

Пожалуйста, найдите конфигурации/файл контекста -

<Resource name="jdbc/mysqlDS" auth="Container" type="javax.sql.DataSource" 
      driverClassName="com.inet.tds.TdsDriver" 
      url="jdbc:inetdae7://194.0.0.1:1433/july" 
      username="team" password="!team!" 
      maxActive="50" maxIdle="2" maxWait="10000" 
      removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"/> 
+1

Вы должны отредактировать исходный вопрос и добавить эту информацию туда. Таким образом, вся данная информация централизована. – tom

 Смежные вопросы

  • Нет связанных вопросов^_^