001 /** 002 * 003 * Copyright 2003-2004 The Apache Software Foundation 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.geronimo.kernel.proxy; 018 019 import org.apache.geronimo.kernel.management.State; 020 021 /** 022 * Interface provided by proxies generated by the Geronimo proxy managers. 023 * This lets a client call any of these methods on a proxy representing 024 * any Geronimo GBean. However, this should not be used on any arbitrary 025 * GBean reference, as it might not be a proxy generated by Geronimo (for 026 * example, if you're running the GBean in Spring). 027 * 028 * Note that this includes the content of the JSR-77 StateManageable type, 029 * as well as getObjectName from the JSR-77 J2EEManagedObject type. 030 * However, it is not explicitly related to JSR-77 as that is not required 031 * in order to use the Geronimo kernel. 032 * 033 * @version $Rev: 355877 $ $Date: 2005-12-10 18:48:27 -0800 (Sat, 10 Dec 2005) $ 034 */ 035 public interface GeronimoManagedBean { 036 /** 037 * Gets the unique name of this object. The object name must comply with the ObjectName specification 038 * in the JMX specification and the restrictions in the J2EEManagementInterface. 039 * 040 * @return the unique name of this object within the server 041 */ 042 String getObjectName(); 043 044 /** 045 * Gets the state of this component as an int. 046 * The int return is required by the JSR77 specification. 047 * 048 * @return the current state of this component 049 * @see #getStateInstance to obtain the State instance 050 */ 051 int getState(); 052 053 /** 054 * Gets the state of this component as a State instance. 055 * 056 * @return the current state of this component 057 */ 058 State getStateInstance(); 059 060 /** 061 * Gets the start time of this component 062 * 063 * @return time in milliseonds since epoch that this component was started. 064 */ 065 long getStartTime(); 066 067 068 /** 069 * Transitions the component to the starting state. This method has access to the 070 * container. 071 * <p/> 072 * Normally a component uses this to cache data from other components. The other components will 073 * have been created at this stage, but not necessairly started and may not be ready to have methods 074 * invoked on them. 075 * 076 * @throws Exception if a problem occurs during the transition 077 * @throws IllegalStateException if this interceptor is not in the stopped or failed state 078 */ 079 void start() throws Exception, IllegalStateException; 080 081 /** 082 * Transitions the component to the starting state. This method has access to the 083 * container. 084 * <p/> 085 * If this Component is a Container, then startRecursive is called on all child Components 086 * that are in the STOPPED or FAILED state. 087 * Normally a component uses this to cache data from other components. The other components will 088 * have been created at this stage, but not necessairly started and may not be ready to have methods 089 * invoked on them. 090 * 091 * @throws Exception if a problem occurs during the transition 092 * @throws IllegalStateException if this interceptor is not in the STOPPED or FAILED state 093 */ 094 void startRecursive() throws Exception, IllegalStateException; 095 096 /** 097 * Transitions the component to the stopping state. This method has access to the 098 * container. 099 * <p/> 100 * If this is Component is a Container, then all its child components must be in the 101 * STOPPED or FAILED State. 102 * <p/> 103 * Normally a component uses this to drop references to data cached in the start method. 104 * The other components will not necessairly have been stopped at this stage and may not be ready 105 * to have methods invoked on them. 106 * 107 * @throws Exception if a problem occurs during the transition 108 * @throws IllegalStateException if this interceptor is not in the STOPPED or FAILED state 109 */ 110 void stop() throws Exception, IllegalStateException; 111 }