http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/MessageBrokerControlMBean.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/MessageBrokerControlMBean.java
 
b/core/src/main/java/flex/management/runtime/messaging/MessageBrokerControlMBean.java
new file mode 100644
index 0000000..7270133
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/MessageBrokerControlMBean.java
@@ -0,0 +1,130 @@
+/*
+ * 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;
+
+import flex.management.BaseControlMBean;
+
+import java.io.IOException;
+import java.util.Date;
+import javax.management.ObjectName;
+
+/**
+ * Defines the runtime monitoring and management interface for managed 
<code>MessageBroker</code>s.
+ */
+public interface MessageBrokerControlMBean extends BaseControlMBean
+{
+    /**
+     * Returns <code>true</code> if the <code>MessageBroker</code> is running.
+     *
+     * @return <code>true</code> if the <code>MessageBroker</code> is running.
+     * @throws IOException Throws IOException.
+     */
+    Boolean isRunning() throws IOException;
+
+    /**
+     * Returns the start timestamp for the <code>MessageBroker</code>.
+     *
+     * @return The start timestamp for the <code>MessageBroker</code>.
+     * @throws IOException Throws IOException.
+     */
+    Date getStartTimestamp() throws IOException;
+
+    /**
+     * Returns the <code>ObjectName</code>s for endpoints that are registered 
with the
+     * managed <code>MessageBroker</code>.
+     *
+     * @return The <code>ObjectName</code>s for endpoints registered with the 
managed <code>MessageBroker</code>.
+     * @throws IOException Throws IOException.
+     */
+    ObjectName[] getEndpoints() throws IOException;
+
+    /**
+     * Returns the <code>ObjectName</code>s for services that are registered 
with the
+     * managed <code>MessageBroker</code>.
+     *
+     * @return The <code>ObjectName</code>s for services registered with the 
managed <code>MessageBroker</code>.
+     * @throws IOException Throws IOException.
+     */
+    ObjectName[] getServices() throws IOException;
+
+    /**
+     * Returns Flex session count for the <code>MessageBroker</code>.
+     *
+     * @return Flex session count for the <code>MessageBroker</code>.
+     * @throws IOException Throws IOException.
+     */
+    Integer getFlexSessionCount() throws IOException;
+
+    /**
+     * Returns the maximum concurrent Flex session count for the
+     * <code>MessageBroker</code> in the current hour.
+     *
+     * @return The maximum concurrent Flex session count for the
+     * <code>MessageBroker</code> over the course of the last hour.
+     * @throws IOException Throws IOException.
+     */
+    Integer getMaxFlexSessionsInCurrentHour() throws IOException;
+
+    /**
+     * Returns the number of Enterprise Connections across all
+     * Enterprise Endpoints.
+     *
+     * @return The number of Enterprise Connections
+     * @throws IOException Throws IOException.
+     */
+    Integer getEnterpriseConnectionCount() throws IOException;
+
+    /**
+     * Returns the total number of bytes passing through all AMF endpoints.
+     *
+     * @return The total number of bytes passing through all AMF endpoints.
+     * @throws IOException Throws IOException.
+     */
+    Long getAMFThroughput() throws IOException;
+
+    /**
+     * Returns the total number of bytes passing through all HTTP endpoints.
+     *
+     * @return The total number of bytes passing through all HTTP endpoints.
+     * @throws IOException Throws IOException.
+     */
+    Long getHTTPThroughput() throws IOException;
+
+    /**
+     * Returns the total number of bytes passing through all Enterprise 
endpoints.
+     *
+     * @return The total number of bytes passing through all Enterprise 
endpoints.
+     * @throws IOException Throws IOException.
+     */
+    Long getEnterpriseThroughput() throws IOException;
+
+    /**
+     * Returns the total number of bytes passing through all streaming AMF 
endpoints.
+     *
+     * @return The total number of bytes passing through all streaming AMF 
endpoints.
+     * @throws IOException Throws IOException.
+     */
+    Long getStreamingAMFThroughput() throws IOException;
+
+    /**
+     * Returns the total number of bytes passing through all streaming HTTP 
endpoints.
+     *
+     * @return The total number of bytes passing through all streaming HTTP 
endpoints.
+     * @throws IOException Throws IOException.
+     */
+    Long getStreamingHTTPThroughput() throws IOException;
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/MessageDestinationControl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/MessageDestinationControl.java
 
b/core/src/main/java/flex/management/runtime/messaging/MessageDestinationControl.java
new file mode 100644
index 0000000..9dc7411
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/MessageDestinationControl.java
@@ -0,0 +1,310 @@
+/*
+ * 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;
+
+import java.util.Date;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import flex.management.BaseControl;
+import flex.management.runtime.AdminConsoleTypes;
+import flex.messaging.Destination;
+
+import javax.management.ObjectName;
+
+/**
+ * The <code>MessageDestinationControl</code> class is the MBean 
implementation for
+ * monitoring and managing a <code>MessageDestination</code> at runtime.
+ */
+public class MessageDestinationControl extends DestinationControl implements
+        MessageDestinationControlMBean
+{
+    private static final String TYPE = "MessageDestination";
+    private ObjectName messageCache;
+    private ObjectName throttleManager;
+    private ObjectName subscriptionManager;
+
+    private AtomicInteger serviceMessageCount = new AtomicInteger(0);
+    private Date lastServiceMessageTimestamp;
+    private long serviceMessageStart;
+    private AtomicInteger serviceCommandCount = new AtomicInteger(0);
+    private Date lastServiceCommandTimestamp;
+    private long serviceCommandStart;
+    private AtomicInteger serviceMessageFromAdapterCount = new 
AtomicInteger(0);
+    private Date lastServiceMessageFromAdapterTimestamp;
+    private long serviceMessageFromAdapterStart;   
+    /**
+     * Constructs a new <code>MessageDestinationControl</code> instance.
+     * 
+     * @param destination The destination managed by this MBean.
+     * @param parent The parent MBean in the management hierarchy.
+     */
+    public MessageDestinationControl(Destination destination, BaseControl 
parent)
+    {
+        super(destination, parent);          
+        serviceMessageStart = System.currentTimeMillis();
+        serviceCommandStart = serviceMessageStart;
+        serviceMessageFromAdapterStart = serviceMessageStart;             
+    }
+    
+    protected void onRegistrationComplete()
+    {
+        String name = this.getObjectName().getCanonicalName();
+        
+        String[] pollablePerInterval = { "ServiceCommandCount", 
"ServiceMessageCount",
+                "ServiceMessageFromAdapterCount" };
+        String[] pollableGeneral = { "ServiceCommandFrequency", 
"ServiceMessageFrequency",
+                "ServiceMessageFromAdapterFrequency", 
"LastServiceCommandTimestamp", 
+                "LastServiceMessageTimestamp", 
"LastServiceMessageFromAdapterTimestamp"};
+        
+        getRegistrar().registerObjects(
+                new int[] {AdminConsoleTypes.DESTINATION_POLLABLE, 
AdminConsoleTypes.GRAPH_BY_POLL_INTERVAL},
+                name, pollablePerInterval);
+        getRegistrar().registerObjects(AdminConsoleTypes.DESTINATION_POLLABLE, 
name,
+                pollableGeneral);
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see flex.management.BaseControlMBean#getType()
+     */
+    public String getType()
+    {
+        return TYPE;
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.MessageDestinationControlMBean#getMessageCache()
+     */
+    public ObjectName getMessageCache()
+    {
+        return messageCache;
+    }
+    
+    /**
+     * Sets the <code>ObjectName</code> for the message cache used by the 
managed destination.
+     * 
+     * @param value The <code>ObjectName</code> for the message cache.
+     */
+    public void setMessageCache(ObjectName value)
+    {
+        messageCache = value;
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.MessageDestinationControlMBean#getThrottleManager()
+     */
+    public ObjectName getThrottleManager()
+    {
+        return throttleManager;
+    }
+    
+    /**
+     * Sets the <code>ObjectName</code> for the throttle manager used by the 
managed destination.
+     * 
+     * @param value The <code>ObjectName</code> for the throttle manager.
+     */
+    public void setThrottleManager(ObjectName value)
+    {
+        throttleManager = value;
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.MessageDestinationControlMBean#getSubscriptionManager()
+     */
+    public ObjectName getSubscriptionManager()
+    {
+        return subscriptionManager;
+    }
+    
+    /**
+     * Sets the <code>ObjectName</code> for the subscription manager used by 
the managed destination.
+     * 
+     * @param value The <code>ObjectName</code> for the subscription manager.
+     */
+    public void setSubscriptionManager(ObjectName value)
+    {
+        subscriptionManager = value;
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.MessageDestinationControlMBean#getServiceMessageCount()
+     */
+    public Integer getServiceMessageCount()
+    {
+        return Integer.valueOf(serviceMessageCount.get());
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.MessageDestinationControlMBean#resetServiceMessageCount()
+     */
+    public void resetServiceMessageCount()
+    {
+        serviceMessageStart = System.currentTimeMillis();
+        serviceMessageCount = new AtomicInteger(0);
+        lastServiceMessageTimestamp = null;
+    }
+    
+    /**
+     * Increments the count of messages serviced.
+     */
+    public void incrementServiceMessageCount()
+    {
+        serviceMessageCount.incrementAndGet();
+        lastServiceMessageTimestamp = new Date();
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.MessageDestinationControlMBean#getLastServiceMessageTimestamp()
+     */
+    public Date getLastServiceMessageTimestamp()
+    {
+        return lastServiceMessageTimestamp;
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.MessageDestinationControlMBean#getServiceMessageFrequency()
+     */
+    public Double getServiceMessageFrequency()
+    {
+        if (serviceMessageCount.get() > 0)
+        {
+            double runtime = differenceInMinutes(serviceMessageStart, 
System.currentTimeMillis());
+            return new Double(serviceMessageCount.get()/runtime);
+        }
+        else
+        {
+            return new Double(0);
+        }
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.MessageDestinationControlMBean#getServiceCommandCount()
+     */
+    public Integer getServiceCommandCount()
+    {        
+        return Integer.valueOf(serviceCommandCount.get());
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.MessageDestinationControlMBean#resetServiceCommandCount()
+     */
+    public void resetServiceCommandCount()
+    {
+        serviceCommandStart = System.currentTimeMillis();
+        serviceCommandCount = new AtomicInteger(0);
+        lastServiceCommandTimestamp = null;
+    }
+    
+    /**
+     * Increments the count of command messages serviced.
+     */
+    public void incrementServiceCommandCount()
+    {
+        serviceCommandCount.incrementAndGet();
+        lastServiceCommandTimestamp = new Date();
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.MessageDestinationControlMBean#getLastServiceCommandTimestamp()
+     */
+    public Date getLastServiceCommandTimestamp()
+    {
+        return lastServiceCommandTimestamp;
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.MessageDestinationControlMBean#getServiceCommandFrequency()
+     */
+    public Double getServiceCommandFrequency()
+    {
+        if (serviceCommandCount.get() > 0)
+        {
+            double runtime = differenceInMinutes(serviceCommandStart, 
System.currentTimeMillis());
+            return new Double(serviceCommandCount.get()/runtime);
+        }
+        else
+        {
+            return new Double(0);
+        }
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.MessageDestinationControlMBean#getServiceMessageFromAdapterCount()
+     */
+    public Integer getServiceMessageFromAdapterCount()
+    {
+        return Integer.valueOf(serviceMessageFromAdapterCount.get());
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.MessageDestinationControlMBean#resetServiceMessageFromAdapterCount()
+     */
+    public void resetServiceMessageFromAdapterCount()
+    {
+        serviceMessageFromAdapterStart = System.currentTimeMillis();
+        serviceMessageFromAdapterCount = new AtomicInteger(0);
+        lastServiceMessageFromAdapterTimestamp = null;
+    }
+    
+    /**
+     * Increments the count of messages from adapters processed.
+     */
+    public void incrementServiceMessageFromAdapterCount()
+    {
+        serviceMessageFromAdapterCount.incrementAndGet();
+        lastServiceMessageFromAdapterTimestamp = new Date();
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.MessageDestinationControlMBean#getLastServiceMessageFromAdapterTimestamp()
+     */
+    public Date getLastServiceMessageFromAdapterTimestamp()
+    {
+        return lastServiceMessageFromAdapterTimestamp;
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.MessageDestinationControlMBean#getServiceMessageFromAdapterFrequency()
+     */
+    public Double getServiceMessageFromAdapterFrequency()
+    {
+        if (serviceMessageFromAdapterCount.get() > 0)
+        {
+            double runtime = 
differenceInMinutes(serviceMessageFromAdapterStart, System.currentTimeMillis());
+            return new Double(serviceMessageFromAdapterCount.get()/runtime);
+        }
+        else
+        {
+            return new Double(0);
+        }
+    }    
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/MessageDestinationControlMBean.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/MessageDestinationControlMBean.java
 
b/core/src/main/java/flex/management/runtime/messaging/MessageDestinationControlMBean.java
new file mode 100644
index 0000000..cbe4492
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/MessageDestinationControlMBean.java
@@ -0,0 +1,153 @@
+/*
+ * 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;
+
+import java.io.IOException;
+import java.util.Date;
+
+import javax.management.ObjectName;
+
+
+/**
+ * Defines the runtime monitoring and management interface for managed
+ * <code>MessageDestination</code>s.
+ */
+public interface MessageDestinationControlMBean extends DestinationControlMBean
+{
+    /**
+     * Returns the <code>ObjectName</code> for the message cache used by the 
managed
+     * destination.
+     *
+     * @return The <code>ObjectName</code> for the message cache.
+     * @throws IOException Throws IOException.
+     */
+    ObjectName getMessageCache() throws IOException;
+
+    /**
+     * Returns the <code>ObjectName</code> for the throttle manager used by the
+     * managed destination.
+     *
+     * @return The <code>ObjectName</code> for the throttle manager.
+     * @throws IOException Throws IOException.
+     */
+    ObjectName getThrottleManager() throws IOException;
+
+    /**
+     * Returns the <code>ObjectName</code> for the subscription manager used
+     * by the managed destination.
+     *
+     * @return The <code>ObjectName</code> for the subscription manager.
+     * @throws IOException Throws IOException.
+     */
+    ObjectName getSubscriptionManager() throws IOException;
+
+    /**
+     * Returns the number of service message invocations.
+     *
+     * @return The number of service message invocations.
+     * @throws IOException Throws IOException.
+     */
+    Integer getServiceMessageCount() throws IOException;
+
+    /**
+     * Resets the count of service message invocations.
+     *
+     * @throws IOException Throws IOException.
+     */
+    void resetServiceMessageCount() throws IOException;
+
+    /**
+     * Returns the timestamp for the most recent service message
+     * invocation.
+     *
+     * @return The timestamp for the most recent service message invocation.
+     * @throws IOException Throws IOException.
+     */
+    Date getLastServiceMessageTimestamp() throws IOException;
+
+    /**
+     * Returns the number of service message invocations per minute.
+     *
+     * @return The number of service message invocations per minute.
+     * @throws IOException Throws IOException.
+     */
+    Double getServiceMessageFrequency() throws IOException;
+
+    /**
+     * Returns the number of service command invocations.
+     *
+     * @return The number of service command invocations.
+     * @throws IOException Throws IOException.
+     */
+    Integer getServiceCommandCount() throws IOException;
+
+    /**
+     * Resets the count of service command invocations.
+     *
+     * @throws IOException Throws IOException.
+     */
+    void resetServiceCommandCount() throws IOException;
+
+    /**
+     * Returns the timestamp for the most recent service command invocation.
+     *
+     * @return The timestamp for the most recent service command invocation.
+     * @throws IOException Throws IOException.
+     */
+    Date getLastServiceCommandTimestamp() throws IOException;
+
+    /**
+     * Returns the number of service command invocations per minute.
+     *
+     * @return The number of service command invocations per minute.
+     * @throws IOException Throws IOException.
+     */
+    Double getServiceCommandFrequency() throws IOException;
+
+    /**
+     * Returns the number of messages from an adapter that the managed service
+     * has processed.
+     *
+     * @return The number of messages from an adapter that the managed service
+     * has processed
+     * @throws IOException Throws IOException.
+     */
+    Integer getServiceMessageFromAdapterCount() throws IOException;
+
+    /**
+     * Resets the count of service message from adapter invocations.
+     *
+     * @throws IOException Throws IOException.
+     */
+    void resetServiceMessageFromAdapterCount() throws IOException;
+
+    /**
+     * Returns the timestamp of the most recent service message from adapter 
invocation.
+     *
+     * @return The timestamp of the most recent service message from adapter 
invocation.
+     * @throws IOException Throws IOException.
+     */
+    Date getLastServiceMessageFromAdapterTimestamp() throws IOException;
+
+    /**
+     * Returns the number of service message from adapter invocations per 
minute.
+     *
+     * @return The number of service message from adapter invocations per 
minute.
+     * @throws IOException Throws IOException.
+     */
+    Double getServiceMessageFromAdapterFrequency() throws IOException;
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/client/FlexClientManagerControl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/client/FlexClientManagerControl.java
 
b/core/src/main/java/flex/management/runtime/messaging/client/FlexClientManagerControl.java
new file mode 100644
index 0000000..273da33
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/client/FlexClientManagerControl.java
@@ -0,0 +1,97 @@
+/*
+ * 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.client;
+
+import flex.management.BaseControl;
+import flex.management.runtime.AdminConsoleTypes;
+import flex.messaging.client.FlexClientManager;
+
+/**
+ *
+ */
+public class FlexClientManagerControl extends BaseControl implements 
FlexClientManagerControlMBean
+{
+    private FlexClientManager flexClientManager;
+    
+    public FlexClientManagerControl(BaseControl parent, FlexClientManager 
manager)
+    {
+        super(parent);        
+        flexClientManager = manager;
+    }
+    
+    public void onRegistrationComplete()
+    {
+        String name = getObjectName().getCanonicalName();
+        getRegistrar().registerObject(AdminConsoleTypes.GENERAL_POLLABLE, 
name, "FlexClientCount");
+    }
+
+    /* (non-Javadoc)
+     * @see flex.management.BaseControl#getId()
+     */
+    public String getId()
+    {
+        return flexClientManager.getId();
+    }
+
+    /* (non-Javadoc)
+     * @see flex.management.BaseControl#getType()
+     */
+    public String getType()
+    {
+        return flexClientManager.getId();
+    }
+
+    /* (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.client.FlexClientManagerControlMBean#getClientIds()
+     */
+    public String[] getClientIds() 
+    {
+        return flexClientManager.getClientIds();
+    }
+
+    /* (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.client.FlexClientManagerControlMBean#getClientLastUse(java.lang.String)
+     */
+    public Long getClientLastUse(String clientId)
+    {
+        return new 
Long(flexClientManager.getFlexClient(clientId).getLastUse());
+    }
+
+    /* (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.client.FlexClientManagerControlMBean#getClientSessionCount(java.lang.String)
+     */
+    public Integer getClientSessionCount(String clientId)
+    {
+        return new 
Integer(flexClientManager.getFlexClient(clientId).getSessionCount());
+    }
+
+    /* (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.client.FlexClientManagerControlMBean#getClientSubscriptionCount(java.lang.String)
+     */
+    public Integer getClientSubscriptionCount(String clientId)
+    {
+        return new 
Integer(flexClientManager.getFlexClient(clientId).getSubscriptionCount());
+    }
+    
+    /* (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.client.FlexClientManagerControlMBean#getFlexClientCount()
+     */
+    public Integer getFlexClientCount() 
+    {
+        return new Integer(flexClientManager.getFlexClientCount());
+    }    
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/client/FlexClientManagerControlMBean.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/client/FlexClientManagerControlMBean.java
 
b/core/src/main/java/flex/management/runtime/messaging/client/FlexClientManagerControlMBean.java
new file mode 100644
index 0000000..f063259
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/client/FlexClientManagerControlMBean.java
@@ -0,0 +1,70 @@
+/*
+ * 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.client;
+
+import java.io.IOException;
+
+import flex.management.BaseControlMBean;
+
+/**
+ * Defines the runtime monitoring and management interface for managed flex 
client managers.
+ */
+public interface FlexClientManagerControlMBean extends BaseControlMBean
+{
+    /**
+     * Returns ids of managed clients.
+     *
+     * @return An array of client ids.
+     * @throws IOException Throws IOException.
+     */
+    String[] getClientIds() throws IOException;
+
+    /**
+     * Returns the number of subscriptions for the client with the clientId.
+     *
+     * @param clientId The client id.
+     * @return The number of subscriptions for the client with the cliendId
+     * @throws IOException Throws IOException.
+     */
+    Integer getClientSubscriptionCount(String clientId) throws IOException;
+
+    /**
+     * Returns the number of sessiosn for the client with the clientId.
+     *
+     * @param clientId The client id.
+     * @return The number of sessions for the client with the cliendId
+     * @throws IOException Throws IOException.
+     */
+    Integer getClientSessionCount(String clientId) throws IOException;
+
+    /**
+     * Returns the last use by the client with the clientId.
+     *
+     * @param clientId The client id.
+     * @return The last use by the client with the clientId
+     * @throws IOException Throws IOException.
+     */
+    Long getClientLastUse(String clientId) throws IOException;
+
+    /**
+     * Returns the number of clients.
+     *
+     * @return The number of clients.
+     * @throws IOException Throws IOException.
+     */
+    Integer getFlexClientCount() throws IOException;
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/client/package-info.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/client/package-info.java 
b/core/src/main/java/flex/management/runtime/messaging/client/package-info.java
new file mode 100644
index 0000000..713b8b3
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/client/package-info.java
@@ -0,0 +1,17 @@
+/*
+ * 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.client;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/AMFEndpointControl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/AMFEndpointControl.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/AMFEndpointControl.java
new file mode 100644
index 0000000..cd224d4
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/AMFEndpointControl.java
@@ -0,0 +1,48 @@
+/*
+ * 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.endpoints;
+
+import flex.management.BaseControl;
+import flex.messaging.endpoints.AMFEndpoint;
+
+/**
+ * The <code>AMFEndpointControl</code> class is the MBean implemenation
+ * for monitoring and managing an <code>AMFEndpoint</code> at runtime.
+ */
+public class AMFEndpointControl extends PollingEndpointControl implements
+        AMFEndpointControlMBean
+{
+    private static final String TYPE = "AMFEndpoint";
+
+    /**
+     * Constructs a <code>AMFEndpointControl</code>, assigning managed message
+     * endpoint and parent MBean.
+     *
+     * @param endpoint The <code>AMFEndpoint</code> managed by this MBean.
+     * @param parent The parent MBean in the management hierarchy.
+     */
+    public AMFEndpointControl(AMFEndpoint endpoint, BaseControl parent)
+    {
+        super(endpoint, parent);
+    }
+
+    /** {@inheritDoc} */
+    public String getType()
+    {
+        return TYPE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/AMFEndpointControlMBean.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/AMFEndpointControlMBean.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/AMFEndpointControlMBean.java
new file mode 100644
index 0000000..22c8cc6
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/AMFEndpointControlMBean.java
@@ -0,0 +1,26 @@
+/*
+ * 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.endpoints;
+
+
+/**
+ * Defines the runtime monitoring and management interface for managed AMF 
endpoints.
+ */
+public interface AMFEndpointControlMBean extends PollingEndpointControlMBean
+{
+    // Empty for now.
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/EndpointControl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/EndpointControl.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/EndpointControl.java
new file mode 100644
index 0000000..f6bbfb6
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/EndpointControl.java
@@ -0,0 +1,239 @@
+/*
+ * 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.endpoints;
+
+import flex.management.BaseControl;
+import flex.management.runtime.AdminConsoleTypes;
+import flex.management.runtime.messaging.MessageBrokerControl;
+import flex.messaging.config.SecurityConstraint;
+import flex.messaging.endpoints.Endpoint;
+
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * The <code>EndpointControl</code> class is the MBean implementation for
+ * monitoring and managing an <code>Endpoint</code> at runtime.
+ */
+public abstract class EndpointControl extends BaseControl implements 
EndpointControlMBean
+{
+    protected Endpoint endpoint;
+    private AtomicInteger serviceMessageCount = new AtomicInteger(0);
+    private Date lastServiceMessageTimestamp;
+    private long serviceMessageStart;
+    private AtomicLong bytesDeserialized = new AtomicLong(0);
+    private AtomicLong bytesSerialized = new AtomicLong(0);
+
+    /**
+     * Constructs an <code>EndpointControl</code>, assigning its managed 
endpoint and
+     * parent MBean.
+     *
+     * @param endpoint The <code>Endpoint</code> managed by this MBean.
+     * @param parent The parent MBean in the management hierarchy.
+     */
+    public EndpointControl(Endpoint endpoint, BaseControl parent)
+    {
+        super(parent);
+        this.endpoint = endpoint;
+        serviceMessageStart = System.currentTimeMillis();
+    }
+
+
+    protected void onRegistrationComplete()
+    {
+        String name = this.getObjectName().getCanonicalName();
+        String[] generalNames = { "SecurityConstraint"};
+        String[] generalPollables = { "ServiceMessageCount", 
"LastServiceMessageTimestamp", "ServiceMessageFrequency"};
+        String[] pollableGraphByInterval = {"BytesDeserialized", 
"BytesSerialized"};
+
+        getRegistrar().registerObjects(AdminConsoleTypes.ENDPOINT_SCALAR,
+                name, generalNames);
+        getRegistrar().registerObjects(AdminConsoleTypes.ENDPOINT_POLLABLE,
+                name, generalPollables);
+        getRegistrar().registerObjects(new int[] 
{AdminConsoleTypes.GRAPH_BY_POLL_INTERVAL, AdminConsoleTypes.ENDPOINT_POLLABLE},
+                name, pollableGraphByInterval);
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see flex.management.BaseControlMBean#getId()
+     */
+    public String getId()
+    {
+        return endpoint.getId();
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see flex.management.runtime.EndpointControlMBean#isRunning()
+     */
+    public Boolean isRunning()
+    {
+        return Boolean.valueOf(endpoint.isStarted());
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see flex.management.runtime.EndpointControlMBean#getStartTimestamp()
+     */
+    public Date getStartTimestamp()
+    {
+        return startTimestamp;
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.EndpointControlMBean#getServiceMessageCount()
+     */
+    public Integer getServiceMessageCount()
+    {
+        return Integer.valueOf(serviceMessageCount.get());
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.EndpointControlMBean#resetServiceMessageCount()
+     */
+    public void resetServiceMessageCount()
+    {
+        serviceMessageStart = System.currentTimeMillis();
+        serviceMessageCount = new AtomicInteger(0);
+        lastServiceMessageTimestamp = null;
+    }
+
+    /**
+     * Increments the count of <code>serviceMessage()</code> invocations by 
the endpoint.
+     */
+    public void incrementServiceMessageCount()
+    {
+        serviceMessageCount.incrementAndGet();
+        lastServiceMessageTimestamp = new Date();
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.EndpointControlMBean#getLastServiceMessageTimestamp()
+     */
+    public Date getLastServiceMessageTimestamp()
+    {
+        return lastServiceMessageTimestamp;
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.EndpointControlMBean#getServiceMessageFrequency()
+     */
+    public Double getServiceMessageFrequency()
+    {
+        if (serviceMessageCount.get() > 0)
+        {
+            double runtime = differenceInMinutes(serviceMessageStart, 
System.currentTimeMillis());
+            return new Double(serviceMessageCount.get()/runtime);
+        }
+        else
+        {
+            return new Double(0);
+        }
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see javax.management.MBeanRegistration#preDeregister()
+     */
+    public void preDeregister() throws Exception
+    {
+        MessageBrokerControl parent = (MessageBrokerControl)getParentControl();
+        parent.removeEndpoint(getObjectName());
+    }
+
+    public String getURI()
+    {
+        return endpoint.getUrl();
+    }
+
+    public String getSecurityConstraint()
+    {
+        return getSecurityConstraintOf(endpoint);
+    }
+
+    public static String getSecurityConstraintOf(Endpoint endpoint)
+    {
+        String result = "None";
+
+        SecurityConstraint constraint = endpoint.getSecurityConstraint();
+        if (constraint != null)
+        {
+            String authMethod = constraint.getMethod();
+            if (authMethod != null)
+            {
+                StringBuffer buffer = new StringBuffer();
+                buffer.append(authMethod);
+
+                List roles = constraint.getRoles();
+                if ((roles != null) && !roles.isEmpty())
+                {
+                    buffer.append(':');
+                    for (int i = 0; i < roles.size(); i++)
+                    {
+                        if (i > 0)
+                        {
+                            buffer.append(',');
+                        }
+                        buffer.append(' ');
+                        buffer.append(roles.get(i));
+                    }
+                }
+                result = buffer.toString();
+            }
+        }
+        return result;
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see flex.management.runtime.EndpointControlMBean#getBytesDeserialized()
+     */
+    public Long getBytesDeserialized(){
+        return Long.valueOf(bytesDeserialized.get());
+    }
+
+    /**
+     * Increments the count of bytes deserialized by the endpoint.
+     * @param currentBytesDeserialized the bytes is deserialized
+     */
+    public void addToBytesDeserialized(int currentBytesDeserialized) {
+        bytesDeserialized.addAndGet(currentBytesDeserialized);
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see flex.management.runtime.EndpointControlMBean#getBytesSerialized()
+     */
+    public Long getBytesSerialized() {
+        return Long.valueOf(bytesSerialized.get());
+    }
+
+    /**
+     * Increments the count of bytes serialized by the endpoint.
+     * @param currentBytesSerialized the bytes is serialized
+     */
+    public void addToBytesSerialized(int currentBytesSerialized) {
+        bytesSerialized.addAndGet(currentBytesSerialized);
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/EndpointControlMBean.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/EndpointControlMBean.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/EndpointControlMBean.java
new file mode 100644
index 0000000..48844a3
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/EndpointControlMBean.java
@@ -0,0 +1,111 @@
+/*
+ * 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.endpoints;
+
+import flex.management.BaseControlMBean;
+
+import java.io.IOException;
+import java.util.Date;
+
+/**
+ * Defines the runtime monitoring and management interface for managed 
endpoints.
+ */
+public interface EndpointControlMBean extends BaseControlMBean
+{
+    /**
+     * Returns <code>true</code> if the <code>Endpoint</code> is running.
+     *
+     * @return <code>true</code> if the <code>Endpoint</code> is running.
+     * @throws IOException Throws IOException.
+     */
+    Boolean isRunning() throws IOException;
+
+    /**
+     * Returns the start timestamp for the <code>Endpoint</code>.
+     *
+     * @return The start timestamp for the <code>Endpoint</code>.
+     * @throws IOException Throws IOException.
+     */
+    Date getStartTimestamp() throws IOException;
+
+    /**
+     * Returns the count of messages decoded by this endpoint and routed to 
the broker.
+     *
+     * @return The count of messages decoded by this endpoint and routed to 
the broker.
+     * @throws IOException Throws IOException.
+     */
+    Integer getServiceMessageCount() throws IOException;
+
+    /**
+     * Resets the count of service message invocations.
+     *
+     * @throws IOException Throws IOException.
+     */
+    void resetServiceMessageCount() throws IOException;
+
+    /**
+     * Returns the timestamp for the most recent message decoded by this 
endpoint and
+     * routed to the broker.
+     *
+     * @return The timestamp for the most recent message decoded by this 
endpoint and
+     * routed to the broker.
+     * @throws IOException Throws IOException.
+     */
+    Date getLastServiceMessageTimestamp() throws IOException;
+
+    /**
+     * Returns the number of service message invocations per minute.
+     *
+     * @return The number of service message invocations per minute.
+     * @throws IOException Throws IOException.
+     */
+    Double getServiceMessageFrequency() throws IOException;
+
+    /**
+     * Returns the URI that corresponds to this endpoint.
+     *
+     * @return The URI that corresponds to this endpoint.
+     * @throws IOException Throws IOException.
+     */
+    String getURI() throws IOException;
+
+    /**
+     * Returns the security constraint that is associated with this endpoint.
+     *
+     * @return The security constraint that is associated with this endpoint.
+     * @throws IOException Throws IOException.
+     */
+    String getSecurityConstraint() throws IOException;
+
+    /**
+     * Returns the total Bytes that have been deserialized by this endpoint
+     * during its lifetime.
+     *
+     * @return total Bytes deserialized.
+     * @throws IOException Throws IOException.
+     */
+    Long getBytesDeserialized() throws IOException;
+
+    /**
+     * Returns the total Bytes that have been serialized by this endpoint
+     * during its lifetime.
+     *
+     * @return total Bytes serialized.
+     * @throws IOException Throws IOException.
+     */
+    Long getBytesSerialized() throws IOException;
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/HTTPEndpointControl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/HTTPEndpointControl.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/HTTPEndpointControl.java
new file mode 100644
index 0000000..e0daf9a
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/HTTPEndpointControl.java
@@ -0,0 +1,48 @@
+/*
+ * 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.endpoints;
+
+import flex.management.BaseControl;
+import flex.messaging.endpoints.HTTPEndpoint;
+
+/**
+ * The <code>HTTPEndpointControl</code> class is the MBean implemenation
+ * for monitoring and managing a <code>HTTPEndpoint</code> at runtime.
+ */
+public class HTTPEndpointControl extends PollingEndpointControl implements
+    HTTPEndpointControlMBean
+{
+    private static final String TYPE = "HTTPEndpoint";
+
+    /**
+     * Constructs a <code>HTTPEndpointControl</code>, assigning managed message
+     * endpoint and parent MBean.
+     *
+     * @param endpoint The <code>HTTPEndpoint</code> managed by this MBean.
+     * @param parent The parent MBean in the management hierarchy.
+     */
+    public HTTPEndpointControl(HTTPEndpoint endpoint, BaseControl parent)
+    {
+        super(endpoint, parent);
+    }
+
+    /** {@inheritDoc} */
+    public String getType()
+    {
+        return TYPE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/HTTPEndpointControlMBean.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/HTTPEndpointControlMBean.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/HTTPEndpointControlMBean.java
new file mode 100644
index 0000000..7d4f8e7
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/HTTPEndpointControlMBean.java
@@ -0,0 +1,25 @@
+/*
+ * 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.endpoints;
+
+/**
+ * Defines the runtime monitoring and management interface for managed HTTP 
endpoints.
+ */
+public interface HTTPEndpointControlMBean extends PollingEndpointControlMBean
+{
+    // Empty for now.
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/PollingEndpointControl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/PollingEndpointControl.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/PollingEndpointControl.java
new file mode 100644
index 0000000..de4db0f
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/PollingEndpointControl.java
@@ -0,0 +1,72 @@
+/*
+ * 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.endpoints;
+
+import flex.management.BaseControl;
+import flex.management.runtime.AdminConsoleTypes;
+import flex.messaging.endpoints.BasePollingHTTPEndpoint;
+
+/**
+ * The <tt>PollingEndpointControl</tt> class is the base MBean implementation
+ * for monitoring and managing a <tt>BasePollingHTTPEndpoint</tt> at runtime.
+ */
+public abstract class PollingEndpointControl extends EndpointControl implements
+        PollingEndpointControlMBean
+{
+    /**
+     * Constructs a <tt>PollingEndpointControl</tt>, assigning managed message
+     * endpoint and parent MBean.
+     *
+     * @param endpoint The <code>BasePollingHTTPEndpoint</code> managed by 
this MBean.
+     * @param parent The parent MBean in the management hierarchy.
+     */
+    public PollingEndpointControl(BasePollingHTTPEndpoint endpoint, 
BaseControl parent)
+    {
+        super(endpoint, parent);
+    }
+
+    protected void onRegistrationComplete()
+    {
+        super.onRegistrationComplete();
+
+        String name = this.getObjectName().getCanonicalName();
+        String[] generalPollables = {"WaitingPollRequestsCount"};
+
+        getRegistrar().registerObjects(AdminConsoleTypes.ENDPOINT_POLLABLE, 
name, generalPollables);
+        getRegistrar().registerObject(AdminConsoleTypes.ENDPOINT_SCALAR, name, 
"MaxWaitingPollRequests");
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.endpoints.PollingEndpointControlMBean#getMaxWaitingPollRequests()
+     */
+    public Integer getMaxWaitingPollRequests()
+    {
+        int maxWaitingPollRequests = 
((BasePollingHTTPEndpoint)endpoint).getMaxWaitingPollRequests();
+        return new Integer(maxWaitingPollRequests);
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.endpoints.PollingEndpointControlMBean#getWaitingPollRequestsCount()
+     */
+    public Integer getWaitingPollRequestsCount()
+    {
+        int waitingPollRequestsCount = 
((BasePollingHTTPEndpoint)endpoint).getWaitingPollRequestsCount();
+        return new Integer(waitingPollRequestsCount);
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/PollingEndpointControlMBean.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/PollingEndpointControlMBean.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/PollingEndpointControlMBean.java
new file mode 100644
index 0000000..2c30b49
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/PollingEndpointControlMBean.java
@@ -0,0 +1,45 @@
+/*
+ * 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.endpoints;
+
+import java.io.IOException;
+
+/**
+ * Defines the runtime monitoring and management interface for managed polling
+ * endpoints.
+ */
+public interface PollingEndpointControlMBean extends EndpointControlMBean
+{
+    /**
+     * Returns the maximum number of server poll response threads that will be
+     * waiting for messages to arrive for clients.
+     *
+     * @return The maximum number of server poll response threads that will be
+     * waiting for messages to arrive for clients.
+     * @throws IOException Throws IOException.
+     */
+    Integer getMaxWaitingPollRequests() throws IOException;
+
+    /**
+     * Returns the number of request threads that are currently in the wait 
state
+     * (including those on their way into or out of it).
+     *
+     * @return The number of request threads that are currently in the wait 
state.
+     * @throws IOException Throws IOException.
+     */
+    Integer getWaitingPollRequestsCount() throws IOException;
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingAMFEndpointControl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingAMFEndpointControl.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingAMFEndpointControl.java
new file mode 100644
index 0000000..00d7022
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingAMFEndpointControl.java
@@ -0,0 +1,48 @@
+/*
+ * 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.endpoints;
+
+import flex.management.BaseControl;
+import flex.messaging.endpoints.StreamingAMFEndpoint;
+
+/**
+ * The <code>StreamingAMFEndpointControl</code> class is the MBean 
implemenation
+ * for monitoring and managing an <code>StreamingAMFEndpoint</code> at runtime.
+ */
+public class StreamingAMFEndpointControl extends StreamingEndpointControl 
implements
+        StreamingAMFEndpointControlMBean
+{
+    private static final String TYPE = "StreamingAMFEndpoint";
+
+    /**
+     * Constructs a <code>StreamingAMFEndpointControl</code>, assigning 
managed message
+     * endpoint and parent MBean.
+     *
+     * @param endpoint The <code>StreamingAMFEndpoint</code> managed by this 
MBean.
+     * @param parent The parent MBean in the management hierarchy.
+     */
+    public StreamingAMFEndpointControl(StreamingAMFEndpoint endpoint, 
BaseControl parent)
+    {
+        super(endpoint, parent);
+    }
+
+    /** {@inheritDoc} */
+    public String getType()
+    {
+        return TYPE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingAMFEndpointControlMBean.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingAMFEndpointControlMBean.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingAMFEndpointControlMBean.java
new file mode 100644
index 0000000..32d05b9
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingAMFEndpointControlMBean.java
@@ -0,0 +1,26 @@
+/*
+ * 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.endpoints;
+
+/**
+ * Defines the runtime monitoring and management interface for managed 
streaming 
+ * AMF endpoints.
+ */
+public interface StreamingAMFEndpointControlMBean extends 
StreamingEndpointControlMBean
+{
+    // Empty for now
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingEndpointControl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingEndpointControl.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingEndpointControl.java
new file mode 100644
index 0000000..b3cdc64
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingEndpointControl.java
@@ -0,0 +1,133 @@
+/*
+ * 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.endpoints;
+
+import java.util.Date;
+
+import flex.management.BaseControl;
+import flex.management.runtime.AdminConsoleTypes;
+import flex.messaging.endpoints.BaseStreamingHTTPEndpoint;
+
+/**
+ * The <code>StreamingEndpointControl</code> class is the base MBean 
implementation
+ * for monitoring and managing a <code>BaseStreamingHTTPEndpoint</code> at 
runtime.
+ */
+public abstract class StreamingEndpointControl extends EndpointControl 
implements
+        StreamingEndpointControlMBean
+{   
+    private int pushCount;
+    private Date lastPushTimeStamp;
+    private long pushStart;
+    
+    /**
+     * Constructs a <code>StreamingEndpointControl</code>, assigning managed 
message 
+     * endpoint and parent MBean.
+     * 
+     * @param endpoint The <code>BaseStreamingHTTPEndpoint</code> managed by 
this MBean.
+     * @param parent The parent MBean in the management hierarchy.
+     */
+    public StreamingEndpointControl(BaseStreamingHTTPEndpoint endpoint, 
BaseControl parent)
+    {
+        super(endpoint, parent);
+    }
+        
+    protected void onRegistrationComplete()
+    {
+        super.onRegistrationComplete();
+        
+        String name = this.getObjectName().getCanonicalName();
+        String[] generalPollables = { "LastPushTimestamp", "PushCount", 
"PushFrequency", "StreamingClientsCount"};
+        
+        getRegistrar().registerObjects(AdminConsoleTypes.ENDPOINT_POLLABLE, 
name, generalPollables);
+        getRegistrar().registerObject(AdminConsoleTypes.ENDPOINT_SCALAR, name, 
"MaxStreamingClients");
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.endpoints.StreamingEndpointControlMBean#getMaxStreamingClients()
+     */
+    public Integer getMaxStreamingClients() 
+    {
+        int maxStreamingClientsCount = 
((BaseStreamingHTTPEndpoint)endpoint).getMaxStreamingClients();
+        return new Integer(maxStreamingClientsCount);
+    }
+
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.endpoints.StreamingEndpointControlMBean#getPushCount()
+     */
+    public Integer getPushCount()
+    {
+        return new Integer(pushCount);
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.endpoints.StreamingEndpointControlMBean#resetPushCount()
+     */
+    public void resetPushCount()
+    {
+        pushStart = System.currentTimeMillis();
+        pushCount = 0;
+        lastPushTimeStamp = null;
+    }
+    
+    /**
+     * Increments the count of messages pushed by the endpoint.
+     */
+    public void incrementPushCount()
+    {
+        ++pushCount;
+        lastPushTimeStamp = new Date();
+    }    
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.endpoints.StreamingEndpointControlMBean#getLastPushTimestamp()
+     */
+    public Date getLastPushTimestamp()
+    {
+        return lastPushTimeStamp;
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.endpoints.StreamingEndpointControlMBean#getPushFrequency()
+     */
+    public Double getPushFrequency()
+    {
+        if (pushCount > 0)
+        {
+            double runtime = differenceInMinutes(pushStart, 
System.currentTimeMillis());
+            return new Double(pushCount/runtime);
+        }
+        else
+        {
+            return new Double(0);
+        }
+    }
+    
+    /*
+     *  (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.endpoints.StreamingEndpointControlMBean#isRunning()
+     */
+    public Integer getStreamingClientsCount()
+    {
+        int streamingClientsCount = 
((BaseStreamingHTTPEndpoint)endpoint).getStreamingClientsCount();
+        return new Integer(streamingClientsCount);
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingEndpointControlMBean.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingEndpointControlMBean.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingEndpointControlMBean.java
new file mode 100644
index 0000000..b8c684e
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingEndpointControlMBean.java
@@ -0,0 +1,76 @@
+/*
+ * 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.endpoints;
+
+import java.io.IOException;
+import java.util.Date;
+
+/**
+ * Defines the runtime monitoring and management interface for managed 
streaming
+ * endpoints.
+ */
+public interface StreamingEndpointControlMBean extends EndpointControlMBean
+{
+    /**
+     * Returns the maximum number of clients that will be allowed to establish
+     * a streaming HTTP connection with the endpoint.
+     *
+     * @return The maximum number of clients that will be allowed to establish
+     * a streaming HTTP connection with the endpoint.
+     * @throws IOException Throws IOException.
+     */
+    Integer getMaxStreamingClients() throws IOException;
+
+    /**
+     * Returns the count of push invocations.
+     *
+     * @return The count of push invocations.
+     * @throws IOException Throws IOException.
+     */
+    Integer getPushCount() throws IOException;
+
+    /**
+     * Resets the count of push invocations.
+     *
+     * @throws IOException Throws IOException.
+     */
+    void resetPushCount() throws IOException;
+
+    /**
+     * Returns the timestamp for the most recent push invocation.
+     *
+     * @return The timestamp for the most recent push invocation.
+     * @throws IOException Throws IOException.
+     */
+    Date getLastPushTimestamp() throws IOException;
+
+    /**
+     * Returns the number of push invocations per minute.
+     *
+     * @return The number of push invocations per minute.
+     * @throws IOException Throws IOException.
+     */
+    Double getPushFrequency() throws IOException;
+
+    /**
+     * Returns the the number of clients that are currently in the streaming 
state.
+     *
+     * @return The number of clients that are currently in the streaming state.
+     * @throws IOException Throws IOException.
+     */
+    Integer getStreamingClientsCount() throws IOException;
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingHTTPEndpointControl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingHTTPEndpointControl.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingHTTPEndpointControl.java
new file mode 100644
index 0000000..a103b95
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingHTTPEndpointControl.java
@@ -0,0 +1,48 @@
+/*
+ * 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.endpoints;
+
+import flex.management.BaseControl;
+import flex.messaging.endpoints.StreamingHTTPEndpoint;
+
+/**
+ * The <code>StreamingHTTPEndpointControl</code> class is the MBean 
implemenation
+ * for monitoring and managing a <code>StreamingHTTPEndpoint</code> at runtime.
+ */
+public class StreamingHTTPEndpointControl extends StreamingEndpointControl 
implements
+    StreamingHTTPEndpointControlMBean
+{
+    private static final String TYPE = "StreamingHTTPEndpoint";
+
+    /**
+     * Constructs a <code>StreamingHTTPEndpointControl</code>, assigning 
managed message
+     * endpoint and parent MBean.
+     *
+     * @param endpoint The <code>StreamingHTTPEndpoint</code> managed by this 
MBean.
+     * @param parent The parent MBean in the management hierarchy.
+     */
+    public StreamingHTTPEndpointControl(StreamingHTTPEndpoint endpoint, 
BaseControl parent)
+    {
+        super(endpoint, parent);
+    }
+
+    /** {@inheritDoc} */
+    public String getType()
+    {
+        return TYPE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingHTTPEndpointControlMBean.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingHTTPEndpointControlMBean.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingHTTPEndpointControlMBean.java
new file mode 100644
index 0000000..f17cb85
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/StreamingHTTPEndpointControlMBean.java
@@ -0,0 +1,26 @@
+/*
+ * 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.endpoints;
+
+/**
+ * Defines the runtime monitoring and management interface for managed 
streaming 
+ * HTTP endpoints.
+ */
+public interface StreamingHTTPEndpointControlMBean extends 
StreamingEndpointControlMBean
+{
+    // Empty for now
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/endpoints/package-info.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/endpoints/package-info.java
 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/package-info.java
new file mode 100644
index 0000000..0936f70
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/endpoints/package-info.java
@@ -0,0 +1,17 @@
+/*
+ * 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.endpoints;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/log/LogControl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/log/LogControl.java 
b/core/src/main/java/flex/management/runtime/messaging/log/LogControl.java
new file mode 100644
index 0000000..d0b5843
--- /dev/null
+++ b/core/src/main/java/flex/management/runtime/messaging/log/LogControl.java
@@ -0,0 +1,147 @@
+/*
+ * 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.log;
+
+import flex.management.BaseControl;
+import flex.messaging.log.AbstractTarget;
+import flex.messaging.log.Log;
+import flex.messaging.log.Target;
+
+/**
+ * The <code>LogControl</code> class is the MBean implemenation
+ * for monitoring and managing a <code>Log</code> at runtime through the 
<code>LogManager</code>.
+ */
+public class LogControl extends BaseControl implements
+        LogControlMBean
+{
+
+    private static final String TYPE = "Log"; // The type registered with the 
mbean server
+    private LogManager logManager; // Reference to the LogManager which 
interfaces with Log
+        
+    
+    /**
+     * Creates the mbean and registers it with the mbean server.
+     * 
+     * @param parent BaseControl
+     * @param manager A reference to the LogManager
+     */
+    public LogControl(BaseControl parent, LogManager manager)
+    {
+        super(parent);
+        this.logManager = manager;
+        register();
+    }
+    
+    
+    /**
+     * Sets the logging level for the target associated with the unique ID 
searchId.
+     * @param searchId the search ID
+     * @param level the log level
+     */
+    public void changeTargetLevel(String searchId, String level)
+    {
+        Target selectedTarget = Log.getTarget(searchId);
+        if (selectedTarget != null)
+        {
+            selectedTarget.setLevel(new Short(level).shortValue());
+        }
+    }
+    
+    /* (non-Javadoc)
+     * @see flex.management.BaseControl#getId()
+     */
+    public String getId()
+    {
+        return logManager.getId();
+    }
+    
+    /* (non-Javadoc)
+     * @see flex.management.BaseControl#getType()
+     */
+    public String getType()
+    {
+        return TYPE;
+    }
+
+    /**
+     * Return a string array of the loggers.
+     * @return a string array of loggers
+     */
+    public String[] getLoggers()
+    {
+        return logManager.getLoggers();
+    }
+
+    /* (non-Javadoc)
+     * @see flex.management.runtime.messaging.log.LogControlMBean#getTargets()
+     */
+    public String[] getTargets()
+    {
+        return logManager.getTargetIds();
+    }
+
+    /* (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.log.LogControlMBean#addFilterForTarget(java.lang.String,
 java.lang.String)
+     */
+    public void addFilterForTarget(String targetId, String filter)
+    {
+        AbstractTarget target = (AbstractTarget) 
logManager.getTarget(targetId);
+        
+        if (target != null && logManager.checkFilter(filter))
+            target.addFilter(filter);
+    }
+
+    /* (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.log.LogControlMBean#getTargetFilters(java.lang.String)
+     */
+    public String[] getTargetFilters(String targetId)
+    {
+        return logManager.getTargetFilters(targetId);
+    }
+
+    /* (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.log.LogControlMBean#removeFilterForTarget(java.lang.String,
 java.lang.String)
+     */
+    public void removeFilterForTarget(String targetId, String filter)
+    {
+        AbstractTarget target = (AbstractTarget) 
logManager.getTarget(targetId);
+        
+        if (target != null && target.containsFilter(filter))
+            target.removeFilter(filter);
+    }
+    
+    /* (non-Javadoc)
+     * @see 
flex.management.runtime.messaging.log.LogControlMBean#getCategories()
+     */
+    public String[] getCategories()
+    {
+        return (String[]) logManager.getCategories().toArray(new String[0]);
+    }
+
+
+    public Integer getTargetLevel(String searchId)
+    {
+        AbstractTarget target = (AbstractTarget) 
logManager.getTarget(searchId);
+        
+        if (target != null)
+        {
+            return new Integer(target.getLevel());
+        } else
+            return new Integer(-1);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/core/src/main/java/flex/management/runtime/messaging/log/LogControlMBean.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/flex/management/runtime/messaging/log/LogControlMBean.java 
b/core/src/main/java/flex/management/runtime/messaging/log/LogControlMBean.java
new file mode 100644
index 0000000..762c895
--- /dev/null
+++ 
b/core/src/main/java/flex/management/runtime/messaging/log/LogControlMBean.java
@@ -0,0 +1,80 @@
+/*
+ * 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.log;
+
+import flex.management.BaseControlMBean;
+
+
+/**
+ * Defines the exposed properties and operations of the LogControl.
+ */
+public interface LogControlMBean extends BaseControlMBean
+{
+    /**
+     * Returns the array of log targets.
+     *
+     * @return The array of log targets.
+     */
+    String[] getTargets();
+
+    /**
+     * Returns the array of log target filters.
+     *
+     * @param targetId The target id.
+     * @return The array of log target filters.
+     */
+    String[] getTargetFilters(String targetId);
+
+    /**
+     * Returns the array of log categories.
+     *
+     * @return The array of log categories.
+     */
+    String[] getCategories();
+
+    /**
+     * Returns the target level.
+     *
+     * @param targetId The target id.
+     * @return The target level.
+     */
+    Integer getTargetLevel(String targetId);
+
+    /**
+     * Changes the target level.
+     *
+     * @param targetId The target id.
+     * @param level The target level.
+     */
+    void changeTargetLevel(String targetId, String level);
+
+    /**
+     * Adds a filter for the target.
+     *
+     * @param filter The filter.
+     * @param targetId The target id.
+     */
+    void addFilterForTarget(String filter, String targetId);
+
+    /**
+     * Removes a filter from the target.
+     *
+     * @param filter The filter.
+     * @param targetId The target id.
+     */
+    void removeFilterForTarget(String filter, String targetId);
+}

Reply via email to