Несколько потоков Вставка строк в таблицу в Grails

Я пытаюсь вставить несколько строк данных в таблицу с помощью многопоточной программы в стандартном приложении Groovy-Grails. Приложение использует стандартные объекты GORM для взаимодействия с базой данных. Каждый поток вставляет различный набор строк. Я использую ExecutorService и FixedThreadPool в службе Grails, которая вызывает класс Runnable Groovy. Класс Runnable запрашивает БД, выполняет много вычислений и вставляет полученные значения в таблицу. Я сталкиваюсь со следующим исключением.

`Error java.lang.NullPointerException

Error at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)Error at org.codehaus.groovy.grails.orm.support.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:85)

Вот класс Runnable.

@Transactional
class MyRunnable{
  def aService
  def bService
def run(){
  for (i=1; i<n; i++){//n is a finite integer
   def x = aService.doSomething()
   def y = bService.doSomething(x)
   AGormClass.addToBGormClass(y)
  }
  AGormClass.save flush:true
 }
}

Вот служба Grails, которая инициализирует пул потоков и вызывает класс Runnable.

@Transactional
class SvcClass{
  ExecutorService exeSvc = Executors.newFixedThreadPool(2)
  MyRunnable runnable = new MyRunnable()
  exeSvc.execute(runnable as Runnable)
  exeSvc.shutdown()
}

0 ответов

Другие вопросы по тегам