View Javadoc

    1   /**
    2    * Copyright (c) 2002-2011 "Neo Technology,"
    3    * Network Engine for Objects in Lund AB [http://neotechnology.com]
    4    *
    5    * This file is part of Neo4j.
    6    *
    7    * Neo4j is free software: you can redistribute it and/or modify
    8    * it under the terms of the GNU General Public License as published by
    9    * the Free Software Foundation, either version 3 of the License, or
    10   * (at your option) any later version.
    11   *
    12   * This program is distributed in the hope that it will be useful,
    13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15   * GNU General Public License for more details.
    16   *
    17   * You should have received a copy of the GNU General Public License
    18   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
    19   */
    20  package org.neo4j.server.modules;
    21
    22  import java.io.IOException;
    23
    24  import javax.management.MalformedObjectNameException;
    25
    26  import org.neo4j.server.NeoServerWithEmbeddedWebServer;
    27  import org.neo4j.server.RoundRobinJobScheduler;
    28  import org.neo4j.server.database.Database;
    29  import org.neo4j.server.logging.Logger;
    30  import org.neo4j.server.rrd.RrdFactory;
    31  import org.rrd4j.core.RrdDb;
    32
    33  public class WebAdminModule implements ServerModule
    34  {
    35
    36      private static final Logger log = Logger.getLogger( WebAdminModule.class );
    37
    38      private static final String DEFAULT_WEB_ADMIN_PATH = "/webadmin";
    39      private static final String DEFAULT_WEB_ADMIN_STATIC_WEB_CONTENT_LOCATION = "webadmin-html";
    40
    41      private final RoundRobinJobScheduler jobScheduler = new RoundRobinJobScheduler();
    42
    43      public void start( NeoServerWithEmbeddedWebServer neoServer )
    44      {
    45          try
    46          {
    47              startRoundRobinDB( neoServer );
    48          } catch ( Exception e )
    49          {
    50              log.warn( e );
    51              return;
    52          }
    53          neoServer.getWebServer().addStaticContent( DEFAULT_WEB_ADMIN_STATIC_WEB_CONTENT_LOCATION, DEFAULT_WEB_ADMIN_PATH );
    54          log.info( "Mounted webadmin at [%s]", DEFAULT_WEB_ADMIN_PATH );
    55      }
    56
    57      public void stop()
    58      {
    59          jobScheduler.stopJobs();
    60      }
    61
    62      private void startRoundRobinDB( NeoServerWithEmbeddedWebServer neoServer ) throws MalformedObjectNameException,
    63              IOException
    64      {
    65          Database db = neoServer.getDatabase();
    66          RrdFactory rrdFactory = new RrdFactory( neoServer.getConfiguration() );
    67          RrdDb rrdDb = rrdFactory.createRrdDbAndSampler( db.graph, jobScheduler );
    68          db.setRrdDb( rrdDb );
    69      }
    70  }