001/* 002 GRANITE DATA SERVICES 003 Copyright (C) 2011 GRANITE DATA SERVICES S.A.S. 004 005 This file is part of Granite Data Services. 006 007 Granite Data Services is free software; you can redistribute it and/or modify 008 it under the terms of the GNU Library General Public License as published by 009 the Free Software Foundation; either version 2 of the License, or (at your 010 option) any later version. 011 012 Granite Data Services is distributed in the hope that it will be useful, but 013 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 014 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License 015 for more details. 016 017 You should have received a copy of the GNU Library General Public License 018 along with this library; if not, see <http://www.gnu.org/licenses/>. 019*/ 020 021package org.granite.gravity; 022 023import org.granite.jmx.MBean; 024import org.granite.jmx.MBeanAttribute; 025import org.granite.jmx.MBeanOperation; 026import org.granite.jmx.MBeanParameter; 027import org.granite.jmx.MBeanOperation.Impact; 028 029/** 030 * @author Franck WOLFF 031 */ 032@MBean(description="MBean used for Gravity operations") 033public interface DefaultGravityMBean { 034 035 /////////////////////////////////////////////////////////////////////////// 036 // Attributes. 037 038 @MBeanAttribute(description="Factory class name used for intantiating Gravity") 039 public String getGravityFactoryName(); 040 041 @MBeanAttribute(description="Amount of time after which an idle channel may be removed") 042 public long getChannelIdleTimeoutMillis(); 043 public void setChannelIdleTimeoutMillis( 044 @MBeanParameter(name="channelIdleTimeoutMillis", description="New channel's idle timeout") 045 long channelIdleTimeoutMillis 046 ); 047 048 @MBeanAttribute(description="Long polling timeout in milliseconds (may not work with all containers)") 049 public long getLongPollingTimeoutMillis(); 050 public void setLongPollingTimeoutMillis( 051 @MBeanParameter(name="longPollingTimeoutMillis", description="New long polling timeout") 052 long longPollingTimeoutMillis 053 ); 054 055 @MBeanAttribute(description="Should unsent messages be kept in the queue on IOExceptions?") 056 public boolean isRetryOnError(); 057 public void setRetryOnError( 058 @MBeanParameter(name="retryOnError", description="New retry on error value") 059 boolean retryOnError 060 ); 061 062 @MBeanAttribute(description="Channel's queue maximum size") 063 public int getMaxMessagesQueuedPerChannel(); 064 public void setMaxMessagesQueuedPerChannel( 065 @MBeanParameter(name="maxMessagesQueuedPerChannel", description="New maximum messages queued value") 066 int maxMessagesQueuedPerChannel 067 ); 068 069 @MBeanAttribute(description="Client advice for reconnection interval") 070 public long getReconnectIntervalMillis(); 071 072 @MBeanAttribute(description="Client advice for reconnection max attempts") 073 public int getReconnectMaxAttempts(); 074 075 @MBeanAttribute(description="Maximum number of channels that may be queued in the Gravity pool") 076 public int getQueueCapacity(); 077 078 @MBeanAttribute(description= 079 "Number of channels that the Gravity pool queue can ideally (in the absence of " + 080 "memory or resource constraints) accept without blocking") 081 public int getQueueRemainingCapacity(); 082 083 @MBeanAttribute(description="Number of channels in the Gravity pool queue waiting for execution") 084 public int getQueueSize(); 085 086 @MBeanAttribute(description="Number of threads to keep in the Gravity pool, even if they are idle") 087 public int getCorePoolSize(); 088 public void setCorePoolSize( 089 @MBeanParameter(name="corePoolSize", description="New core pool size") 090 int corePoolSize 091 ); 092 093 @MBeanAttribute(description="Maximum number of threads to allow in the Gravity pool") 094 public int getMaximumPoolSize(); 095 public void setMaximumPoolSize( 096 @MBeanParameter(name="maximumPoolSize", description="New maximum pool size") 097 int maximumPoolSize 098 ); 099 100 @MBeanAttribute(description= 101 "When the number of threads is greater than the core, this is the maximum " + 102 "time that excess idle threads will wait for new tasks before terminating") 103 public long getKeepAliveTimeMillis(); 104 public void setKeepAliveTimeMillis( 105 @MBeanParameter(name="keepAliveTimeMillis", description="New keep alive time in milliseconds") 106 long keepAliveTimeMillis 107 ); 108 109 @MBeanAttribute(description="Tell if this Gravity has been succefully started") 110 public boolean isStarted(); 111 112 /////////////////////////////////////////////////////////////////////////// 113 // Operations. 114 115 @MBeanOperation(description="Start Gravity", impact=Impact.ACTION) 116 public void start() throws Exception; 117 118 @MBeanOperation(description="Restart Gravity", impact=Impact.ACTION) 119 public void restart() throws Exception; 120 121 @MBeanOperation( 122 description="Attempts to stop all actively executing channels and halts the processing of waiting channels", 123 impact=Impact.ACTION 124 ) 125 public void stop() throws Exception; 126}