blob: ee098882f11d99eaf7fab21c11c537ccca59bae3 [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.qpid.management.web.action;
import java.io.File;
import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.lang.management.RuntimeMXBean;
import java.util.Date;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.qpid.management.Messages;
import org.apache.qpid.management.Names;
import org.apache.qpid.transport.util.Logger;
/**
* This action is the controller responsible to prepare data for the home
* page (System Overview) of QMan admin console.
*
* @author Andrea Gazzarini
*/
public class ConsoleAction extends HttpServlet
{
private static final long serialVersionUID = -2411413147821629363L;
private static final Logger LOGGER = Logger.get(ConsoleAction.class);
private Date _startDate;
/**
* Initializes this controller.
* Simply it computes the start date of the application.
*/
@Override
public void init()
{
_startDate = new Date();
}
/**
* Prepares data for System Overview admin console page and forward that data to that page.
*
* @throws ServletException when this controller is not able to forward to the appropriate view page.
* @throws IOException when this controller is not able to forward to the appropriate view page.
*/
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
ConsoleModel model = new ConsoleModel();
model.setVersion("1.0");
model.setVersionName("Sofia");
model.setStartDate(_startDate);
model.setHost(System.getProperty(Names.ADAPTER_HOST_PROPERTY_NAME, "localhost"));
model.setPort(Integer.parseInt(System.getProperty(Names.ADAPTER_PORT_PROPERTY_NAME, "8080")));
try
{
OperatingSystemMXBean operatingSystem = ManagementFactory.getOperatingSystemMXBean();
model.setOsName(operatingSystem.getName());
model.setProcessors(operatingSystem.getAvailableProcessors());
model.setOsVersion(operatingSystem.getVersion());
model.setArchName(operatingSystem.getArch());
} catch(Exception exception)
{
LOGGER.warn(exception,Messages.QMAN_300006_OS_MBEAN_FAILURE);
model.setOsName("N.A.");
model.setProcessors(null);
model.setOsVersion("N.A.");
model.setArchName("N.A.");
}
try
{
RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
String bootClasspath = runtime.getBootClassPath();
model.setBootClasspath(bootClasspath.split(File.pathSeparator));
String classpath = runtime.getClassPath();
model.setClasspath(classpath.split(File.pathSeparator));
model.setInputArguments(runtime.getInputArguments().toArray(new String[]{}));
} catch(Exception exception)
{
LOGGER.warn(exception,Messages.QMAN_300007_RUNTIME_MBEAN_FAILURE);
}
request.setAttribute("model", model);
RequestDispatcher dispatcher = request.getRequestDispatcher("/console.jsp");
dispatcher.forward(request,response);
}
}