1 /**
2 *
3 * Copyright 2003-2004 The Apache Software Foundation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.geronimo.kernel.proxy;
18
19 import org.apache.geronimo.kernel.management.State;
20
21 /**
22 * Interface provided by proxies generated by the Geronimo proxy managers.
23 * This lets a client call any of these methods on a proxy representing
24 * any Geronimo GBean. However, this should not be used on any arbitrary
25 * GBean reference, as it might not be a proxy generated by Geronimo (for
26 * example, if you're running the GBean in Spring).
27 *
28 * Note that this includes the content of the JSR-77 StateManageable type,
29 * as well as getObjectName from the JSR-77 J2EEManagedObject type.
30 * However, it is not explicitly related to JSR-77 as that is not required
31 * in order to use the Geronimo kernel.
32 *
33 * @version $Rev: 355877 $ $Date: 2005-12-10 18:48:27 -0800 (Sat, 10 Dec 2005) $
34 */
35 public interface GeronimoManagedBean {
36 /**
37 * Gets the unique name of this object. The object name must comply with the ObjectName specification
38 * in the JMX specification and the restrictions in the J2EEManagementInterface.
39 *
40 * @return the unique name of this object within the server
41 */
42 String getObjectName();
43
44 /**
45 * Gets the state of this component as an int.
46 * The int return is required by the JSR77 specification.
47 *
48 * @return the current state of this component
49 * @see #getStateInstance to obtain the State instance
50 */
51 int getState();
52
53 /**
54 * Gets the state of this component as a State instance.
55 *
56 * @return the current state of this component
57 */
58 State getStateInstance();
59
60 /**
61 * Gets the start time of this component
62 *
63 * @return time in milliseonds since epoch that this component was started.
64 */
65 long getStartTime();
66
67
68 /**
69 * Transitions the component to the starting state. This method has access to the
70 * container.
71 * <p/>
72 * Normally a component uses this to cache data from other components. The other components will
73 * have been created at this stage, but not necessairly started and may not be ready to have methods
74 * invoked on them.
75 *
76 * @throws Exception if a problem occurs during the transition
77 * @throws IllegalStateException if this interceptor is not in the stopped or failed state
78 */
79 void start() throws Exception, IllegalStateException;
80
81 /**
82 * Transitions the component to the starting state. This method has access to the
83 * container.
84 * <p/>
85 * If this Component is a Container, then startRecursive is called on all child Components
86 * that are in the STOPPED or FAILED state.
87 * Normally a component uses this to cache data from other components. The other components will
88 * have been created at this stage, but not necessairly started and may not be ready to have methods
89 * invoked on them.
90 *
91 * @throws Exception if a problem occurs during the transition
92 * @throws IllegalStateException if this interceptor is not in the STOPPED or FAILED state
93 */
94 void startRecursive() throws Exception, IllegalStateException;
95
96 /**
97 * Transitions the component to the stopping state. This method has access to the
98 * container.
99 * <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 }