KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > mx4j > tools > remote > JMXConnectionHandler


1 /*
2  * Copyright (C) The MX4J Contributors.
3  * All rights reserved.
4  *
5  * This software is distributed under the terms of the MX4J License version 1.0.
6  * See the terms of the MX4J License in the documentation provided with this software.
7  */

8
9 package mx4j.tools.remote;
10
11 import java.io.IOException JavaDoc;
12 import java.util.Set JavaDoc;
13 import javax.management.AttributeList JavaDoc;
14 import javax.management.AttributeNotFoundException JavaDoc;
15 import javax.management.InstanceAlreadyExistsException JavaDoc;
16 import javax.management.InstanceNotFoundException JavaDoc;
17 import javax.management.IntrospectionException JavaDoc;
18 import javax.management.InvalidAttributeValueException JavaDoc;
19 import javax.management.ListenerNotFoundException JavaDoc;
20 import javax.management.MBeanException JavaDoc;
21 import javax.management.MBeanInfo JavaDoc;
22 import javax.management.MBeanRegistrationException JavaDoc;
23 import javax.management.NotCompliantMBeanException JavaDoc;
24 import javax.management.ObjectInstance JavaDoc;
25 import javax.management.ObjectName JavaDoc;
26 import javax.management.ReflectionException JavaDoc;
27 import javax.security.auth.Subject JavaDoc;
28
29 /**
30  * This handler manages the operations related to the connection itself, such as
31  * {@link #close}, {@link #getConnectionId}.
32  * <p/>
33  * It is important that this object is the outermost wrapper of the Connection objects
34  * returned by {@link mx4j.tools.remote.ConnectionManager#connect}
35  *
36  * @version $Revision: 1.3 $
37  */

38 public abstract class JMXConnectionHandler extends AbstractConnection implements JMXConnection
39 {
40    private final JMXConnection connection;
41    private volatile boolean closed;
42
43    public JMXConnectionHandler(JMXConnection connection, ConnectionManager manager, String JavaDoc connectionId)
44    {
45       super(connectionId, manager);
46       this.connection = connection;
47    }
48
49    /**
50     * Overridden to allow nested connections to close and release their resources and, afterwards,
51     * to close this connection with the JSR 160 semantic provided by the superclass.
52     */

53    public void close() throws IOException JavaDoc
54    {
55       if (isClosed()) return;
56       closed = true;
57       getConnection().close();
58       super.close();
59    }
60
61    protected boolean isClosed()
62    {
63       return closed;
64    }
65
66    protected JMXConnection getConnection()
67    {
68       return connection;
69    }
70
71    public ObjectInstance JavaDoc createMBean(String JavaDoc className, ObjectName JavaDoc name, Object JavaDoc params, String JavaDoc[] signature, Subject JavaDoc delegate) throws ReflectionException JavaDoc, InstanceAlreadyExistsException JavaDoc, MBeanRegistrationException JavaDoc, MBeanException JavaDoc, NotCompliantMBeanException JavaDoc, IOException JavaDoc
72    {
73       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
74       return getConnection().createMBean(className, name, params, signature, delegate);
75    }
76
77    public ObjectInstance JavaDoc createMBean(String JavaDoc className, ObjectName JavaDoc name, ObjectName JavaDoc loaderName, Object JavaDoc params, String JavaDoc[] signature, Subject JavaDoc delegate) throws ReflectionException JavaDoc, InstanceAlreadyExistsException JavaDoc, MBeanRegistrationException JavaDoc, MBeanException JavaDoc, NotCompliantMBeanException JavaDoc, InstanceNotFoundException JavaDoc, IOException JavaDoc
78    {
79       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
80       return getConnection().createMBean(className, name, loaderName, params, signature, delegate);
81    }
82
83    public void unregisterMBean(ObjectName JavaDoc name, Subject JavaDoc delegate) throws InstanceNotFoundException JavaDoc, MBeanRegistrationException JavaDoc, IOException JavaDoc
84    {
85       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
86       getConnection().unregisterMBean(name, delegate);
87    }
88
89    public ObjectInstance JavaDoc getObjectInstance(ObjectName JavaDoc name, Subject JavaDoc delegate) throws InstanceNotFoundException JavaDoc, IOException JavaDoc
90    {
91       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
92       return getConnection().getObjectInstance(name, delegate);
93    }
94
95    public Set JavaDoc queryMBeans(ObjectName JavaDoc name, Object JavaDoc query, Subject JavaDoc delegate) throws IOException JavaDoc
96    {
97       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
98       return getConnection().queryMBeans(name, query, delegate);
99    }
100
101    public Set JavaDoc queryNames(ObjectName JavaDoc name, Object JavaDoc query, Subject JavaDoc delegate) throws IOException JavaDoc
102    {
103       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
104       return getConnection().queryNames(name, query, delegate);
105    }
106
107    public boolean isRegistered(ObjectName JavaDoc name, Subject JavaDoc delegate) throws IOException JavaDoc
108    {
109       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
110       return getConnection().isRegistered(name, delegate);
111    }
112
113    public Integer JavaDoc getMBeanCount(Subject JavaDoc delegate) throws IOException JavaDoc
114    {
115       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
116       return getConnection().getMBeanCount(delegate);
117    }
118
119    public Object JavaDoc getAttribute(ObjectName JavaDoc name, String JavaDoc attribute, Subject JavaDoc delegate) throws MBeanException JavaDoc, AttributeNotFoundException JavaDoc, InstanceNotFoundException JavaDoc, ReflectionException JavaDoc, IOException JavaDoc
120    {
121       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
122       return getConnection().getAttribute(name, attribute, delegate);
123    }
124
125    public AttributeList JavaDoc getAttributes(ObjectName JavaDoc name, String JavaDoc[] attributes, Subject JavaDoc delegate) throws InstanceNotFoundException JavaDoc, ReflectionException JavaDoc, IOException JavaDoc
126    {
127       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
128       return getConnection().getAttributes(name, attributes, delegate);
129    }
130
131    public void setAttribute(ObjectName JavaDoc name, Object JavaDoc attribute, Subject JavaDoc delegate) throws InstanceNotFoundException JavaDoc, AttributeNotFoundException JavaDoc, InvalidAttributeValueException JavaDoc, MBeanException JavaDoc, ReflectionException JavaDoc, IOException JavaDoc
132    {
133       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
134       getConnection().setAttribute(name, attribute, delegate);
135    }
136
137    public AttributeList JavaDoc setAttributes(ObjectName JavaDoc name, Object JavaDoc attributes, Subject JavaDoc delegate) throws InstanceNotFoundException JavaDoc, ReflectionException JavaDoc, IOException JavaDoc
138    {
139       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
140       return getConnection().setAttributes(name, attributes, delegate);
141    }
142
143    public Object JavaDoc invoke(ObjectName JavaDoc name, String JavaDoc operationName, Object JavaDoc params, String JavaDoc[] signature, Subject JavaDoc delegate) throws InstanceNotFoundException JavaDoc, MBeanException JavaDoc, ReflectionException JavaDoc, IOException JavaDoc
144    {
145       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
146       return getConnection().invoke(name, operationName, params, signature, delegate);
147    }
148
149    public String JavaDoc getDefaultDomain(Subject JavaDoc delegate) throws IOException JavaDoc
150    {
151       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
152       return getConnection().getDefaultDomain(delegate);
153    }
154
155    public String JavaDoc[] getDomains(Subject JavaDoc delegate) throws IOException JavaDoc
156    {
157       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
158       return getConnection().getDomains(delegate);
159    }
160
161    public MBeanInfo JavaDoc getMBeanInfo(ObjectName JavaDoc name, Subject JavaDoc delegate) throws InstanceNotFoundException JavaDoc, IntrospectionException JavaDoc, ReflectionException JavaDoc, IOException JavaDoc
162    {
163       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
164       return getConnection().getMBeanInfo(name, delegate);
165    }
166
167    public boolean isInstanceOf(ObjectName JavaDoc name, String JavaDoc className, Subject JavaDoc delegate) throws InstanceNotFoundException JavaDoc, IOException JavaDoc
168    {
169       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
170       return getConnection().isInstanceOf(name, className, delegate);
171    }
172
173    public void addNotificationListener(ObjectName JavaDoc name, ObjectName JavaDoc listener, Object JavaDoc filter, Object JavaDoc handback, Subject JavaDoc delegate) throws InstanceNotFoundException JavaDoc, IOException JavaDoc
174    {
175       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
176       getConnection().addNotificationListener(name, listener, filter, handback, delegate);
177    }
178
179    public void removeNotificationListener(ObjectName JavaDoc name, ObjectName JavaDoc listener, Subject JavaDoc delegate) throws InstanceNotFoundException JavaDoc, ListenerNotFoundException JavaDoc, IOException JavaDoc
180    {
181       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
182       getConnection().removeNotificationListener(name, listener, delegate);
183    }
184
185    public void removeNotificationListener(ObjectName JavaDoc name, ObjectName JavaDoc listener, Object JavaDoc filter, Object JavaDoc handback, Subject JavaDoc delegate) throws InstanceNotFoundException JavaDoc, ListenerNotFoundException JavaDoc, IOException JavaDoc
186    {
187       if (isClosed()) throw new IOException JavaDoc("Connection has been closed");
188       getConnection().removeNotificationListener(name, listener, filter, handback, delegate);
189    }
190 }
191
Popular Tags