Электронный магазин на Java и XML

         

Служебная библиотека документа XML - часть 4


В листинге 7.41 представлена пара служебных методов, которые используются для удаления документа из памяти или для его перезагрузки.

Листинг 7.41. Некоторые служебные методы (DOMIibrary.java)

// use this to force removal of a dom. it // returns last copy of dom or null if dom not in hash public synchronized Document removeDOM( String src ){ Document dom = (Document)domHash.get( src ); if( dom != null ){ domHash.remove( src ); trackerHash.remove( src ); // System.out.println("Removed " + src ); } return dom ; }

// call this to force a reload after src is modified public synchronized Document reloadDOM( String src ){ if( domHash.get( src ) != null ){ domHash.remove( src ); trackerHash.remove( src ); } return getDOM( src ); }

Класс DOMlibrary должен реализовывать интерфейс Runnable, чтобы можно было использовать в фоновом режиме поток, имеющий минимальный приоритет и выполняющий служебные функции. Пример, приведенный в листинге 7.42, очень прост: поток удаляет все документы, которые давно не используются. Также в листинге 7.42 показаны служебные методы toString и getLastErr.

Листинг 7.42. Метод run и другие служебные методы (DOMIibrary.java)

// run is used for upkeep, not reading XML public void run() { while( running ){ try{ Thread.sleep( 60000 ); // example management code Enumeration keys = trackerHash.keys(); long time = System.currentTimeMillis(); while( keys.hasMoreElements() ){ String key = (String) keys.nextElement(); if(((DomTracker)trackerHash.get(key)).getAge(time) > maxAge ){ removeDOM( key ); } } }catch(InterruptedException e){ } }// end while }

public String getLastErr(){ return lastErr ; }

public String toString() { StringBuffer sb = new StringBuffer("DOMlibrary contains "); int ct = domHash.size(); if( ct > 0 ){ sb.append(Integer.toString( ct ) ); sb.append( " DOM objects "); Enumeration e = domHash.keys(); while( e.hasMoreElements() ){ String key = (String)e.nextElement(); sb.append( key ); sb.append(" " ); } } else { sb.append("no DOM objects"); } sb.append(" Last error: " ); sb.append( lastErr ); return sb.toString(); }




Содержание  Назад  Вперед