/* | |
* 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 flex.management.runtime.messaging.services.http; | |
import java.util.Date; | |
import flex.management.BaseControl; | |
import flex.management.runtime.AdminConsoleTypes; | |
import flex.management.runtime.messaging.DestinationControl; | |
import flex.messaging.services.http.HTTPProxyDestination; | |
/** | |
* | |
* The <code>HTTPProxyDestinationControl</code> class is the MBean implementation for | |
* monitoring and managing a <code>HTTPProxyDestination</code> at runtime. | |
*/ | |
public class HTTPProxyDestinationControl extends DestinationControl | |
implements HTTPProxyDestinationControlMBean | |
{ | |
private static final String TYPE = "HTTPProxyDestination"; | |
private int invokeSOAPCount = 0; | |
private Date lastInvokeSOAPTimestamp; | |
private long invokeSOAPStart; | |
private int invokeHTTPCount = 0; | |
private Date lastInvokeHTTPTimestamp; | |
private long invokeHTTPStart; | |
/** | |
* Constructs a new <code>HTTPProxyDestinationControl</code> instance. | |
* | |
* @param destination The <code>HTTPProxyDestination</code> managed by this MBean. | |
* @param parent The parent MBean in the management hierarchy. | |
*/ | |
public HTTPProxyDestinationControl(HTTPProxyDestination destination, BaseControl parent) | |
{ | |
super(destination, parent); | |
invokeSOAPStart = System.currentTimeMillis(); | |
invokeHTTPStart = invokeSOAPStart; | |
} | |
/** {@inheritDoc} */ | |
protected void onRegistrationComplete() | |
{ | |
super.onRegistrationComplete(); | |
String name = this.getObjectName().getCanonicalName(); | |
String[] pollablePerInterval = { "InvokeHTTPCount", "InvokeSOAPCount" }; | |
String[] pollableGeneral = { "InvokeHTTPFrequency", "InvokeSOAPFrequency" }; | |
String[] destinationGeneral = { "LastInvokeHTTPTimestamp", "LastInvokeSOAPTimestamp" }; | |
getRegistrar().registerObjects( | |
new int[] {AdminConsoleTypes.DESTINATION_POLLABLE, AdminConsoleTypes.GRAPH_BY_POLL_INTERVAL}, | |
name, pollablePerInterval); | |
getRegistrar().registerObjects(AdminConsoleTypes.DESTINATION_POLLABLE, name, | |
pollableGeneral); | |
getRegistrar().registerObjects(AdminConsoleTypes.DESTINATION_GENERAL, name, | |
destinationGeneral); | |
} | |
/** | |
* | |
* (non-Javadoc) | |
* @see flex.management.runtime.HTTPProxyServiceControlMBean#getInvokeSOAPCount() | |
*/ | |
public Integer getInvokeSOAPCount() | |
{ | |
return new Integer(invokeSOAPCount); | |
} | |
/** | |
* | |
* (non-Javadoc) | |
* @see flex.management.runtime.HTTPProxyServiceControlMBean#resetInvokeSOAPCount() | |
*/ | |
public void resetInvokeSOAPCount() | |
{ | |
invokeSOAPStart = System.currentTimeMillis(); | |
invokeSOAPCount = 0; | |
lastInvokeSOAPTimestamp = null; | |
} | |
/** | |
* Increments the count of Soap invocations. | |
*/ | |
public void incrementInvokeSOAPCount() | |
{ | |
++invokeSOAPCount; | |
lastInvokeSOAPTimestamp = new Date(); | |
} | |
/** | |
* | |
* (non-Javadoc) | |
* @see flex.management.runtime.HTTPProxyServiceControlMBean#getLastInvokeSOAPTimestamp() | |
*/ | |
public Date getLastInvokeSOAPTimestamp() | |
{ | |
return lastInvokeSOAPTimestamp; | |
} | |
/** | |
* | |
* (non-Javadoc) | |
* @see flex.management.runtime.HTTPProxyServiceControlMBean#getInvokeSOAPFrequency() | |
*/ | |
public Double getInvokeSOAPFrequency() | |
{ | |
if (invokeSOAPCount > 0) | |
{ | |
double runtime = differenceInMinutes(invokeSOAPStart, System.currentTimeMillis()); | |
return new Double(invokeSOAPCount/runtime); | |
} | |
else | |
{ | |
return new Double(0); | |
} | |
} | |
/** | |
* | |
* (non-Javadoc) | |
* @see flex.management.runtime.HTTPProxyServiceControlMBean#getInvokeHTTPCount() | |
*/ | |
public Integer getInvokeHTTPCount() | |
{ | |
return new Integer(invokeHTTPCount); | |
} | |
/** | |
* | |
* (non-Javadoc) | |
* @see flex.management.runtime.HTTPProxyServiceControlMBean#resetInvokeHTTPCount() | |
*/ | |
public void resetInvokeHTTPCount() | |
{ | |
invokeHTTPStart = System.currentTimeMillis(); | |
invokeHTTPCount = 0; | |
lastInvokeHTTPTimestamp = null; | |
} | |
/** | |
* Increments the count of HTTP invocations. | |
*/ | |
public void incrementInvokeHTTPCount() | |
{ | |
++invokeHTTPCount; | |
lastInvokeHTTPTimestamp = new Date(); | |
} | |
/** | |
* | |
* (non-Javadoc) | |
* @see flex.management.runtime.HTTPProxyServiceControlMBean#getLastInvokeHTTPTimestamp() | |
*/ | |
public Date getLastInvokeHTTPTimestamp() | |
{ | |
return lastInvokeHTTPTimestamp; | |
} | |
/** | |
* | |
* (non-Javadoc) | |
* @see flex.management.runtime.HTTPProxyServiceControlMBean#getInvokeHTTPFrequency() | |
*/ | |
public Double getInvokeHTTPFrequency() | |
{ | |
if (invokeHTTPCount > 0) | |
{ | |
double runtime = differenceInMinutes(invokeHTTPStart, System.currentTimeMillis()); | |
return new Double(invokeHTTPCount/runtime); | |
} | |
else | |
{ | |
return new Double(0); | |
} | |
} | |
/** | |
* | |
* (non-Javadoc) | |
* @see flex.management.BaseControlMBean#getType() | |
*/ | |
public String getType() | |
{ | |
return TYPE; | |
} | |
} |