2016-01-22 3 views
0

В настоящее время я работаю над веб-приложением, которое в основном представляет собой портфолио для разных поставщиков.Нитки и спящий режим с пружиной MVC

Я работал на нитку, которая копирует детали поставщика и ставит его против нового поставщика, довольно простой.

Этот поток предназначен для работы отлично, но при выборе конкретного объекта Catalog (этот объект каталога содержит шаблон Velocity), выполнение останавливается и никуда не годится. Вызов потока еще раз просто повесит все приложение.

Вот мой код.

public class CopySiteThread extends Thread { 

    public CopySiteThread(ComponentDTO componentDTO, long vendorid, int admin_id) { 
     /**Application specific business logic not exposed **/ 
    } 

    public void run() { 

     /** Application based Business Logic Not Exposed **/ 

     //Copy Catalog first 
     List<Catalog> catalog = catalogDAO.getCatalog(vendorid); 
     System.out.println(catalog); 
     List<Catalog> newCat = new ArrayList<Catalog>(); 
     HashMap<String, Integer> catIdMapList = new HashMap<String, Integer>(); 

     Iterator<Catalog> catIterator = catalog.iterator(); 

     while (catIterator.hasNext()) { 

      Catalog cat = catIterator.next(); 
      System.out.println(cat); 
      int catId = catalogDAO.addTemplate(admin_id, cat.getHtml(), cat.getName(), cat.getNickname(), cat.getTemplategroup(), vendor.getVendorid());    
      catIdMapList.put(cat.getName(), catId); 

      cat = null; 
     } 
    } 
} 

И этот поток вызывается следующим образом.

CopySiteThread thread = new CopySiteThread(componentDTO, baseVendor, admin_id); 
thread.start(); 

После определенного числа итераций, она застревает на линии Catalog cat = catIterator.next();

Этот вопрос довольно странно, потому что я разработал много приложений, как это без каких-либо проблем.

Любая помощь приветствуется.

ответ

0

Реальная проблема заключалась в методе addCatalog в CatalogDAO

Session session = sf.openSession(); 
    Transaction tx = null; 
    Integer templateID = null; 

    Date date = new Date(); 

    try { 
     tx = session.beginTransaction(); 
     Catalog catalog = new Catalog(); 
     //Business Logic 
     templateID = (Integer) session.save(catalog); 
    } catch (HibernateException ex) { 
     if (tx != null) tx.rolback(); 
    } finally { 
     session.close(); 
    } 

    return templateID; 

Fixed путем добавления предложения finally и закрытия всех сессий.

+0

Если вы хотите ответить на свой вопрос, предоставьте несколько фрагментов кода примера решения, а не просто описание того, что вы сделали – nKognito

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