Author: dogacan Date: Thu Jun 21 08:15:32 2007 New Revision: 549507 URL: http://svn.apache.org/viewvc?view=rev&rev=549507 Log: NUTCH-471 - Fix synchronization in NutchBean creation.
Modified: lucene/nutch/trunk/CHANGES.txt lucene/nutch/trunk/src/java/org/apache/nutch/searcher/NutchBean.java lucene/nutch/trunk/src/web/web.xml Modified: lucene/nutch/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/lucene/nutch/trunk/CHANGES.txt?view=diff&rev=549507&r1=549506&r2=549507 ============================================================================== --- lucene/nutch/trunk/CHANGES.txt (original) +++ lucene/nutch/trunk/CHANGES.txt Thu Jun 21 08:15:32 2007 @@ -54,6 +54,9 @@ There was discussion to remove parse-rss, in light of the feed plugin, however, this patch does not explicitly remove parse-rss. (dogacan, mattmann) +17. NUTCH-471 - Fix synchronization in NutchBean creation. + (Enis Soztutar via dogacan) + Release 0.9 - 2007-04-02 1. Changed log4j confiquration to log to stdout on commandline Modified: lucene/nutch/trunk/src/java/org/apache/nutch/searcher/NutchBean.java URL: http://svn.apache.org/viewvc/lucene/nutch/trunk/src/java/org/apache/nutch/searcher/NutchBean.java?view=diff&rev=549507&r1=549506&r2=549507 ============================================================================== --- lucene/nutch/trunk/src/java/org/apache/nutch/searcher/NutchBean.java (original) +++ lucene/nutch/trunk/src/java/org/apache/nutch/searcher/NutchBean.java Thu Jun 21 08:15:32 2007 @@ -19,7 +19,7 @@ import java.io.*; import java.util.*; -import javax.servlet.ServletContext; +import javax.servlet.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -27,6 +27,7 @@ import org.apache.hadoop.fs.*; import org.apache.hadoop.io.Closeable; import org.apache.hadoop.conf.*; +import org.apache.hadoop.util.StringUtils; import org.apache.nutch.parse.*; import org.apache.nutch.indexer.*; import org.apache.nutch.crawl.Inlinks; @@ -41,6 +42,7 @@ DistributedSearch.Protocol, Closeable { public static final Log LOG = LogFactory.getLog(NutchBean.class); + public static final String KEY = "nutchBean"; // static { // LogFormatter.setShowThreadIDs(true); @@ -63,14 +65,10 @@ private FileSystem fs; - /** Cache in servlet context. */ + /** Returns the cached instance in the servlet context. + * @see NutchBeanConstructor*/ public static NutchBean get(ServletContext app, Configuration conf) throws IOException { - NutchBean bean = (NutchBean)app.getAttribute("nutchBean"); - if (bean == null) { - if (LOG.isInfoEnabled()) { LOG.info("creating new bean"); } - bean = new NutchBean(conf); - app.setAttribute("nutchBean", bean); - } + NutchBean bean = (NutchBean)app.getAttribute(KEY); return bean; } @@ -407,6 +405,28 @@ } } + /** Responsible for constructing a NutchBean singleton instance and + * caching it in the servlet context. This class should be registered in + * the deployment descriptor as a listener + */ + public static class NutchBeanConstructor implements ServletContextListener { + + public void contextDestroyed(ServletContextEvent sce) { } + public void contextInitialized(ServletContextEvent sce) { + ServletContext app = sce.getServletContext(); + Configuration conf = NutchConfiguration.get(app); + + LOG.info("creating new bean"); + NutchBean bean = null; + try { + bean = new NutchBean(conf); + app.setAttribute(KEY, bean); + } + catch (IOException ex) { + LOG.error(StringUtils.stringifyException(ex)); + } + } + } } Modified: lucene/nutch/trunk/src/web/web.xml URL: http://svn.apache.org/viewvc/lucene/nutch/trunk/src/web/web.xml?view=diff&rev=549507&r1=549506&r2=549507 ============================================================================== --- lucene/nutch/trunk/src/web/web.xml (original) +++ lucene/nutch/trunk/src/web/web.xml Thu Jun 21 08:15:32 2007 @@ -22,6 +22,10 @@ <!-- order is very important here --> +<listener> + <listener-class>org.apache.nutch.searcher.NutchBean$NutchBeanConstructor</listener-class> +</listener> + <servlet> <servlet-name>Cached</servlet-name> <servlet-class>org.apache.nutch.servlet.Cached</servlet-class> ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Nutch-cvs mailing list Nutch-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nutch-cvs