KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > tools > ant > taskdefs > optional > jmx > connector > jboss > Connector


1 package org.apache.tools.ant.taskdefs.optional.jmx.connector.jboss;
2
3 /*
4  * ============================================================================
5  * The Apache Software License, Version 1.1
6  * ============================================================================
7  *
8  * Copyright (C) 2000-2002 The Apache Software Foundation. All
9  * rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without modifica-
12  * tion, are permitted provided that the following conditions are met:
13  *
14  * 1. Redistributions of source code must retain the above copyright notice,
15  * this list of conditions and the following disclaimer.
16  *
17  * 2. Redistributions in binary form must reproduce the above copyright notice,
18  * this list of conditions and the following disclaimer in the documentation
19  * and/or other materials provided with the distribution.
20  *
21  * 3. The end-user documentation included with the redistribution, if any, must
22  * include the following acknowledgment: "This product includes software
23  * developed by the Apache Software Foundation (http://www.apache.org/)."
24  * Alternately, this acknowledgment may appear in the software itself, if
25  * and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "Ant" and "Apache Software Foundation" must not be used to
28  * endorse or promote products derived from this software without prior
29  * written permission. For written permission, please contact
30  * apache@apache.org.
31  *
32  * 5. Products derived from this software may not be called "Apache", nor may
33  * "Apache" appear in their name, without prior written permission of the
34  * Apache Software Foundation.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
37  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
38  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
39  * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
40  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
41  * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
42  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
43  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
44  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
45  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
46  *
47  * This software consists of voluntary contributions made by many individuals
48  * on behalf of the Apache Software Foundation. For more information on the
49  * Apache Software Foundation, please see <http://www.apache.org/>.
50  *
51  */

52
53
54 import java.net.InetAddress JavaDoc;
55 import java.net.UnknownHostException JavaDoc;
56 import java.util.Hashtable JavaDoc;
57 import javax.naming.Context JavaDoc;
58 import javax.naming.NamingException JavaDoc;
59 import org.jboss.jmx.adaptor.rmi.RMIAdaptor;
60
61
62
63 /**
64  * JBoss specific implementation of JMXConnector.
65  * Allows Ant-JMX taskdefs to lookup JBoss servers via JNDI
66  * and connect to a MBeanServer via rmi or an alternate
67  * protocol.
68  *
69  * @author <a HREF="mailto:bdueck@yahoo.com">Brian Dueck</a>
70  * @version $Id: Connector.java,v 1.4 2003/05/28 22:28:26 bdueck Exp $
71  */

72 public class Connector extends org.apache.tools.ant.taskdefs.optional.jmx.connector.AbstractJMXConnector {
73     
74     public Connector() {
75     }
76     
77     private static final String JavaDoc DEFAULT_PROTOCOL = "jnp";
78     private static final String JavaDoc DEFAULT_HOST = "localhost";
79     private static final int DEFAULT_PORT = 1099;
80     private static final String JavaDoc DEFAULT_JNDI_NAME= "jmx:localhost:rmi";
81     
82     public Hashtable JavaDoc getInitialContextProperties(Hashtable JavaDoc contextProps) {
83         if (!(contextProps.containsKey(Context.PROVIDER_URL))) {
84             try {
85                 contextProps.put(Context.PROVIDER_URL,DEFAULT_PROTOCOL + "://"+InetAddress.getLocalHost().getHostName()+":"+DEFAULT_PORT);
86             } catch (UnknownHostException JavaDoc eatMe) {
87                 contextProps.put(Context.PROVIDER_URL,DEFAULT_PROTOCOL + "://"+DEFAULT_HOST+":"+DEFAULT_PORT);
88             }
89         }
90         contextProps.put(Context.INITIAL_CONTEXT_FACTORY, org.jnp.interfaces.NamingContextFactory.class.getName());
91         contextProps.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
92         return contextProps;
93     }
94     
95     private String JavaDoc getJndiName(String JavaDoc jndiName) {
96         if ( (jndiName == null) || (jndiName.length() == 0)) {
97             try {
98                 return "jmx:"+InetAddress.getLocalHost().getHostName()+":rmi";
99             } catch (UnknownHostException JavaDoc eatMe) {
100                 return DEFAULT_JNDI_NAME;
101             }
102         }
103         return jndiName;
104     }
105     
106     public javax.management.MBeanServer JavaDoc getMBeanServer(final Context JavaDoc context, String JavaDoc jndiName) throws NamingException JavaDoc, org.apache.tools.ant.BuildException {
107         String JavaDoc actualJndiName = getJndiName(jndiName);
108         
109         Object JavaDoc jndiEntry = context.lookup(actualJndiName);
110
111         if (jndiEntry == null) {
112             throw new NamingException JavaDoc("JNDI entry ["+actualJndiName+"] does not exist. Please check jndiName property.");
113         }
114
115         if (!(jndiEntry instanceof RMIAdaptor)) {
116             throw new NamingException JavaDoc("JNDI entry ["+actualJndiName+"] is incorrect type. Was expecting [RMIAdaptor], found ["+jndiEntry.getClass().getName()+"] Please check jndiName property.");
117         }
118
119         org.jboss.jmx.connector.RemoteMBeanServer server = new org.jboss.jmx.connector.rmi.RMIConnectorImpl((RMIAdaptor)jndiEntry);
120         return new JBossMBeanServer(server);
121
122     }
123        
124 }
125
126 /*
127  * $Log: Connector.java,v $
128  * Revision 1.4 2003/05/28 22:28:26 bdueck
129  * *** empty log message ***
130  *
131  * Revision 1.3 2003/04/21 15:29:41 bdueck
132  * Various changes in preparation for version 1.2.
133  *
134  *
135  */
Popular Tags