Hi, I'm currently tried to use this taglibs, which covers all my needs. But I found out, that this tags doesn't refresh after the time which those scrapes will be cached. So I had a deeper look into the source and found the problem in the PageData class. The method "scrapePage" connects at the first call to the server and fetches the data correct. But this doesn't work at the second time, when the cache time is elapsed. The reasen for this is because the variable scraping will then not be set to false. You see my change at the end which works fine. I hope this will help you Stefan -------------------------------------------------- public void scrapePage(String url, long time, PageContext pc) throws JspException { long currenttime = new Date().getTime(); // get the current time // check to see if a scrape is needed if (((currenttime - lastscrape) > time) || newflag || changeflag) { if (!scraping.booleanValue()) { // if a scrape is in progress wait until scrape is finished synchronized (scraping) { if ((page == null) || !page.isAlive()) { // create thread page if it doesn't exist check for a // proxy connection try { if (pport != -1 && pserver != null) page = new Page (url, this, pc, pport, pserver, auth); //page = new Page(url, this, pc, pport, pserver, ssl, auth); else page = new Page (url, this, pc); //page = new Page(url, this, pc, ssl); } catch (MalformedURLException mue) { pc.getServletContext ().log("PageData.scrapePage(): " + mue.getMessage()); } } if ((((currenttime - lastscrape) > time) || newflag || changeflag) && page != null) { // set scraping flag scraping = new Boolean(true); page.start(); } } } } if (scraping.booleanValue() && (page != null) && !page.isAlive ()) { scraping = new Boolean(false); // done scraping reset flag } if ((newflag || changeflag) && (page != null)) { try { page.join(); // wait for scrape to finish changeflag = false; // reset changeflag } catch (InterruptedException ie) { // exception shouldn't happen if it does log it to the server pc.getServletContext().log( "PageData.scrapePage(): Page thread interrupted " + ie.toString()); } } // check to see if a MalformedPatternException was thrown if so throw // JspException for JSP page builder if (exception) { exception = false; // reset exception flag throw new JspException(exceptiontext); } }