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  }